servlet

一.  从客户端传送到Web服务器的数据有两种:显式(即HTTP表单的数据)和隐式(即HTTP请求的报头).

二.  从Web服务器到客户浏览器的数据也有两种:HTTP响应报头和文档.

三.  服务器每次接收到对Servlet的请求,都会产生一个新的线程,调用service方法.service方法检查HTTP请求的类型(get,post,put,delete等)并相应调用doGet,doPost,doPut,doDelete等方法.

四.  GET用来请求页面,包括:用户在地址栏中输入URL;点击Web页面内的链接;提交没有指定method或指定method=”get”的表单时,浏览器都会生成该请求,调用doGet方法.

POST:提交method=”post”表单时,会生成post请求,调用doPost方法.

五.  如果您需要在servlet中等同的处理post和get请求,只需让doGet调用doPost(或相反)即可.

六.  doGet和doPost方法有两个参数:HttpServletRequest和HttpServletResponse

HttpServletRequest: 即与客户请求有关,通过此可以得到所有的输入数据.包括:表单(查询)数据,HTTP请求报头和客户的主机名等.

HttpServletResponse: 即与服务器的相应有关,通过此可以指定相应信息.包括:HTTP状态代码(200,404等),响应报头,最重要等是通过getWriter方法获得PrintWriter,用它可以将文档内容发送给客户.

七.init方法在servlet首次载入时调用,所以一些初始化任务可以放在该方法里,该方法在servlet里只调用一次.servlet一般在用户首次调用对应servlet等URL时创建,但也可以指定servlet在服务器启动时载入.

八.在web.xml的<servlet>元素中有:

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

l         通过向web.xml的<servlet>元素添加<init-param>子元素,可以指定初始化参数的名称和值.

l         在servlet的init方法中,调用getServletConfig.得到ServletConfig对象.

l         以init参数的名称为参数,调用ServletConfig的getInitParameter方法,返回值就是init参数的值或null(没有该参数).

l         HttpServlet extends GenericServlet

重写的init方法即重写GenericServlet中的init方法,在此接口中有两种形式:

public void init()throws ServletException{}

public void init(ServletConfig config)throws ServletException {

this.config = config;

this.init;

log(“init”);

       }

九.中文乱码解决:

   在doGet或doPost方法开头加入下两句:

   request.setCharacterEncoding(“GBK”);

   response.setContentType(“text/html; charset=GBK”);

十:对用户提交的表单数据验证一般为:

   String param = request.getParameter(“someName”);

   If((param == null) || (param.trim.equals(“ “))) {

       ……

   } else {

       ……

   }

   其中trim方法用来移除用户可能输入的任何空格,防止用户只输入空格.

十一:检查数组长度用length,检查String长度用length(),String的charAt(int i)方法用来返回位于第i位置上的字符.

   例:  String s = “Vincent”;

        char c;

        c = s.charAt(2);

   显然字符c为’n’

十二.StringBuffer与String区别:

   StringBuffer为可变长的字符串,用append(String s)方法拼接字符串,String为不可变的,拼接字符串要用+来加上另一个String,这样就增加了额外的内存消耗.

十三.Enumeration e = request.getParameterNames();

   getParameterNames方法用来得到表单中的所有参数名,并将他们全部放入Enumeration对象中(顺序不定),Enumeration有hasMoreElements和nextElement(返回Object类型)方法.

   例:  Enumeration paramNames = request.getParameterNames();

        while(paramNames.hasMoreElements()) {

            String name = (String)paramNames.nextElement();

            String value = request.getParameter(name);

        }

   得到表单参数的另种形式为:  Map map = request.getParameterMap();

   其中,参数名(字符串)是表的键,参数值(字符串数组,与getParameterNames返回值相同)是表的值.

十四.用户提交的表单值是如何封装到JavaBean呢?是通过:

   BeanUtils到populate(Object bean, Map properties)

   bean即为JavaBean对象,properties即为request.getParameterMap()所得的Map对象,从上面知道表单值已经封装到Map对象中.

   通过该方法即可把表单值封装到JavaBean里.

   例:  User user = new User();

        Map map = request.getParameterMap();

        BeanUtils.populate(user,map);

十五.报头Referer存放引用web页面的URL

   例:如果您在web页面A单击指向web页面B的链接,那么,在浏览器请求web页面B时,就会将web页面A的URL引入Referer报头.

   得到报头信息用:request.getHeader(“报头名”);

   即:String referrer = request.getHeader(“referer”);

十六.得到所有报头: Enumeration e = request.getHeaderNames();

   得到客户IP: request.getRemoteAddr();

   得到客户端名: request.getRemoteHost();

 得到URI的实际路径: request.getServletPath();即为URL在主机和端口后的那部分.

十七.response.sendRedirect(String url); 将用户重定向到另一个URL

十八.”状态代码”是用来标明失败或重定向的.

   response.sendError(int code, String message);

   用来返回状态代码与错误信息.

十九.response.setHeader(“refresh”, “5; URL=http://laz.blog.edu.cn”);

   客户在原页面停留5秒后将自动跳转到http://laz.blog.edu.cn

   在JSP页面中等同的设置为:

   在<head>元素中设置  <meta http-equic = ”refresh”

Content = “5; URL=http://laz.blog.edu.cn” />

 

Refresh为报头.记住,服务器对客户浏览器的响应数据为两种:HTTP报头和文档.在发送报头前可对报头内容进行设置.客户浏览器收到设置后到报头,

   response.setHeader(“refresh”, 5); 表每隔5秒刷新一次页面

   对某报头设值: response.setHeader(“报头名”, “值”);

二十.HTTP允许相同报头名多次出现

   setHeader, setIntHeader, setDateHeader 为替换同名已有报头

   addHeader, addIntHeader, addDateHeader 添加报头

二十一.application即为ServletContext对象.

   ServletContext application = getServletContext();

   getServletContext方法为GenericServlet类方法,所以可直接用.

   ServletContext类中有:setAttribute,getAttribute,removeAttribute方法.

二十二.Cookie

   设置Cookie,并保存客户机内存:Cookie cookie = new Cookie(“名”, “值”);

                               response.addCookie(cookie);

   此时客户机内存中将存有该cookie.若客户关闭浏览器,则cookie将消失.

   若要将cookie保存于客户硬盘,并设定保存时间,可以设置为:

   Cookie cookie = new Cookie(“名”, “值”);

你可能感兴趣的:(servlet)