zoukankan      html  css  js  c++  java
  • Servlet 过滤器Filter

    特点

    1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,在Servlet API中定义了三个接口类:Filter, FilterChain, FilterConfig。

    2)基本功能是对 调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。

    3)需要在 web.xml 文件中进行注册和设置它所能拦截的资源。

    编码

    public class UserNoFilter implements Filter { 
        
    	private FilterConfig filterConfig; //获取参数配置
    
    	public void init(FilterConfig fConfig) throws ServletException {
    		this.filterConfig = fConfig;
    	}
    	
    	/**
    	 * 业务逻辑判断
    	 */
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		
    		String initUser = filterConfig.getInitParameter("userNo");
    		String userNo = request.getParameter("userNo");//从提交请求获取用户账号
    		
    		if(!initUser.equals(userNo)){
    			request.setAttribute("message", "用户名不正确");
    			request.getRequestDispatcher("/index.jsp").forward(request, response);
    			return;
    		}
    		
    		chain.doFilter(request, response);
    	} 
    	
    	public void destroy() {
    		 
    	} 
    
    }

    web.xml参数

    	<!-- 配置过滤器 -->
    	<filter>
    		<display-name>UserNoFilter</display-name>
    		<filter-name>UserNoFilter</filter-name>
    		<filter-class>com.demo.filter.UserNoFilter</filter-class>
    		<init-param>
    			<param-name>userNo</param-name>
    			<param-value>admin</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>UserNoFilter</filter-name>
    		<url-pattern>/hello.jsp</url-pattern> 
    	</filter-mapping>
    

      

    应用

       1)指定编码格式

    request.setCharacterEncoding(encoding);
    filterChain.doFilter(request, response);
    

      2)用户是否登录、用户能否访问菜单

      

    String userId=(String) session.getAttribute("userId");
    if (userId ==null){
    }
    

      

  • 相关阅读:
    C/C++程序员应聘常见面试题剖析(经典)
    连续几个数组在内存中的存储地址
    虚析构函数
    c++中的函数模版和类模版
    C++多态性(续)
    malloc和new的区别和联系
    深入浅出多线程系列之四:简单的同步 lock
    Silverlight_Rest_WCF系列之六:跨线程
    深入浅出多线程系列之五:一些同步构造(下篇)
    深入浅出多线程系列之五:一些同步构造(上篇)
  • 原文地址:https://www.cnblogs.com/walkwithmonth/p/10011277.html
Copyright © 2011-2022 走看看