zoukankan      html  css  js  c++  java
  • 过滤器与监听器

    Filter

    一个 Filter 程序就是一个 Java 类,这个类必须实现 Filter 接口。javax.servlet.Filter 接口中定义了三个方法:init、doFilter、destory。

    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    //控制uri访问权限
    @WebFilter(filterName = "UrlFilter",urlPatterns = {"/admin.jsp"})
    public class UrlFilter implements Filter {
        public void destroy() {
            System.out.println("过滤结束。。");
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            HttpServletResponse response = (HttpServletResponse)resp;
            HttpServletRequest  request = ( HttpServletRequest)req;
            //向下转型
            String user = (String)request.getSession().getAttribute("user");
            request.getRequestURI();
            //如果用户名为空,返回原页面
            if(user==null){
                response.sendRedirect("/index.jsp");
            }
            //不为空  就放行
            chain.doFilter(req, resp);
        }
        public void init(FilterConfig config) throws ServletException {
            System.out.println("开始过滤");
        }
    }
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    //过滤字符    /*代表根目录所有的都过滤  多个urlPatterns = "{"",""}"
    @WebFilter(filterName = "MyFilter",urlPatterns = "/*")
    public class MyFilter implements Filter {
        public void destroy() {
            System.out.println("过滤结束。。");
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            resp.setContentType("UTF-8");
            System.out.println("执行过滤");
            chain.doFilter(req, resp);
        }
    
        public void init(FilterConfig config) throws ServletException {
            System.out.println("开始过滤");
        }
    }
    //在web.xml配置filter与应射   (servlet3.0以上,tomact版本支持的话,这种方式可以用注解代替)
    <
    filter> <filter-name>FirstFilter</filter-name> <filter-class>FirstFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

    Servlet3.0提供注解(如以上两个例子),这样我们在web应用中使用监听器过滤器等时,不再需要在web.xml文件中配置监听器的相关描述信息了。

    执行顺序 :如果在web.xml配置就按照xml的顺序来。如果在filter中注解配置,按照字符集编码的首字母顺序来执行

    Listener

    https://blog.csdn.net/menghuanzhiming/article/details/79042182

  • 相关阅读:
    求相同号码一天内的上网流量——mapreduce
    scala初学
    对web日志文件实现按照人员、行为分类
    08 ROS阶段总结——package.xml 和 CMakeLists.txt 详细解读
    06 ROS中的节点、话题和服务
    07 ROS 的常见消息类型
    01 ROS下的三维点云数据处理(一)点云数据来源
    01 Opencv系列(一)ROS和opencv图像数据的转换
    01 ROS的运行架构——环境变量和工作空间
    02 Opencv系列(二)ROS框架下的摄像头调用方法
  • 原文地址:https://www.cnblogs.com/jiayiblog/p/11049428.html
Copyright © 2011-2022 走看看