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