zoukankan      html  css  js  c++  java
  • struts2-(1)使用Filter作为控制器

    1.使用filter作为控制器

    (1)创建类,实现javax.servlet.Filter

    package com.controller.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;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class TestFilter implements Filter{
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)arg0;
            HttpServletResponse response = (HttpServletResponse)arg1;
            //1.获取servletPath
            String servletPath = request.getServletPath();
            //2.判断servletPath若是input.action,则转发到input.html
            String path = null;
            
            if("/input.action".equals(servletPath)){
                    path = "/service/input.html";
            }else if("/detail.action".equals(servletPath)){
                path = "/service/detail.html";
            }
            
            if(path != null){
                request.getRequestDispatcher(path).forward(request, response);
            }
            
            return;
            
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub
            
        }
    
        
    
    }

    (2)配置web.xml,和servlet基本一样

    <filter>
            <filter-name>productFilter</filter-name>
            <filter-class>com.controller.filter.TestFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>productFilter</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>

    2.filter和servlet的區別

    (1) Servlet可以做的,Filter都可以完成。

    (2) Servlet不擅长拦截资源。filter里面有一个FilterChain,可以不停地把请求传递给下一个拦截器。而Servlet的API中没有。

  • 相关阅读:
    BAT 批处理 for循环 迟环境变量 [MD]
    adb 环境配置 常用命令 [MD]
    XML 解析 DOM SAX PULL 序列化 总结 [MD]
    instanceof 和 isInstance 强转 类型 class [MD]
    Charles 简介 总结 HTTP 抓包 代理 [MD]
    Permission 运行时权限 总结 翻译 [MD]
    反编译 AndroidKiller 逆向 字节码 实践案例 [MD]
    Gradle 翻译 Analyzer APK文件分析 [MD]
    Java 中 boolean 类型占用多少个字节 [MD]
    Shell 命令行工具 Cmder Babun Zsh [MD]
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/Filter.html
Copyright © 2011-2022 走看看