JAVA小白学习第二阶段(web)------第三课学习心得

前言:本次学习主要是学习了cookie和session,整体难度不算很大,也比较好记一点。但还是需要注意区分session和servletContext二者在传递数据时的区别;

一:cookie

cookie在之前常用于用户的登入,这里只需要了解几个cookie的常用用法就可以了

 //创建cookie对象,并赋值a=100
 Cookie cookie=new Cookie("a","100");
//设置一个cookie存在的有效值,通俗来说就是设置cookie存在60s
 cookie.setMaxAge(60);
 //发送cookie到前端
 resp.addCookie(cookie);
这边需要接受时就需要用一个增强for循环来接收
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
    System.out.println(cookie.getName()+cookie.getValue());
}

二:session(可用于多个服务器访问)

session是非常依赖于cookie的,可以这样理解,session就是一个舔狗,没有cookie就活不下去那种,当客户端访问路径时,会生成一个session对象,生成一个唯一的seesion id返回到客户端并且存储在cookie中,并且还会有一个session容器存放id和输入的值,当客户端,想要访问时,会携带cookie中的id,与session id进行一个比较,如果符合的情况下,那么 session容器就会把值反馈给客户端;

//创建一个session对象 
 HttpSession session = req.getSession();
 session.setAttribute("a",200);
 session.setAttribute("b",300);
//这边创建一个cookie对象并且将session id存放到JSESSIONID中
 Cookie cookie=new Cookie("JSESSIONID",session.getId());
 //设置JSESSIONID的有效时长为60s,并且在发送cookie值
 cookie.setMaxAge(60);
 resp.addCookie(cookie);
//创建session对象后获取刚刚存放的值
 HttpSession session = req.getSession();
 System.out.println(session.getAttribute("a"));
 System.out.println(session.getAttribute("b"));

这边需要做一个区别因为session和servletContext都能用来存值取值,但是二者之间还是有很大区别的,session在存储数据时会专门生成一个id,并且这个id还是唯一的,这就代表着在不同服务器所存储的值是不同的而servletContext却不一样,这个是存一个值就有,但是存新的值时,他会自动覆盖原来的值,这时候输出的就是新的值;

三:Filter过滤器

这个简单来说就是可以帮助过滤一些东西,如果创建了这个过滤器那么,当这个过滤器没有放行语句时,访问其他路口都不会通过,只有设置了放行语句时,才能访问其他入口;

这边首先要实现一个接口 Filter

然后在上面的路径上设置成默认访问全部路径@WebFilter("/*")//默认拦截所有接口

System.out.println("这是被过滤器执行的逻辑");
//可以将编辑器转格式的操作放到过滤器里,这样在请求post时就不要一个一个去打,更加简便
servletRequest.setCharacterEncoding("utf8");
//需要放行通过过滤器时需要输入这行代码
filterChain.doFilter(servletRequest,servletResponse);

过滤器的好处在于,所有接口要访问时都必须先经过过滤器,那么就可以将一些服务于多个路径的命令设置在过滤器里,这样就会更加的简便;

四:Listener监视器

这个监视器的作用是监视servletContext方法有没有被用到

这个要实现功能也是要先实现一个ServletContextListener接口才能实现功能

@Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //这个方法是用于当ServletContext被访问时,也就是被使用时就会执行的逻辑
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
//这个方法是用于当ServletContext被销毁时被执行的逻辑
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值