//一般方法
response.setStatus(302);
response.setHeader("Location", "/20160314/index.jsp");
//好方法
response.sendRedirect("/20160314/index.jsp");
利用response设置状态码为302,并设置响应头Location为要重定向到的地址,就可以实现请求重定向操作了。 为了方便进行请求重定向操作,response提供了response.sendRedirec("....");实现请求重定向。
在大部分情况下请求重定向和转发的效果是差不多的,这时候我们推荐使用转发,以减少对服务器的访问。 而在某些情况下是需要使用转发的,目的往往是为了改变浏览器地址栏里的地址(如登录成功后转到主页),和更改刷新操作(如加入商品到购物车后转到购物车页面的操作)
response生成响应注意事项
getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。
Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。 Serlvet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎tomcat将调用close方法关闭该输出流对象。