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

  

原文地址:https://www.cnblogs.com/walkwithmonth/p/10011277.html

时间: 2024-08-03 20:04:23

Servlet 过滤器Filter的相关文章

Servlet过滤器Filter

Filter与Listener是Servlet规范里的两个高级特性.不用于处理客户端请求,只用于对request,response进行修改或者对context,session,request事件进行监听.善于处理一些特殊问题. sun公司在Servlet2.3规范中添加了Filter功能,并在Servlet2.4中对Filter进行了细节的补充.ServletFilter提现的是设计模式中的Filter模式. 实例参考: http://book.51cto.com/art/201004/1934

JavaWeb学习篇之----Servlet过滤器Filter和监听器

JavaWeb学习篇之----Servlet过滤器Filter和监听器 首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,

Servlet过滤器Filter用法

1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void doFilter (ServletRequest, ServletResponse, FilterChain)该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法.FilterChain用户访问后续过滤器. public vo

Servlet基础知识(四)——Servlet过滤器Filter

一.什么是过滤器: 政府大楼的安检保安,它既能对进入政府大楼的人员进行检查,只允许检查符合要求的进入:同时他也负责对出大楼的人进行检查,看他带出的东西是否符合要求. 同样的,Servlet中的过滤器既可以对客户端发来的请求,在Servlet接收之前进行过滤:也可以对Servlet发出的响应,在客户端接收之前进行过滤. 二.过滤器的实现: Servlet的过滤器是通过实现javax.servlet.Filter接口实现的.(也就是说Servlet过滤器其实就是一个实现了Filter的Serlvet

servlet 过滤器(Filter)(八)

1.servlet过滤器产生背景 项目中我们会遇到这样一类的需求,对访问服务器的用户ip实施过滤,只有在允许名单中的ip才能访问服务,为了实现需求,每当有客户端请求时,我们都会写校验ip的代码,客户端能够访问到的servlet我们都需要这样做,很明显这样做有一个缺点,就是代码冗余,维护不方便,如果验证规则改变,修改起来也特别麻烦. 为了解决以上问题,Filter 技术应运而生. 2.servlet过滤器是什么? servlet过滤器是在java servlet 2.3 中定义的.它能够对serv

Servlet过滤器Filter和监听器

一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,它只能提供过滤作用.Servlet过期能够在Servlet被调用之前检查Request对象,修改Request H

Servlet过滤器--Filter

一.定义: 是一种特殊的Servlet,可以用来对请求进行过滤,多个过滤器可以形成过滤链: 当请求发送到servlet之前,可以用过滤器截获和处理请求,在servlet结束工作之后,在响应发回给客户之前,可以用过滤器处理响应. 实现javax.servlet.Filter接口里面的 init,doFilter.destroy等抽象方法,是过滤器的生命周期. 过滤器的工作原理: 二.Web.xml中的配置声明 根据servlet2.3规范,filter执行是按照 filter-mapping 先后

Servlet 过滤器 Filter

过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 下面是对所有编码过滤器 package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.S

servlet过滤器Filter使用之DelegatingFilterProxy类

正常情况下,我们需要添加一个过滤器,需要实现javax.servlet.Filter接口,再在web.xml中配置filter,如下: package cc.eabour.webapp.security.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.s