Java学习知识点小结15(Cookie,Session,Filter)

Cookie
🍪(1)Cookie是servlet服务器发送给Web浏览器的少量信息(不超过4KB)
🍪(2)cookie值可以唯一标识客户端。
🍪(3)一个cookie有一个name,一个value,和一些可选属性

🍪(4)Cookie的创建:

 Cookie cookie=new Cookie("key1","value1");
  response.addCookie(cookie);

在这里插入图片描述
🍪(5)服务器获取Cookie

Cookie[] cookies=request.getCookies();

再利用for each循环输入key值寻找对应的Cookie

🍪(6)修改Cookie的值
通过Cookie的key,使用foreach循环找到需要修改的Cookie,使用setValue()方法赋予新值。
cookie的value值不能是特殊字符与中文,如果需要中文,需要使用base64编码

🍪(7)Google浏览器的Cookie查看(F12)
在这里插入图片描述

🍪(8)设置Cookie最大生存时间(秒)
setMaxAge(int expiry)
expiry正值表示在经过该值的数秒后cookie过期
负值表示cookie不会被持久存储,将在Web浏览器退出时删除 (默认值就为-1)
零值表示马上删除该cookie

🍪(9)cookie的Path属性
Path属性通过请求地址进行过滤
cookie能让其path路径下的页面访问


Session
📢(1)Session是一个接口
📢(2)Session就是会话,用来维护一个客户端和服务器之间关联的一种技术
📢(3)每个客户端有自己的一个Session会话
📢(4)常用来保存用户登录后的信息

📢(5)Session的创建与获取

HttpSession session=request.getSession();

第一次调用是创建Session会话
之后每一次调用都是获取前面创建好的Session会话对象

📢(6)isNew() 方法判断Session是否是刚创建出来的

boolean isNew=session.isNew();

true表示刚创建
false表示该session是之前创建的

📢(7)每个会话有个一个唯一ID
getId()得到Session的会话id值

📢(8)Session域数据的存取

request.getSession().setAttribute("key","value");//存数据
Object value=request.getSession().getAttribute("key");//取数据

📢(9)设置Session的超时时间 (超时指的是客户端两次请求的最大间隔时长)

session.setMaxInactiveInterval(int interval);//两次请求超过指定间隔时长则销毁,以秒为单位
session.getMaxInactiveInterval();//获取超时时间,默认时长为30min,可以在web.xml内配置Session默认时长

📢(10)Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的


Filter 过滤器
⚗1.JavaWeb三大组件
⚗2.Filter是个接口
⚗3.Filter过滤器作用是拦截请求,过滤响应

⚗4.拦截请求的常见应用场景:
(1)权限检查
(2)日记操作
(3)事务管理

⚗5.原理图解
在这里插入图片描述
⚗6.使用步骤:
(1)在web工程下的admin目录,这个目录下的资源必须是用户登陆后才允许访问
(2)编写一个adminFilter类继承Filter接口,实现doFilter方法,拦截请求
(3)在web.xml内用标签配置一个Filter过滤器, 用标签配置拦截路径

💭例:实现登录后才可访问资源(资源目录:web/pages/manager/*)

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest httpServletRequest=(HttpServletRequest)servletRequest;
    User user= (User) httpServletRequest.getSession().getAttribute("user");
    if(user==null){
        httpServletRequest.getRequestDispatcher("/pages/user/login.jsp").forward(servletRequest,servletResponse);
    }else{
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
<filter>
    <filter-name>ManagerFilter</filter-name>
    <filter-class>cn.xjh.filter.ManagerFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ManagerFilter</filter-name>
    <url-pattern>/pages/manager/ * </url-pattern>
    <url-pattern>/manager/bookServlet</url-pattern>
</filter-mapping>

⚗7.Filter方法
(1)构造器方法
(2)init初始化方法 【在web工程启动时候执行】
(3)doFilter过滤方法【每次拦截到请求时执行】
(4)destroy销毁过滤器【停止web工程时执行】

⚗8.FilterConfig类
封装Filter配置参数信息
(1)getFilterName 方法,返回 <filter-name> 元素的设置值。
(2)getServletContext 方法,返回 FilterConfig 对象中所包装的 ServletContext 对象的引用。
(3)getInitParameter 方法,返回在 web.xml 文件中为 Filter 所设置的某个名称的初始化的参数值。
(4)getInitParameterNames 方法,返回一个 Enumeration 集合对象。

⚗9.FilterChain 过滤器链
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值