• 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。

  • 相关阅读:
    C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
    Linq Like
    BS下实现WIN7下Aero效果
    Log4Net使用指南
    Sql 中取小数点后面两位小数.
    微软企业库回滚操作
    C#文件操作
    LinQ To XML——用LinQ查询XML
    Sql Server 字段类型说明
    Blog of the Day:几个中文技术类Blogger Groups
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/9104743.html
Copyright © 2020-2023  润新知