2019-06-20

2019-06-20  本文已影响0人  赌未来_e1e8

Session

session学习:

 问题:用户不同的请求在处理的时候需要使用其他请求中的数据该怎么办?

 解决:使用session技术

使用:  

    HttpSession session = req.getSession();           创建session对象

    session.setAttribute(String name, Object value);       存储数据到session中

   HttpSession session = req.getSession();         获取session对象

  session.getAttribute(String uname);          获取session中的数据

    注意:返回的是Object类型,需要强制转化

  删除session中的数据

session.removeAttribute(String uname);注意:如果有数据则删除,没有则什么都不做

流程:

  1、 浏览器发起请求到Aservlet,在Aservlet中使用req.getSession()获取Session对象,如果此次请求中没有

* SessionID则创建一个新的Session对象,如果有SessionID则将其对应的Session对象返回(前提是该session对象没有到期 )

如果session对象到期销毁了,就算有sessionID也会创建

  2、 校验session是否失效,存储数据到session对象中或者获取session中的数据或者删除session中的数据

特点:

  session解决了同一个用户不同请求的数据共享问题

session的作用域:浏览器不关闭,session不失效,则同一用户的任意请求获取的都是同一个session

    一次会话

session的设置

session默认有效时间为30分钟,可以在tomcat下的web.xml中进行配置

注意:此种配置方式是所有tomcat下的项目默认为30分钟

  也可以在代码中使用

session.setMaxInactiveInterval(int seconds);//设置session的有效时间,参数为整数类型的秒

   session.invalidate(); //强制销毁session对象

ServletContext对象

作用:解决了不同用户之间的数据共享问题

 使用:

 创建ServletContext对象的三种方式

 ServletContext sc1 = this.getServletContext();

ServletContext sc2 = this.getServletConfig().getServletContext();

ServletContext sc3 = req.getSession().getServletContext();

存储用户共享数据    sc.setAttribute(String name, Object value);

获取用户共享数据    sc.getAttribute(String name);

删除共享数据    sc.removeAttribute(String name);

获取web.xml中的全局配置属性

作用:将部分动作和源文件进行解耦,我们只需要在xml配置文件中进行相关配置就会改变代码的执行效果。

sc.getInitParameter(String name);注意返回的是String类型数据

获取webRoot下的资源对象

sc.getResourceAsStream(String path);

注意:

    path为相对路径,写从webRoot开始查找资源的路径即可。

   获取webRoot下的资源绝对路径

    sc.getRealPath(String path);

注意:

path为相对路径,写从webRoot开始查找资源的路径即可。

 特点:

 服务器创建

所有用户共享

生命周期:服务器开启到服务器关闭

上一篇 下一篇

猜你喜欢

热点阅读