• 过滤器


     

     

     

    过滤器

    把我们不需要的东西去除,其实就是给定一个规范把那个请求的一些条件筛选

    注意一定要转发,不然会卡死arg2.doFilter(req, resp);通过该方法把req请求和resp请求分开

    写一个类实现implements Filter,最重要的就是doFileter方法

    需要在xml配置然后就可以使用了

    xml中的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0" metadata-complete="false">
      <display-name>2019_08_23_comprehensiveconnection</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <filter>
          <filter-name>test</filter-name>
          <filter-class>cn.jiedada.filter.FilterTest</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value><!-- 在init中通过encoding获得UTF-8 -->
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>test</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      <filter>
          <filter-name>test1</filter-name>
          <filter-class>cn.jiedada.filter.LoginFilterTest</filter-class><!-- 通过该权限明获得过滤器 -->
      </filter>
      <filter-mapping>
          <filter-name>test1</filter-name>
          <url-pattern>/system/*</url-pattern><!-- 拦截范围为什么 -->
      </filter-mapping>
      <filter>
          <filter-name>test2</filter-name>
          <filter-class>cn.jiedada.filter.AddNullFilter</filter-class>
      </filter>
      <filter-mapping>
          <filter-name>test2</filter-name>
          <url-pattern>/add.user</url-pattern>
      </filter-mapping>
    </web-app>
    View Code

    空值判断过滤

    package cn.jiedada.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class AddNullFilter implements Filter{
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain arg2)
                throws IOException, ServletException {
            String name = req.getParameter("name");
            String pwd = req.getParameter("pwd");
            if(name==null || name.trim().equals("")){
                req.setAttribute("errorTrim", "用户名不能为空");
                req.getRequestDispatcher("/system/user_add.jsp").forward(req, resp);
                return;
            }else if(pwd==null || pwd.trim().equals("")){
                req.setAttribute("errorTrim", "密码不能为空");
                req.setAttribute("username", name.trim());
                req.getRequestDispatcher("/system/user_add.jsp").forward(req, resp);
                return;
            }
            //定一要转发
            arg2.doFilter(req, resp);
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub
            
        }
    
    }
    View Code

    编码设置过滤器

    package cn.jiedada.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class FilterTest implements Filter{
        FilterConfig config;
        @Override
        public void destroy() {
        }
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain arg2)
                throws IOException, ServletException {
            String encoding = config.getInitParameter("encoding");
            req.setCharacterEncoding(encoding);
            resp.setContentType("text/html;charset="+encoding);
            arg2.doFilter(req, resp);
        }
    
        @Override
        public void init(FilterConfig config) throws ServletException {
            // TODO Auto-generated method stub
            this.config=config;
        }
    
    }
    View Code
  • 相关阅读:
    [OI学习笔记]排列组合&二项式定理
    [OI学习笔记]拓补排序
    [OI学习笔记]DAG最短路的四种算法整理-floyd,Dijkstra,Bellman-Ford,SPFA
    [OI学习笔记]从蒟蒻的角度理解动态规划(DP)——从暴力搜索到动态规划
    [OI学习笔记]最小生成树之Kruskal算法
    [OI学习笔记]最小生成树之Prim算法
    [OI学习笔记]图的存储与遍历-邻接矩阵&邻接表
    将数组中第n个元素,放到第m个元素后面
    Unity3D中播放序列帧动画
    UVA1589 Xiangqi
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/11444928.html
Copyright © 2020-2023  润新知