servlet redirect/forward/session/cookie 与 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进来。


 

时间: 2024-09-16 09:19:03

servlet redirect/forward/session/cookie 与 HTTP 协议的测试的相关文章

关于session,cookie,Cache

昨天看了<ASP.NET 页面之间传值的几种方式>之后,对session,cookie,Cache有了更近一步的了解,以下是相关的内容 一.Session 1.Session基本操作 a.创建Session //创建Session public void createSession(string[] arrStr) { //创建数组 string[] str=new string[arrStr.Length]; for (int i = 0; i < arrStr.Length; i++

PHP 之session cookie

cookie和session有什么用?   常见的用法,比如在有些网站下载东西需要会员先登陆.http协议本身是无状态的,无法得知顾客是否已经登陆,怎么办呢?cookie和session就可以知道.再比如网上购物,用户身份认证,程序状态记录.购物车怎么知道顾客挑选过哪些商品呢?cookie和session也可以记录.总而言之,cookie和session就是能够记录顾客状态的技术,尽管二者属于不同的技术,但只要cookie能做到的,session也能做到!如果session和cookie一样安全

javax.servlet.http.HttpSession session用法详解

javax.servlet.http.HttpSession session用法详解 HttpSession类它提供了setAttribute()和getAttribute()方法存储和检索对象. HttpSession提供了一个会话ID关键字,一个参与会话行为的客户端在同一会话的请求中存储 和返回它.servlet引擎查找适当的会话对象,并使之对当前请求可用.HttpServletRequest 接口提供了以下方法来获取HttpSession实例. public HttpSession get

巧解Session cookie

这方法,我自己想的,已经用了1,2年了,希望对有需要的网友有用. 所谓的 session cookie, 就是站台在你登录成功后送上一个 cookie,表示你已经通过验证,但与一般cookie不同的是,他并不会存在你的硬盘上,也就是说: 在你离开浏览器之后,就会消失,也就是意味:下次你重开浏览器,再进此站,此 cookie 已经不见了. 那么,要怎么让这个 cookie 永远有效呢?说永远太久了 我们就来个 50 年不变吧... set win=external.menuArguments s

巧妙破解Session cookie的方法

cookie|session|破解 这方法,我自己想的,已经用了1,2年了,希望对有需要的网友有用. 所谓的 session cookie, 就是站台在你登录成功后送上一个 cookie,表示你已经通过验证,但与一般cookie不同的是,他并不会存在你的硬盘上,也就是说: 在你离开浏览器之后,就会消失,也就是意味:下次你重开浏览器,再进此站,此 cookie 已经不见了. 那么,要怎么让这个 cookie 永远有效呢?说永远太久了 我们就来个 50 年不变吧... set win=externa

PHP创建和使用session cookie变量

<?php // session start session_start(); // 开始一个会话,如果要使用session程序最前面一定要加上这句 $_SESSION['user_id'] = '123′;//给一个session 变量赋值,如果该变量不存在即创建 echo $_SESSION['user_id'];//访问 session变量 $_SESSION = array();//清空所有session变量 session_destroy();//清除会话ID // session e

彻底杜绝PHP的session cookie错误

本文讨论的是如何彻底杜绝warning: Cannot add header information - headers already sent in...... 这种令人莫明其妙的的错误. 只要你写过PHP代码,相信都遇上过这个大多时候都令人莫明其妙的warning吧..今天我们就来搞定它............... 看了PHP手册,回答如下: 消息"Warning: Cannot send session cookie - headers already sent..."或者&

WCF常见问题(1) -- WebService/WCF Session Cookie

原文:WCF常见问题(1) -- WebService/WCF Session Cookie 在.net 3.0推出WCF之前使用的WebService,有的应用有使用Session保持一些信息,在不同的WebMethod中共享存储信息.比如:保持登陆用户的信息等.其原理是应用ASP.NET兼容模式,利用HttpContext来保持请求的上下文. 为了显示WebService/WCF不同应用下的Session/Cookie应用,这里分别创建两个Service应用:一个是WebService Ap

php页面跳转session cookie丢失导致不能登录等问题的解决方法_php实例

thinkphp开发的一个项目,登录成功后又跳转到登录页面,在提交信息后输出session都是正常的,没有问题,但是页面跳转后,session出现丢失现象,无法正常完成登陆. 通过查找资料,发现原来是bom头的原因.受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效.一切依赖COOKIE.SESSION实现的功能全部无效. 正确的处理方法是去掉某些文件的bom,一般情况是在入口文件出现的