HTTP Session

四、Session

  * session实现原理:
       session 的实现依赖于cookie
  * cookie的特点:
       session用于存储一次会话的多次请求数据 存放在服务器端
       session可以存储任意类型,任意大小的数据

   * session和cookie的区别
       1:session存储数据在服务器端 而cookie在客户端
	   2:session没有数据大小限制,而cookie有
       3:session数据安全 cookis相对不安全

1:设置session

//从request中获取session
HttpSession session = request.getSession();

/*
* 客户端浏览器关闭后,默认情况下session会时效,可以利用cookie解决这个问题
* */
Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60 * 60 * 8);//8小时
response.addCookie(cookie);

//session存值
session.setAttribute("msg","你好 sesson");

2:获取session

//从request中获取session
HttpSession session = request.getSession();
//session取值
Object msg = session.getAttribute("msg");

3:sesson时效设置

//修改session时效时间:在web.xml文件中配置 时间单位:分钟
  <session-config>
      <session-timeout>30</session-timeout>
  </session-config>

5、ServletContext

  * ServletContext的主要功能:
       第一:根据文件后缀后去mime类型
       第二:获取文件真实路径

1:获取mime类型

//第一种获取ServletContext 方式
 ServletContext context01 = request.getServletContext();
 //第二种获取ServletContext 方式
 ServletContext context02 = this.getServletContext();

 String fileName = "a.jpg";
 //获取mime类型
 String mimetype = context01.getMimeType(fileName);
 System.out.println(mimetype);

2:获取文件真实路径
在src下创建a.log、在web下创建b.log、在web/WEB-INF下创建c.log

//获取文件真实的服务器路径
String path01 = context01.getRealPath("/b.log");//对应的是web目录下
System.out.println("b = "+path01);

String path02 = context01.getRealPath("/WEB-INF/c.log");//对应的是WEB-INF目录下
System.out.println("c = "+path02);

String path03 = context01.getRealPath("/WEB-INF/classes/c.log");//对应的是src目录下
System.out.println("a = "+path03);

打印结果:

b = E:\work\idea_workspace\mhb-web\out\artifacts\mhb_web_war_exploded\b.log
c = E:\work\idea_workspace\mhb-web\out\artifacts\mhb_web_war_exploded\WEB-INF\c.log
a = E:\work\idea_workspace\mhb-web\out\artifacts\mhb_web_war_exploded\WEB-INF\classes\c.log
posted @ 2020-04-01 15:53  努力的校长  阅读(258)  评论(0编辑  收藏  举报