J2EE中RequestDispatcher.forward()和response.sendRedirect()的区别详谈

一、RequestDispatcher.forward()

在服务器端运行。采用采用请求转发,request对象始终存在,不会重新创建,前后页面共享同一个request。重定向后浏览器地址栏URL不变。

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
 response.setContentType("text/html; charset=gb2312");
 ServletContext sc = getServletContext();
 RequestDispatcher rd = null;
 rd = sc.getRequestDispatcher("/index.JSP");
 rd.forward(request, response);
}

 

二、response.sendRedirect()

在用户的浏览器端工作。重新定向,前后页面不共享一个request。重定向后在浏览器地址栏上会出现重定向页面的URL。

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
 response.setContentType("text/html; charset=gb2312");
 response.sendRedirect("/index.JSP");
}

三、注意点

其他一些注意点参看原帖地址的博文。

原帖地址:http://www.cnblogs.com/phpzxh/archive/2010/02/01/1661137.html

时间: 2024-12-03 09:23:39

J2EE中RequestDispatcher.forward()和response.sendRedirect()的区别详谈的相关文章

在servlet中out.flush() 和 response.sendRedirect() 互相影响

问题描述 我的代码为:publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setCharacterEncoding("GBK");PrintWriterout=response.getWriter();if(!validator.equals(in_validateCode)){out.println(&quo

J2EE中input属性disabled和readOnly的区别

disabled--禁用,一旦禁用,表单提交不了它的值. readonly --只读,一旦只读,不能修改,但是可以提交它的值.   当然,asp.net中处理只读控件的问题是不同的 请看博文<asp.net中TextBox设为只读后的取值问题 > http://blog.csdn.net/woshixuye/article/details/7259854  

jsp中页面之间的跳转forward与sendRedirect的区别_JSP编程

页面之间的跳转可以通过两种方式实现:forward和sendRedirect. forward:可以在JSP页面中使用,可以在Servlet中实现. 在JSP页面中使用<jsp:forward page="目标文件"/>,例如要跳转到userlist.jsp,可以写: 复制代码 代码如下: <jsp:forward page="userlist.jsp"/> 在Servlet中使用RequestDispatcher的forward方法,要跳转

JSP中forward()与sendRedirect()的区别

jsp的页面跳转有两种方法:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法. 它们的区别是: RequestDispatcher.forward()方法仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果需要在下一个页面中能从中获 取新的信息的话,可以Request.setAttribute()来放置一些标志,这样从下一个页面中获取.其写法如下: try{

&lt;jsp:forward&gt;、requestDispatcher和sendRedirect()的区别

1.会话信息保存在服务器内存上,可以断续访问,和cookie相比,其保存在服务器上. 2.男人就像蓝牙:只有在你接近时,他才会找上你.当你离开后,他便又去找其他的"设备"了.女人就像Wi-Fi:她能看到周围所有的"设备",但只选择强壮的那个"接入". 3.会话关闭:浏览器关闭,主动关闭,会话超时 4.会话底层实现:cookie和url重写(保存的是sessionID,就是调用response.encodeURL,那么自动加上id) 5.sessi

jsp中forword和sendRedirect的区别

js|redirect|word|区别 1.RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward ()无法重定向至有frame的jsp文件,

J2EE中EL和JSTL结合运用

这里的例子只是简单的Servlet+JSP,没有用到框架,如果用到Struts的话,只要符合Struts中Action标准,或者直接用Struts标签替代就可以了.   ToMainAction public class ToMainAction extends HttpServlet {  private IBoarderDao boardDao = new BoardDaoImpl();  private ITopicDao topicDao = new TopicDaoImpl();  p

J2EE中HTTP method GET/Post is not supported by this URL

  原因: 1,继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法:默认调用父类的doGet或doPost等方法: 2,父类HttpServlet的doGet或doPost等方法覆盖了你重写的doGet或doPost等方法: 不管是1或2,父类HttpServlet的doGet或doPost等方法的默认实现是返回状态代码为405的HTTP错误表示对于指定资源的请求方法不被允许.   解决方法: 1,子类重写doGet或doPost等方法:

j2ee中如何拦截jsp页面?

问题描述 就及我有一个登录,登录成功页及welcome.jsp..但我在地址栏里直接输入welcome.jsp也可以访问,,我如何当地址栏里输入welcome.jsp的时候他自动跳转到login.jsp页面中呢???我听说好像要用getRequestUrl来获取..但不知道怎么弄..请哪们仁兄帮个忙.说详细点.谢谢问题补充:这样不是每次请求都是到login.jsp去了吗??如果用户打开了welcome.jsp,他再次打开的时候不是也是到login.jsp去了..我就是要判断它session中有没