1.会话概述
用户打开浏览器,点击了很多个url,访问了多个web资源,关闭浏览器,这个过程就是会话
1.1网站怎么证明你来过
- Cookie服务端会给客户端发一个
信件
客户端下次再访问服务端携带信件
即可
- Session服务端对客户端做标记,下次客户端再访问,通过标记即可匹配
1.2Cookie和session区别
- Cookie把数据写给用户的浏览器保存(可保存多个)
- Session把数据写给用户自己独有的SessionId
- Server保存(保存重要的信息,减少Server资源浪费),Session由服务器创建
- Cookie的构造器只能携带String类型参数,而Session可携带Object类型参数
2.Cookie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Cookie cookie = new Cookie("name", "携带参数");
cookie.setMaxAge(600); resp.addCookie(cookie);
Cookie[] cookies = req.getCookies();
PrintWriter out = resp.getWriter(); if (cookies != null){ out.write(cookie.getValue()); }else { out.write("cookie 不存在"); }
|
3.Session
session创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| HttpSession session = req.getSession();
session.setAttribute("name",new JavaBean("李华",29));
String id = session.getId(); PrintWriter writer = resp.getWriter();
if (session.isNew()){ writer.print("create success!"+id); }else { writer.print("session is already!"+id); }
|
获取session
1 2 3 4 5
| HttpSession session = req.getSession(); session.getAttribute("name");
PrintWriter out = resp.getWriter(); out.print(name)
|
停止session
1 2 3 4 5 6 7
| HttpSession session = req.getSession();
session.removeAttribute("name"); session.invalidate(); PrintWriter out = resp.getWriter(); out.print("<H1>session remove success please refresh</H1>");
|
1 2 3 4 5
| //2.通过xml <session-config> <session-timeout>1</session-timeout> </session-config>
|
4.Filter
- 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理。
- 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
- 应用场景:自动登录,统一设置编码格式,访问权限控制,敏感字符过滤等
4.1统一编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class FilterBasic implements Filter { @Override public void init(FilterConfig filterConfig){ System.out.println("web server init"); }
@Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain fc){ req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); fc.doFilter(req,resp); }
@Override public void destroy() { System.out.println("filter destroyed"); } }
|
5.MVC整体结构