`
lapulande
  • 浏览: 219375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Servlet常用到的几个Filter

阅读更多

一、使浏览器不缓存页面的过滤器

public class ForceNoCacheFilter implements Filter {

	public void init(FilterConfig filterConfig) throws ServletException {
	
	}
	
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChain) throws IOException, ServletException {
		((HttpServletResponse) response).setHeader("Cache-Control", "no-cache");
		((HttpServletResponse) response).setHeader("Pragma", "no-cache");
		((HttpServletResponse) response).setDateHeader("Expires", -1);
		filterChain.doFilter(request, response);
	}

	public void destroy() {
	
	}

}

 二、检测用户是否登陆的过滤器

/**
 * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面 配置参数 checkSessionKey 需检查的在 Session 中保存的关键字
 * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath notCheckURLList
 * 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath
 */
public class CheckLoginFilter implements Filter {
	protected FilterConfig filterConfig = null;
	private String redirectURL = null;
	private List notCheckURLList = new ArrayList();
	private String sessionKey = null;
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		redirectURL = filterConfig.getInitParameter("redirectURL");
		sessionKey = filterConfig.getInitParameter("checkSessionKey");

		String notCheckURLListStr = filterConfig
				.getInitParameter("notCheckURLList");

		if (notCheckURLListStr != null) {
			StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
			notCheckURLList.clear();
			while (st.hasMoreTokens()) {
				notCheckURLList.add(st.nextToken());
			}
		}
	}
	public void doFilter(ServletRequest servletRequest,
			ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;

		HttpSession session = request.getSession();
		if (sessionKey == null) {
			filterChain.doFilter(request, response);
			return;
		}
		if ((!checkRequestURIIntNotFilterList(request))
				&& session.getAttribute(sessionKey) == null) {
			response.sendRedirect(request.getContextPath() + redirectURL);
			return;
		}
		filterChain.doFilter(servletRequest, servletResponse);
	}
	private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
		String uri = request.getServletPath()
				+ (request.getPathInfo() == null ? "" : request.getPathInfo());
		return notCheckURLList.contains(uri);
	}
	public void destroy() {
		notCheckURLList.clear();
	}
	
}

三、字符编码的过滤器

/**
 * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
 */
public class CharacterEncodingFilter implements Filter {
	protected FilterConfig filterConfig = null;
	protected String encoding = "";
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		this.encoding = filterConfig.getInitParameter("encoding");

	}
	public void doFilter(ServletRequest servletRequest,
			ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		if (encoding != null)
			servletRequest.setCharacterEncoding(encoding);
		filterChain.doFilter(servletRequest, servletResponse);
	}

	public void destroy() {
		filterConfig = null;
		encoding = null;
	}
}

 四 利用Filter限制用户浏览权限

public class RightFilter implements Filter {

	public void init(FilterConfig arg0) throws ServletException {
	}

	public void doFilter(ServletRequest sreq, ServletResponse sres,
			FilterChain arg2) throws IOException, ServletException {
		// 获取uri地址
		HttpServletRequest request = (HttpServletRequest) sreq;
		String uri = request.getRequestURI();
		String ctx = request.getContextPath();
		uri = uri.substring(ctx.length());
		// 判断admin级别网页的浏览权限
		if (uri.startsWith("/admin")) {
			if (request.getSession().getAttribute("admin") == null) {
				request.setAttribute("message", "您没有这个权限");
				request.getRequestDispatcher("/login.jsp").forward(sreq, sres);
				return;
			}
		}
		// 判断manage级别网页的浏览权限
		if (uri.startsWith("/manage")) {
			// 这里省去
		}
	}

	public void destroy() {
	}
}

 <!-- 判断页面的访问权限 -->

<filter>  
	<filter-name>RightFilter</filter-name>  
	<filter-class>cn.itkui.filter.RightFilter</filter-class>  
</filter>  
<filter-mapping>  
	<filter-name>RightFilter</filter-name>  
	<url-pattern>/admin/*</url-pattern>  
</filter-mapping>  
<filter-mapping>  
	<filter-name>RightFilter</filter-name>  
	<url-pattern>/manage/*</url-pattern>  
</filter-mapping>
 

 

分享到:
评论

相关推荐

    tomcat跨域cors相关jar包 java-property-utils-1.9.jar,cors-filter-1.7.jar,java-util-1.9

    在Tomcat中实现跨域CORS,通常涉及以下几个步骤: 1. **配置CORS过滤器**:在`web.xml`中添加`&lt;filter&gt;`和`&lt;filter-mapping&gt;`,并将`CorsFilter`类绑定到所有请求或特定请求路径。 2. **定义CORS策略**:配置过滤器...

    jsp有关用到的jar包.rar

    6. **Servlet API**:为了在服务器端处理HTTP请求,可能包含`servlet-api.jar`,这是Java Servlet规范的一部分,提供了Servlet和Filter接口以及相关的类。 这些jar包在JSP开发中起着至关重要的作用,它们能够帮助...

    Java购物车及JSTL的应用

    购物车通常由以下几个关键部分组成: 1. **商品添加**:用户选择商品后,系统将商品信息(如ID、名称、价格、数量等)添加到购物车中。这需要一个服务接口用于接收请求并处理数据。 2. **商品展示**:购物车页面...

    BBS java web

    通常,这样的项目结构会包括以下几个部分: 1. **源码目录**:存放Java源代码,可能分为Model(业务模型)、View(视图)、Controller(控制器)三个部分,对应MVC设计模式。 2. **资源目录**:存储静态资源,如...

    轻量级Java EE企业应用实战第4版第8章03源代码.rar

    这个项目的源代码可能涵盖以下几个关键知识点: 1. **Servlet和JSP**:作为Java EE的基础,Servlet负责处理HTTP请求,而JSP则用于生成动态网页内容。开发者可能使用它们来实现用户界面和服务器端逻辑的交互。 2. *...

    图书管理系统(java语言开发)

    3. 用户管理:注册、登录、权限控制等功能,可能利用Java Servlet和JSP技术实现前后端分离,配合过滤器(Filter)进行权限验证。 4. 搜索与查询:支持按书名、作者、类别等多种条件进行检索,这需要对数据库查询...

    java.web王者归来一书宠物商店源码.part1

    在这个部分中,我们可以深入学习到以下几个关键的Java Web开发知识点: 1. **Servlet技术**:Servlet是Java Web应用程序的基础,用于接收和响应来自Web客户端(如浏览器)的请求。在宠物商店项目中,Servlet可能被...

    javaweb学习资料及项目文件包

    在JavaWeb开发中,主要涉及以下几个核心知识点: 1. **Servlet**:Servlet是JavaWeb开发的基础,它是一个运行在服务器端的小程序,用于接收和响应HTTP请求。Servlet生命周期包括加载、实例化、初始化、服务、销毁等...

    基于Java的轻量级CMS-天梯.zip

    2. **了解Java Web开发**:如Servlet、JSP、Filter等,以及MVC(Model-View-Controller)设计模式。 3. **掌握相关框架**:例如Spring Boot、MyBatis或Hibernate,它们简化了Java Web应用的开发和配置。 4. **数据库...

    图书管理系统(很老的代码了)

    在图书管理系统中,通常会涉及以下几个核心模块: 1. 用户管理:用户注册、登录、权限控制等功能,这通常会用到Servlet和JSP来实现前端交互,配合数据库存储用户信息。 2. 图书信息管理:包括图书的增删改查,可能...

    tomcat8.0源码

    Tomcat 8.0源码主要分为以下几个部分: 1. `common`:包含了所有版本的Tomcat都会用到的通用类。 2. `catalina`:核心服务组件,如`Engine`、`Host`、`Context`和`Wrapper`,它们构成了Tomcat的容器模型。 3. `jdbc...

    java软件工程师面试基本题_共5页.pdf

    * SpringMVC 是基于过滤器对 Servlet 进行了封装的一个框架,我们使用的时候就是在文件中配置 DispatcherServlet 类。 * SpringMVC 工作时主要是通过 DispatcherServlet 管理接收到的请求并进行处理。 * Spring 用的...

    Jsp考试系统-jspks.zip

    该系统的实现主要涉及以下几个核心知识点: 1. **JSP基础**:JSP页面由HTML和嵌入的Java代码组成,通过`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`等指令进行页面间的跳转和数据传递。在本系统中,JSP文件可能包含用户界面...

    javaWEB2

    在JavaWeb开发中,我们通常会涉及到以下几个重要的知识点: 1. **Servlet**:Servlet是Java语言中用于扩展服务器功能的接口,它是JavaWeb开发的核心组件。通过实现Servlet接口或继承HttpServlet类,开发者可以处理...

    OA_Plate.rar

    在【OA_Plate】项目中,我们可以预期以下几个方面的内容: 1. **MVC架构**:为了组织和分离关注点,项目很可能采用了Model-View-Controller(MVC)设计模式。在这种模式下,模型负责业务逻辑,视图负责用户界面,而...

    UrlReWriteDemo

    在项目中,主要涉及以下几个关键知识点: 1. **URL重写规则**:UrlReWriteDemo的核心是定义URL重写规则,这通常通过配置文件(如`.htaccess`或自定义配置)来实现。在Java环境中,可能使用开源库如`Tuckey ...

    JAVAEE云盘管理系统

    在JavaEE平台上,开发云盘管理系统的关键技术主要包括以下几个方面: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的核心组件,负责接收和响应客户端请求。JSP(JavaServer Pages)用于生成动态网页内容,...

    JAVAWEB选择题.pdf

    1. **Filter的实现**:在JavaWeb中,创建一个Filter需要实现`javax.servlet.Filter`接口,并且在web.xml中进行配置。选项B正确描述了这一点。 2. **自定义标签配置**:自定义标签的配置文件通常放在`WEB-INF`目录下...

    XSSSecurityFilter实战

    实现这个过滤器通常需要以下几个步骤: 1. 创建一个实现了javax.servlet.Filter接口的类,如`XSSSecurityFilter`。 2. 在`doFilter`方法中,获取请求参数并进行XSS防护处理。这可能包括对字符串进行HTML实体编码,...

    Javaweb课程设计-网上订餐管理系统(源码+实验报告) .zip

    JavaWeb是指使用Java技术来开发Web应用程序的一系列技术和框架的集合,包括Servlet、JSP、JavaBean、Filter、Listener等。这些技术共同构成了动态Web应用的基础,使得开发者能够构建交互性强、功能丰富的Web应用。 ...

Global site tag (gtag.js) - Google Analytics