zoukankan      html  css  js  c++  java
  • httpsession

    1、session是由服务器建立的,并保存在服务器上。服务器会为每一个浏览器创建一个session。如果访问的资源中调用了reques.getSession()方法,那就会创建一个HttpSession,并产生一个JSESSIONID。

    2、服务器响应浏览器时,则响应中会包含cookie(set-cookie),cookie的值中会放入JSESSIONID的值

    3、浏览器会将这个cookie放入内存中

    4、浏览器再次请求时,会将这个cookie放在请求头中,给服务器发送请求

    5、服务器会在缓存中查找等于JSESSIONID的session的内容,并发送给浏览器

    场景:

    1、用户登录某系统后,创建了session(这个session中存入了此用户的用户名,并保存在服务器上),并产生了JSESSIONID。同时本地浏览器会保存这个JSESSIONID。

    2、进入某个菜单时需要知道这个用户的用户名,那么这时不需要用户再次输入用户名。当发送请求时在请求头中加入JSESSIONID,服务器会在缓存中查找等于JSESSIONID的session的内容,并发送给浏览器

    测试:

    1、首先创建一个TestServlet,继承自HttpServlet

    public class TestServlet extends HttpServlet{
        public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException {
            HttpSession session=request.getSession();//创建session
            response.setContentType("text/html;charset=utf-8");    
            response.getWriter().write("查看是否有cookie:");
            //判断session是不是新建的
            if(session.isNew()) {
                
                response.getWriter().write("新建session,JSESSIONID="+session.getId());
                session.setAttribute("username1", "admin");//将数据保存到session中
    
            }else {
                response.getWriter().write("session已经存在,JSESSIONID="+session.getId());
                response.getWriter().write((String)session.getAttribute("username1"));        
            }       
        }
    }

    知识点:

    (1)用HttpServletRequest 的getSession()方法获取HttpSession;

    (2)用HttpSession的setAttribute方法设置session

    (3)用HttpSession的getAtrribute方法获取session

    (4)用HttpSession的getId()方法获取session的id

    2、在web.xml中创建TestServlet类所映射的访问路径

    <servlet>
          <servlet-name>testServlet</servlet-name>
          <servlet-class>com.htkeystone.rqi.test.TestServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>testServlet</servlet-name>
          <url-pattern>/SessionServlet</url-pattern>
      </servlet-mapping> 

    3、在浏览器中访问http://localhost:8081/htRQI/SessionServlet ,浏览器输出如下:

    可见,浏览器新建了session。

    4、打开浏览器的session界面,如下图:

    上图中的“内容”就是session的id。

    5、再次访问http://localhost:8081/htRQI/SessionServlet ,浏览器输出如下:

    可见浏览器没有再创建新的session,并且取出了username1所对应的值。

    打开浏览器,按F12打开开发者工具,点击网络,并打开捕获按钮,重新刷一下界面。访问:http://localhost:8081/htRQI/SessionServlet 

    双击对应访问路径这一行,可以看到请求标头中包含了cookie。

  • 相关阅读:
    最短路
    shell中奇怪的s文件状态判断
    诡异的PHPUnit安装
    安装ulipad的一点建议
    有关商业计算机的一点历史——引子
    Axure 不同菜单 页面不同位置
    Axure 选择不同内容, 跳转页面中加载不同内容
    Axure 侧边工具悬浮且位置固定
    Axure 多选和取消多选
    晒晒最近所做项目的总结
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/9104743.html
Copyright © 2011-2022 走看看