- 
            
            @JAVA过滤机制——过滤简介 1、过滤器三部分:过滤源(用户请求)——>过滤规则——>过滤结果 2、过滤器不处理结果,只做辅助性操作 3、定义:过滤器是一个【服务器端】的组件,它可以【截取用户端的请求和响应信息】,并对这些信息过滤 4.案列:登录案例、编码转换案例 查看全部
- 
            
            四种不同过滤器,通过四种不同标签,在xml中做标记就可以实现不同的监听 查看全部
- 
            
            用Filter处理编码问题: 在过滤器中添加: request.setCharacterEncoding("utf-8"); 或者:在web.xml中配置初始化参数  查看全部 查看全部
- 
            
            登录案例中的放行:  查看全部 查看全部
- 
            
            Servlet3.0支持注解形式的Filter   查看全部 查看全部
- 
            
            过滤器的实现: ① 实现Filter接口 ② 在web.xml中配置过滤器  查看全部 查看全部
- 
            
            过滤器常见的使用场景 查看全部
- 
            
            web.xml配置 查看全部
- 
            
            过滤器可以改变用户请求的web资源,可以改变用户请求的路径(跳转); 过滤器不能直接返回数据,不能直接处理用户请求; 查看全部
- 
            
            过滤器工作原理:  过滤器生命周期:  过滤器链:  过滤器的分类:  查看全部 查看全部
- 
            
            在web.xml中配置 
 <filter>
 <filter-name>LoginFilter</filter-name>
 <filter-class>com.filter.LoginFilter</filter-class>
 <!-- 指定部分页面,在代码中实现对这些页面放行 -->
 <init-param>
 <param-name>noLoginPaths</param-name>
 <param-value>index.jsp;login.jsp;LoginServlet;fail.jsp</param-value>
 </init-param>
 <init-param>
 <param-name>charset</param-name>
 <param-value>UTF-8</param-value>
 </init-param>
 </filter>在Filter中 
 private FilterConfig config = null;public void init(FilterConfig arg0) throws ServletException { 
 config = arg0; // 将实例化时的init-param存入config
 }public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) 
 throws IOException, ServletException {
 String charset = config.getInitParameter("charset"); // 从config中获得字符集
 if(charset==null){
 charset = "UTF-8";
 }
 request.setCharacterEncoding(charset); // 设定字符集为UTF-8
 }编码转换 字符集转换防止乱码 使用: request.setCharacterEncoding("config.getInitParameter("XX")") XX参数内容“UTF-8” 查看全部
- 
            
            @WebFilter注解的常用属性:  查看全部 查看全部
- 
            
            Servelt2.5:过滤器的分类:    查看全部 查看全部
- 
            
            过滤器分类(通过<dispatcher>标签) 
 通过<dispatcher>标签的值不同把过滤器分类.此标签中有四个值可以选择,可以同时选择多个.
 包括request、forword、include、error
 假设同一个过滤器关联了index.jsp与main.jsp.此过滤器的<dispatcher>标签值为request.
 在过滤器中的doFilter()方法中
 public void doFilter(ServletRequest req,ServletResponse rep,FilterChain chain){
 HttpServletRequest request=(HttpServletRequest)req;
 HttpServletResponse response=(HttpServletResponse)rep;
 response.sendRedirect(request.getContextPath()+"/main.jsp");
 }
 当用户访问index.jsp页面时,便会被过滤器截取.并执行doFilter()方法中的重定向去main.jsp页面.但main.jsp也关联了此过滤器,过滤器会截取到重定向新Web资源的请求.因此又会调用doFilter()方法中的重定向去main.jsp.所以是死循环的状态.
 因为重定向是属于request的行为.因此会被<dispatcher>标签值为request的过滤器截取到.即<dispatcher>标签值为request的过滤器可以截取重定向新Web资源的请求.
 当过滤器的doFilter()方法中用 request.getRequestDispatcher("/main.jsp").forward(arg0, arg1)请求转发到main.jsp.此时当用户请求访问index.jsp时,便会被过滤器截取,并且执行doFilter()方法,然后请求转发到main.jsp页面.此时用户可以访问到main.jsp页面,并没有被过滤器截取.因为请求转发属于forward行为.因此<dispatcher>标签值为request的过滤器是截取不了通过请求转发去新Web资源的请求.尽管<url-pattern>设置了main.jsp关联过滤器,但仍然截取不了.请求转发:浏览器的地址栏不会变化,性能相对更好一些,因为获取的资源是没有二次讲过浏览器的<br><br> 
 重定向:浏览器的地址栏是会变化的,获取资源的时候经过了二次通过浏览器发送请求的过程。1.请求转发 
 请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变
 请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应
 RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request,response);
 或request.getRequestDispatcher(path) .forward(request,response);
 2.重定向
 重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址
 重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求
 response.sendRedirect(path);
 forward转发 :一次请求一次回应 服务器跳转
 sendredirect重定向: 两次请求两次回应 客户端跳转
 由于sendredirect是request,会激活REQUEST类型的过滤器,因此要注意,是否会形成重定向循环
 request 过滤request请求
 forward 过滤重定向请求
 include 过滤include请求查看全部
- 
            
            过滤器链的执行过程: 用户请求-->过滤器1-->过滤器2-->servlet service-->过滤器2-->过滤器1-->用户  查看全部 查看全部
举报
 
             
         
                 
                 
                 
                 
                 
                