forward的细节
来源:互联网 发布:无限试驾2优化 编辑:程序博客网 时间:2024/06/16 17:34
新建servlet,在mvc开发模式下,需要forward到jsp页面,而在此之前,不能对response响应进行提交,
否则就会抛出异常java.lang.IllegalStateException: Cannot forward after response has been committed,不能进行forward。
public class Demo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "aaa";
Writer writer = response.getWriter();
writer.write(data);
writer.close();
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
上面的例子错误比较明显,针对下面的例子,特别是servlet比较长,就可能会忽略掉。
public class Demo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//满足某个条件时
if(true){
request.getRequestDispatcher("/message1.jsp").forward(request, response);
}
request.getRequestDispatcher("/message2.jsp").forward(request, response);
}
}
解决的方法就是在每次forward之后return,这样下面的代码就不会执行到,避免这个问题!
public class Demo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "aaa";
Writer writer = response.getWriter();
writer.write(data);
request.getRequestDispatcher("/message2.jsp").forward(request, response);
}
}
当如上面所写,则不会出现异常,但是这样写的效果就是,会跳转到jsp页面,但是response所写的数据会被清空,也就是页面上没有呈现出数据。
还有一点就是,写入到HttpServletResponse对象中的响应头字段信息保持有效。
另外:总结一下forward的特点:客户端只有一次请求,服务器端有多个资源调用,也就是多个响应,浏览器地址栏没有变化。
- forward的细节
- forward的细节(1)
- forward的细节(2)
- javaweb之request请求转发forward方法的细节
- 转发细节——forward
- forward与global-forward的区别
- 正向渲染路径细节 Forward Rendering Path Details
- struts的forward
- forward, redirect的区别
- jsp:forward的使用
- AjaxAnywhere的用法(FORWARD)
- YII的forward\redirect
- JSP的forward标签:
- RequestDispatcher的forward方法
- jsp:forward的问题。。。。
- forward
- forward
- forward和redirect的区别
- 葵小钟。的相册-ukulele最靠谱子了~
- iPad横屏(Landscape)尺寸规格说明
- VC6.0中如何彻底删除一个已经添加的类
- 对NAT协议的理解
- java关于反射的粗略小结
- forward的细节
- Java - Framework - Annotation(注解)
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- HDU1997:汉诺塔VII
- hdu 1026
- VC Data Time Picker 控件详解
- 程序员真的不值钱了吗?
- FFT算法在单片机中的使用&&LCD12864驱动 (2011-08-03 09:54:20)
- Java中finally