servlet redirect/forward/session/cookie 与 HTTP 协议的测试
程序员文章站
2022-07-02 12:57:27
...
本文直接展示servlet的测试结果。
servlet的代码中使用sendRedirect:
public class SessionTest extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... response.sendRedirect("http://localhost:8080/web/"); ...}
查看浏览器交互过程,先是请求该servlet:
-
Request URL:http://localhost:8080/web/SessionTest
-
Request Method:GET
-
Status Code:302 Found
可以看到response返回了302,并带上了location, 指示浏览器做第二次跳转请求,浏览器得到提示后进行第二次请求。
同样的servlet,将代码改为forward,实现了在servlet容器内部的跳转,对浏览器实际上是不可见得。
request.getRequestDispatcher("/index.jsp").forward(request, response);
看一下tomcat服务器的响应,一个200 OK之后,直接返回了内容,很直接
-
Request URL:http://localhost:8080/web/SessionTest
-
Request Method:GET
-
Status Code:200 OK
再看cookie的保存,将以上代码改为将cookie加入response:
Cookie cookie = new Cookie("test","test"); response.addCookie(cookie); PrintWriter out = response.getWriter();
再看HTTP head:
-
Request URL:http://localhost:8080/web/SessionTest
-
Request Method:GET
-
Status Code:200 OK
Tomcat通过HTTP协议的Set-Cookie将servlet的cookie放入了响应头,查看浏览器的cookie,除了jsessionid,又加了一个test/test的cookie进来。