欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Servlet 过滤器Filter

程序员文章站 2022-06-06 11:51:44
特点 1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,在Servlet API中定义了三个接口类:Filter, FilterChain, FilterConfig。 2)基本功能是对 调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一 ......

特点

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){
}