文章目录
  1. 1. 1.上一篇blog中的代码
  2. 2. 2.RequestDispatcher:请求转发和请求包含
  3. 3. 3.与sendRedirect( )重定向的区别

1.上一篇blog中的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id=Integer.parseInt(request.getParameter("id"));
if (new problemservice().delProblemById(id)) {
response.sendRedirect("../success.jsp?state=delete");
}
else {
response.sendRedirect("../modifyinfo.jsp");
}
request.setAttribute("name", bieming);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
}

2.RequestDispatcher:请求转发和请求包含

getRequestDispatcher( )属于request的一个方法,上述代码中使用forward进行了请求转发,若是想要请求包含,则改为调用include即可。请求转发和请求包含的区别为:

  • 请求转发:由当前Servlet设置响应头(该Servlet的相应体并不会显示),下一个Servlet既可设置响应头也可设置响应体。
  • 请求包含:当前Servlet和下一个Servlet共同完成相应头和响应体。

3.与sendRedirect( )重定向的区别

  • 请求转发是一次请求一次响应,因为只发出一个请求所以效率高些,而重定向是两次请求两次响应。
  • 请求转发地址栏不变化,而重定向会显示后一个请求的地址。
  • 请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其它Servlet,还能定向到其它项目。
  • 请求转发是服务器端行为,只需各处转发的Servlet路径,而重定向需要给出requestURI。
  • 如果需要在下一个Servlet中获取request域中的数据,那么就必须使用请求转发
文章目录
  1. 1. 1.上一篇blog中的代码
  2. 2. 2.RequestDispatcher:请求转发和请求包含
  3. 3. 3.与sendRedirect( )重定向的区别