`
steely816
  • 浏览: 127214 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

servlet细节总结

    博客分类:
  • java
阅读更多

1 response.setContentType("text/html");

 

这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8.如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置Content-type实体报头。
一般在Servlet中,习惯性的会首先设置请求以及响应的内容类型以及编码方式:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");

 

2 servlet的三种转发方式

21.response.sendRedirect("url");
22.request.getRequestDispatcher("url").include(request,response);
23.request.getRequestDispatcher("url").forward(request,response);

第一种方法称之为“重定向”,是通过response对象发送给浏览器一个url地址,从sendRedirect的英文意思就能看出。浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。
第二种方法和第三种方法是通过request对象,Dispatch有调度的意思,我将之理解为资源的调度,是通过request对象调度适用的资源来处理业务,并没有使用response对象给浏览器任何应答,所以处理仍然在当前的页面进行,地址栏的地址不会改变。而两种方法的具体区别在于,include和forward。
    include意为包含,即包含url中的内容,进一步理解为,将url中的内容包含进当前的servlet当中来,并用当前servlet的request和respose来执行url中的内容处理业务.所以不会发生页面的跳转,地址栏地址不会发生改变。
    forward意为转发,即将业务交给指定的url执行,但使用的是当前servlet的request和response对象.并没有表示页面的跳转,所以地址栏的地址不会发生改变。

 

3 session

1、如果你是在同一个服务器(容器)里做的转向工作。那么可以这样

request.setAttribute("cha", cha);
改成
request.getSession().setAttribute("cha", cha);

然后
<%Object a = (Object)request.getSession().getAttribute("cha");%>
其他不变。

2、你在Servlet里面这样写:

response.sendRedirect(“a.jsp”);
改成
response.sendRedirect("a.jsp?a=cha");
那么在a.jsp页面上直接
<%=request.getParameter("a")%>
就可以了,不用写<%Object a = (Object)request.getAttribute("cha");%>.

当然用Forward也可以实现。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics