zoukankan      html  css  js  c++  java
  • TODO java-web相关 servlet过滤器+监听器

    servlet过滤器

    定义:

    过滤器是小型的web组件,它负责拦截请求和响应,以便查看、提供或以某种方式操作正在客户机和服务器之间交换的数据

    与过滤器相关的servlet共包含3个简单接口:Filter/Filter-Chain/FilterConfig.

     要实现过滤器功能,必须先实现Filter接口。

    与servlet类似,Filter也需要在web.xml中配置。

    过滤器的使用:

    1.在实际应用中,可能会遇到需要对某些IP进行访问限制,不让非法的IP访问应用系统,这是就需要用到过滤器进行限制。

    当一个用户发出访问请求时,首先通过过滤器进行判断,如果用户的IP地址呗限制,就禁止访问,只有合法的IP才可以继续访问。

    2.打印版权有效期

    servlet监听器

    主要用来对web应用进行监听和控制,增强web应用的时间处理能力。

    servlet监听就是指一些特殊的servlet类,这些类可以监听web应用上下文信息,servlet会话信息、servlet请求信息

    cookie是一种在客户端保存信息的技术。

    在servlet中,使用java.servlet.http.Cookie类来封装一个Cookie消息,在HttpServletResponse接口中定义了一个addCookie方法来向浏览器发送Cookie消息(也就是Cookie对象),在HttpServletRequest接口中定义了一个getCookies方法来读取浏览器发送的web服务器的所有cookie消息。

     

    SaveCookie

    response.setContentType("text/html;charset=UTF-8");
    
    //添加临时Cookie对象
    
    PrintWriter out = response.getWriter();
    
    //建立超时时间为0的Cookie
    
    Cookie tempCookie = new Cookie("cookie","87654321");
    
    cookie.setMaxAge(0);
    
    response.addCookie(cookie);
    
    String user = request.getParameter("user");
    
      if(user!=null){
    
      //建立永久cookie对象
    
      cookie userCookie = new Cookie("user",user);
    
      userCookie.setMaxAge(60*60*24);
    
      userCookie.setPath("/");
    
      //添加永久cookie对象
    
      response.addCookie(userCookie);
    
    }
    

      

    RequestDispatcher readCookie = 
    
        getServletContext().getRequestDispatcher("/ReadCookie")
    
    readCookie.include(request,response);
    

      

    ReadCookie

    public class ReadCookie extends HttpServlet{
    
      protected Cookie getCookieValue(Cookie[] cookies,String name){
    
        if(cookies !=null){
    
        for(Cookie c :cookies){
    
        if(c.getName().equals(name))
    
        return c;
    
    }
    
      }
    
    return null;
    
    }
    

      

    public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
    
      response.setContentType("text/html;charset=UTF-8");
    
      PrintWriter out = response.getWriter();
    
    //获取临时cookie
    
      Cookie tempCookie =getCookieValue(request.getCookies(),"temp");
    
      if(tempCookie!=null)
    
        out.println("临时Cookie的值"+tempCookie.getValue()+"<br/>");
    
      else
    
        out.println("临时cookie未设置!<br/>");
    
    //获取超时时间为0的cookie
    
      Cookie cookie = getCookieValue(request.getCookies(),"cookie");
    
      if(cookie!=null)
    
        out.println("cookie:"+cookie.getValue()+"<br/>");
    
      else
    
        out.println("cookie已经被删除!<br/>");
    
    //获取永久cookie
    
      Cookie userCookie = getCookieValue(request.getCookies(),"userCookie");
    
      if(userCookie!=null)
    
        out.println("user:"+userCookie.getValue());
    
      else
    
        out.println("user未设置");
    
    }
    
    }
    
     
    

      

    Session技术

    session对象用来保存每个用户的用户信息和会话状态。

    session对象有服务器端自动创建,可以跟踪每个用户的操作状态。

    用户首次登陆系统是,服务器会自动给用户分配唯一表示的SessionID,可以用来区分开其他用户。相对Cookie,Session是存储在服务器端的会话,相对安全,而且其存储长度限制也比Cookie的存储长度限制扩大了。

    通过Cookie跟踪Session;(尚不清楚什么原理)

    //todo

    通过URL跟踪Session;

  • 相关阅读:
    33.数组声明方式(var构造函数) 、检测数组类型、数组的属性(封装好的就一个length)、数组的方法
    31.this指向(写出调用链,找最近对象) this的默认绑定 隐式绑定 显示绑定(call(绑定对象) apply(绑定对象) 当括号内没放绑定对象的时候恢复默认绑定) bind
    31.
    30.函数作用域链 (GO AO 也叫词法作用域链)、 调用栈、调用栈涉及this绑定
    29.包装类(构造函数) 包装类作用及调用栈
    916. Word Subsets
    246. Strobogrammatic Number
    445. Add Two Numbers II
    2. Add Two Numbers
    341. Flatten Nested List Iterator
  • 原文地址:https://www.cnblogs.com/zhizhiyin/p/6590030.html
Copyright © 2011-2022 走看看