`
darkjune
  • 浏览: 308519 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • HTTP
阅读更多

 本文直接展示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进来。



 

  • 大小: 39.7 KB
分享到:
评论

相关推荐

    JSP与Servlet复习

    ### JSP与Servlet复习知识点详解 #### 一、JSP与Servlet基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。 - **特点**: JSP页面可以将...

    forward与redirect区别

    2. **数据共享**:forward可以共享原始请求的Request数据,redirect则不能,需要使用Session或Cookie等其他机制传递数据。 3. **范围**:forward仅限于当前Web应用内部,redirect可以跨应用甚至跨服务器。 4. **效率...

    【动力节点Java学院】Servlet视频教程之Session

    在这个动力节点的Java视频教程中,重点讲解了Cookie与Session的使用及其相关概念。 首先,教程简要介绍了Cookie,这是一种在客户端(浏览器)存储数据的技术。每个Cookie都有一个唯一的标识符,用于存储用户信息,...

    servlet2.4doc

    forward(ServletRequest, ServletResponse) - Method in interface javax.servlet.RequestDispatcher Forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server. ...

    forward转发与redirect重定向的区别.zip

    在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的请求处理方式,它们在实现客户端和服务器之间的交互时起到至关重要的作用。了解它们的区别对于优化用户体验和提高应用性能至关重要。 首先,让...

    servlet应用课件

    ### Servlet应用知识点解析 #### 一、选择题解析 **1. 对于ServletRequest接口获取请求参数方法的描述,正确的是:** - **选项分析:** - **a)** 错误,`getParameter` 方法既可以用于接收 POST 请求参数,也...

    web项目答辩

    DIV 开发的优势、页面间参数传递方式、hidden 表单域的作用、JSP 内置对象、Session 和 Application 对象的作用、JSP 动作、Java Servlet API 中 forward 和 redirect 的区别、Class.forName 的作用、分页实现、...

    达内教学课件SERVLET

    3.转发与重定向:`RequestDispatcher`接口提供了`forward()`和`redirect()`方法,前者在服务器端完成,后者在客户端完成。 三、Servlet通信 1. 参数传递:通过请求参数、请求属性和会话属性进行数据传递。 2. ...

    servlet学习笔记

    #### Cookie与Session - **Cookie**:客户端存储的一种小型文本文件,用于保存用户信息,便于后续请求识别同一用户。 - **Session**:服务器端存储的用户会话信息,通过Session ID关联用户请求,保持会话状态。 ##...

    JavaWeb答辩问题.doc

    包括页面间的参数传递、hidden表单域的作用、jsp的内置对象、request和session的作用、jsp动作、servlet API中的forward和redirect、class.forName的作用、分页的实现、cookie被禁止后使用session、项目开发的阶段、...

    Web on Servlet Stack

    ### Web on Servlet Stack #### Spring Web MVC **Introduction** Spring Web MVC是Spring框架的一个核心模块,主要用于构建基于Servlet容器的Web应用程序。它提供了一个灵活、强大的机制来处理HTTP请求,并将其...

    工一说java之SMBMS源码(Servlet版)

    在SMBMS中,Servlet可能会使用请求转发(Request Forward)和重定向(Redirect)两种方式来改变请求的流向。前者在同一服务器内部进行,后者会发送新的HTTP请求到指定URL。 8. **异常处理** 系统中会有统一的异常...

    Java面试题,jsp&servlet面试题

    10. **Servlet API中的forward()和redirect()**: - **forward()**:服务器内部重定向,客户端无感知,效率高,不改变URL。 - **redirect()**:客户端重定向,浏览器收到302响应,重新发起请求,URL可见。 11. **...

    Java-Web简答题.docx

    Servlet 中 forward() 与 redirect() 的区别 Servlet 中有两种页面跳转方式:forward() 和 redirect()。 * forward():一次请求,在容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。 * ...

    jsp基础教程精讲 jsp基础教程精讲

    本教程将深入讲解JSP的基础知识,包括Servlet、会话跟踪、响应与请求对象以及页面元素。 ### 1. Servlet基础 Servlet是Java Web应用中的核心组件,用于处理HTTP请求。在JSP中,Servlet通常被用来处理业务逻辑。要...

    JSP学习总结(多人智慧的结晶)

    #### 一、Servlet基本概念与配置 **Servlet** 是Java平台上的一个重要的技术,它主要用于处理客户端请求并返回响应结果。在Web应用开发中扮演着核心角色。 - **三个核心要素:** 1. **继承HttpServlet类:** ...

    java开始面试的第56天.doc

    - **转发(Forward)**:发生在服务器端,一次HTTP请求就能完成,它将请求从一个Servlet传递到另一个Servlet或者JSP页面,浏览器的URL不会改变。转发在同一个应用内部进行,不能跨应用或服务器。 - **重定向...

    《Java-Web应用开发基础》综合练习3.docx

    13. Forward和Redirect:Forward和Redirect是两种不同的请求转发机制。Forward是服务器端的请求转发,客户端的URL不变;Redirect是客户端的请求转发,客户端的URL会变换。 14. 事件:在JavaScript中,事件是指用户...

    笔试JSP1.doc

    JSP 和 Servlet 相关知识点总结 JSP(Java Server Pages)是一种基于 Java 语言的服务器端脚本语言,用于生成动态网页。Servlet 是一种 Java 类,负责处理来自客户端的请求,生成响应并将其返回给客户端。下面是...

    2023年web面试题一答案.doc

    本文档总结了 Java Web 面试题一的答案,涵盖了 Servlet 生命周期、Servlet 和 CGI 的区别、forward 和 redirect 的区别、JSP 中动态 include 和静态 include 的区别、JSP 的内置对象、JSP 的常用指令、JSP 的动作、...

Global site tag (gtag.js) - Google Analytics