zoukankan      html  css  js  c++  java
  • 每日一记--session/servletContext

    1、Session

      Session就是服务器数据共享技术,能够将一次请求内的不同Servlet的数据共享。

    原理:

      用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的Servlet进行处理。在处理过程中会给用户创建一个session对象,用来存储用户请求处理相关的公共数据,并将session对象的JSESSIONID以Cookie的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求后及后续请求时,请求信息中会附带JSESSIONID,服务器在接收到请求后,调用对应的Servlet进行请求处理,同时根据JSESSIONID返回其对应的session对象。

    作用域:

      一次会话。

    代码:

     1 public class SessionServlet extends HttpServlet {
     2     @Override
     3     protected void service(HttpServletRequest req, HttpServletResponse resp)
     4             throws ServletException, IOException {
     5         //设置请求编码格式
     6         req.setCharacterEncoding("utf-8");
     7         //设置响应编码格式
     8         resp.setContentType("text/html;charset=utf-8");
     9         //获取请求信息
    10             String name="随机";
    11         //处理请求信息
    12             //创建session对象
    13             HttpSession hs=req.getSession();
    14             //设置session的存储时间
    15                 //hs.setMaxInactiveInterval(5);
    16             System.out.println(hs.getId());
    17             //设置session强制失效
    18                 //hs.invalidate();
    19             //存储数据
    20                 hs.setAttribute("name",name);
    21     }
    22 }

    2、ServletContext

      针对不同用户之间的数据共享问题。

    原理:

      ServletContext对象由服务器进行创建,一个项目只有一个对象。不管在项目的任意位置进行获取得到的都是同一个对象,该对象由所有的用户共同拥有。

    生命周期:

      服务器启动到服务器关闭。

    代码:

     1 public class ServletContextServlet extends HttpServlet {
     2     @Override
     3     protected void service(HttpServletRequest req, HttpServletResponse resp)
     4             throws ServletException, IOException {
     5         //获取ServletContext对象
     6             //第一种方式:
     7             ServletContext sc=this.getServletContext();
     8             //第二种方式:
     9             ServletContext sc2=this.getServletConfig().getServletContext();
    10             //第三种方式:
    11             ServletContext sc3=req.getSession().getServletContext();
    12             System.out.println(sc==sc2);
    13             System.out.println(sc==sc3);
    14         //使用ServletContext对象完成数据共享
    15             //数据存储
    16             sc.setAttribute("str", "ServletContext对象学习");
    17         //获取项目web.xml的全局配置数据
    18             String str = sc.getInitParameter("name2");
    19             System.out.println("全局配置参数:"+str);
    20         //获取项目根目录下的资源的绝对路径
    21             //String path="D:\apache-tomcat-7.0.56\webapps\sc\doc\1.txt";
    22             String path=sc.getRealPath("/doc/1.txt");
    23             System.out.println(path);
    24         //获取项目根目录下资源的流对象
    25             InputStream is = sc.getResourceAsStream("/doc/1.txt");
    26     
    27     }
    28 }

    关于怎么在XML进行ServletContext的配置:

    1   <servlet>
    2     <init-param>
    3         <param-name>config</param-name>
    4         <param-value>utf-8</param-value>
    5     </init-param>
    6   </servlet>
  • 相关阅读:
    他山之石____集合框架__【List,Set,Map之间的区别】
    集合框架__【泛型】
    集合框架__【Set集合】【HashSet】【TreeSet】
    模式串匹配,KMP算法——HDU1686
    模式串匹配,KMP算法——HDU1711
    网络最大流——POJ
    网络最大流——HDU
    拓扑排序——CodeForces-645D
    二分图染色,二分图匹配——HDU
    二分图匹配,最小点覆盖——POJ
  • 原文地址:https://www.cnblogs.com/ZNwithLC/p/9532125.html
Copyright © 2011-2022 走看看