栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaweb会话层面

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaweb会话层面

1.会话概述

用户打开浏览器,点击了很多个url,访问了多个web资源,关闭浏览器,这个过程就是会话

1.1网站怎么证明你来过
  • Cookie服务端会给客户端发一个信件 客户端下次再访问服务端携带信件即可
  • Session服务端对客户端做标记,下次客户端再访问,通过标记即可匹配
1.2Cookie和session区别
  • Cookie把数据写给用户的浏览器保存(可保存多个)
  • Session把数据写给用户自己独有的SessionId
  • Server保存(保存重要的信息,减少Server资源浪费),Session由服务器创建
  • Cookie的构造器只能携带String类型参数,而Session可携带Object类型参数
2.Cookie
//1.传给客户端一个cookie
Cookie cookie = new Cookie("name", "携带参数");
//设置cookie有效期 单位/s
cookie.setMaxAge(600);
resp.addCookie(cookie);

//2.从客户端获取cookie
Cookie[] cookies = req.getCookies();

//3.获取客户端cookie里携带的参数
PrintWriter out = resp.getWriter();
if (cookies != null){
    out.write(cookie.getValue());
}else {
    out.write("cookie 不存在");
}
//需要强制停止cookie时候,只需新建一个实现了servlet的类
//再响应一个setMaxAge为0的cookie到客户端即可
//两个cookie的构造器形参要相同
3.Session

session创建

//获取一个session
HttpSession session = req.getSession();
//session可以携带Object类型
session.setAttribute("name",new JavaBean("李华",29));

//每个session都有自己唯一的sessionID
String id = session.getId();
PrintWriter writer = resp.getWriter();

//通过inNew()判断此session的新旧
if (session.isNew()){
    writer.print("create success!"+id);
}else {
    writer.print("session is already!"+id);
}

获取session

HttpSession session = req.getSession();
session.getAttribute("name");
//把获取的数据响应到前端页面
PrintWriter out = resp.getWriter();
out.print(name)

停止session

//1.手动停止(新建一个类调用invalidate方法)
HttpSession session = req.getSession();
//移除session参数
session.removeAttribute("name");
session.invalidate();
PrintWriter out = resp.getWriter();
out.print("session remove success please refresh");
//2.通过xml

    
    1

4.Filter
  • 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理。
  • 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
  • 应用场景:自动登录,统一设置编码格式,访问权限控制,敏感字符过滤等
4.1统一编码
//一个类实现了Filter且实现它的方法就成了一个过滤器
public class FilterBasic implements Filter {
    @Override
    public void init(FilterConfig filterConfig){
        //会在服务器启动的同时触发
        System.out.println("web server init");
    }

    //主要是对request和response进行一些处理
    //然后交给下一个过滤器或Servlet处理
    @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");
    }
}
//此类需要在web.xml中进行注册
//和标签
//下写需要过滤的路径
5.MVC整体结构

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号