response:
有关于对客户端请求之响应,可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.
request:
有关于客户端请求的信息,都可以由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。
response:
属于重定向请求;
其地址栏的URL会改变;
会向服务器发送两次请求;
sendRedirect用法:
response.sendRedirect("跳转页面路径或需要执行的操作路径");
不保持request中设置属性,也就是说会产生一个新的request。跳转到得页面刷新仍然是当前页面。
sendRedirect用法:
response.sendRedirect("hello.jsp") 是在响应后转向
request:
属于请求转发;
其地址栏的URL不会改变;
向服务器发送一次请求;
forward用法:
RequestDispatcher view = request.getRequestDispatcher("跳转页面路径或需要执行的操作路径");
view.forward(request, response);
也可以写成:
request.getRequestDispatcher("跳转页面路径或需要执行的操作路径").forward(request, response);
保持request中设置的属性,跳转页面后刷新会重新执行操作。
例如:
index.html ->(submit 数据) -> http://......../submit.do
submit.do 对应的 Servlet 为 submit.java. 其中包含下列片段的两种情况:
1. response.sendRedirect("hello.html") . 浏览器会指向hello.html,并且地址栏是http://...../hello.html
2. RequestDispatcher view = request.getRequestDispatcher("hello.html");
view.forward(request, response);
浏览器会指向hello.html, 但是地址栏仍然是http://...../submit.do
RequestDispatcher rd = request.getRequestDispatcher(URL);
request.setAttribute("str",str);
rd.forward(request,response);
是响应前转向,可以把参数带过去,你也可以在这里设置request.setAttribute("str",str);