response.sendRedirect 与 request.getRequestDispatcher(url).forward(request,response)区别
服务器端进行转向的4种方法:
1. ServletContext的getRequestDispatcher()
2. ServletContext的getNamedDispatcher()
3. ServletRequest的getRequestDispatcher()
4. ServletResponse的sendRedirect()进行转向。
1.2.3 功能大于等于 forward() 重导功能
4. sendRedirect()
使用forward方法,因为这些这样比较高效。只有在forward方法不能使用时(比如要转向到一个非本web应用),再使用ServletResponse的sendRedirect()方法。
<jsp:fordward>与 sendRedirect 方法的比较
虽然 <jsp:fordward>与 sendRedirect 方法,都可以将浏览器浏览的网页,重导至另一个网页,但是两者在原理上是不太相同。
a. <jsp:fordward> : 动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果。
优点: 两网页间可以分享 request 对象内的变量。
b. sendRedirect : 动作是透过 HTTP 协议的 Header , 对浏览器下达重导指令,因此,不牵涉到服务器端缓冲区的问题。
不过由于 sendRedirect 方法作用于客户端,所以重导前后网页无法分享存在于 request 对象内的变量。
Solution: response.sendRedirect(“test.jsp?key=view”)
今天才搞清楚这个原理,ServletResponse就是在客户端响应返回数据,在这里ServletResponse不保留,request.setAttribute()的属性,如果用response.sendRedirect重导话,一些数据最好绑定到session里,数据一多,服务器吃不消,建议用ServletRequest来重导。
分享到:
相关推荐
servlet线程安全问题servlet线程安全问题
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
servlet输出JS乱码问题
Tomcat开发JSP和Servlet需要注意的问题.doc
Servlet详解 Servlet详解 Servlet详解
servlet apiservlet apiservlet apiservlet api
解决找不到javax.servlet.*等问题servlet jar包,放在项目里直接Build Path即可使用。
刚刚接触java时做的日志管理系统,做的很简单,适合初学着 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet...
包含Servlert的基本介绍,并且有导入IDEA2018中的jar包与其导入jar包的步骤
servlet基础与servlet容器模型
Servlet + Tomcat 中文乱码的解决方法,浏览器把Unicode字符转换为GBK字符,这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了
struts2和servlet的共存问题
JSP Servlet 汉字编码问题 乱码解决方法
jsp,servlet编码问题
SERVLET
jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析
servlet入门很好用的servlet入门
用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。 像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...
Jsp和Servlet中文乱码问题
Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....