servlet redirect/forward/session/cookie 与 HTTP 协议的测试

简介:  本文直接展示servlet的测试结果。   servlet的代码中使用sendRedirect:    public class SessionTest extends HttpServlet { protected void...

 本文直接展示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:

 

  1. Request URL:
    http://localhost:8080/web/SessionTest
  2. Request Method:
    GET
  3. Status Code:
    302 Found
  4. Request Headersview source
    1. Accept:
      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    2. Accept-Encoding:
      gzip,deflate,sdch
    3. Accept-Language:
      en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
    4. Cache-Control:
      max-age=0
    5. Connection:
      keep-alive
    6. Host:
      localhost:8080
    7. User-Agent:
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
  5. Response Headersview source
    1. Content-Length:
      0
    2. Content-Type:
      text/html;charset=UTF-8
    3. Date:
      Thu, 06 Jun 2013 07:16:55 GMT
    4. Location:
      http://localhost:8080/web/
    5. Server:
      Apache-Coyote/1.1
    6. Set-Cookie:
      JSESSIONID=8C8DCD7355CC62C75C9BD154B2ADEDD0; Path=/web/; HttpOnly

可以看到response返回了302,并带上了location, 指示浏览器做第二次跳转请求,浏览器得到提示后进行第二次请求。

 

同样的servlet,将代码改为forward,实现了在servlet容器内部的跳转,对浏览器实际上是不可见得。

 

request.getRequestDispatcher("/index.jsp").forward(request, response);

 

看一下tomcat服务器的响应,一个200  OK之后,直接返回了内容,很直接

  1. Request URL:
    http://localhost:8080/web/SessionTest
  2. Request Method:
    GET
  3. Status Code:
    200 OK
  4. Request Headersview source
    1. Accept:
      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    2. Accept-Encoding:
      gzip,deflate,sdch
    3. Accept-Language:
      en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
    4. Connection:
      keep-alive
    5. Cookie:
      JSESSIONID=4D4C34D45462707E53A475C060E2D2A2; test=test
    6. DNT:
      1
    7. Host:
      localhost:8080
    8. User-Agent:
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
  5. Response Headersview source
    1. Content-Length:
      218
    2. Content-Type:
      text/html;charset=UTF-8
    3. Date:
      Thu, 06 Jun 2013 09:12:04 GMT
    4. Server:
      Apache-Coyote/1.1
    5. Set-Cookie:
      JSESSIONID=0FE64A4D2D1777BD44F08F2F8186384B; Path=/web/; HttpOnly

 

再看cookie的保存,将以上代码改为将cookie加入response:

 

        Cookie cookie = new Cookie("test","test");
        response.addCookie(cookie);
        PrintWriter out = response.getWriter();

 

 

再看HTTP head:

 

 

  1. Request URL:
    http://localhost:8080/web/SessionTest
  2. Request Method:
    GET
  3. Status Code:
    200 OK
  4. Request Headersview source
    1. Accept:
      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    2. Accept-Encoding:
      gzip,deflate,sdch
    3. Accept-Language:
      en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
    4. Cache-Control:
      max-age=0
    5. Connection:
      keep-alive
    6. Cookie:
      JSESSIONID=FB43328EF48C78B7122454F84B57F164
    7. DNT:
      1
    8. Host:
      localhost:8080
    9. User-Agent:
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
  5. Response Headersview source
    1. Content-Length:
      186
    2. Content-Type:
      text/html;charset=UTF-8
    3. Date:
      Thu, 06 Jun 2013 07:47:13 GMT
    4. Server:
      Apache-Coyote/1.1
    5. Set-Cookie:
      JSESSIONID=BC3FDA2D942F2F4B50757D9C436D21A9; Path=/web/; HttpOnly
    6. Set-Cookie:
      test=test

Tomcat通过HTTP协议的Set-Cookie将servlet的cookie放入了响应头,查看浏览器的cookie,除了jsessionid,又加了一个test/test的cookie进来。



 

目录
相关文章
|
28天前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
68 7
|
21天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
146 10
|
29天前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
72 3
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
49 13
|
1月前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
1月前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
1月前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
1月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密