`
xiaoliang330
  • 浏览: 115548 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

实践中filter的配置

    博客分类:
  • web
阅读更多
配置一个权限filter,拦截一切没有登录却想访问只有登录后才有的权限页面的url,我的做法如下:

  先写上一个filter:

   
package com.xll.util;

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 RightFilter implements Filter {
	private FilterConfig filterConfig;

	public void destroy() {
	}
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		String uri = request.getRequestURI();
		System.out.println(uri);
		String ctx = request.getContextPath();
		System.out.println(ctx);
		uri = uri.substring(ctx.length());
		if (uri.startsWith("/admin")) {
			if (request.getSession().getAttribute("username") == null) {
				System.out.println("没有登录");
				response.sendRedirect("/VoteSystem/index.jsp");
				System.out.println("xxxxxxxxxxx");
				return ;
			} else {
				chain.doFilter(request, response);
			}
		}
	}
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

}





然后在web.xml中配置,这时我把这个filter的配置放在struts核心filter之前,放在之后貌似起不到你要的效果,这个还需要求解释(貌似是优先级的问题)

<filter>
		<filter-name>RightFilter</filter-name>
		<filter-class>com.xll.util.RightFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>RightFilter</filter-name>
		<url-pattern>/admin/*</url-pattern>
	</filter-mapping>
	

	<filter>								<!--定义核心Filter FilterDispatcher -->
		<filter-name>struts2</filter-name>	<!-- 定义核心Filter的名称 -->
		<filter-class>						<!--定义核心Filter的实现类 -->
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name><!--核心Filter的名称 -->
		<url-pattern>/*</url-pattern><!--使用该核心Filter过滤所有的Web请求 -->
	</filter-mapping>



这样一配置,我想要拦截访问admin下所有的请求就能够实现了,注意:你的filter一定要写正确,使用filter时避免连续两次跳转,否则会报java.lang.IllegalStateException错误
分享到:
评论

相关推荐

    Web后端开发-使用Filter过滤器技术,实现访问量统计-方法二使用web.xml配置的方式

    在上面的配置中,`&lt;filter-name&gt;`用于唯一标识Filter,`&lt;filter-class&gt;`指定了Filter的完整类名。`&lt;filter-mapping&gt;`则定义了Filter的映射规则,`&lt;url-pattern&gt;`元素指定了哪些URL请求需要经过这个Filter。 为了使...

    Java Filter相关资料

    - **过滤(DoFilter)**:每当请求匹配到Filter配置时,`doFilter()`方法会被调用。这个方法中,开发者可以编写自定义逻辑,如添加日志、修改请求或响应等,然后通过`chain.doFilter(request, response)`将请求传递...

    FilterPro 安装及基本教程中英文

    在FilterPro中,用户可以通过选择MFB滤波器类型,然后调整参数来实现特定的滤波效果。MFB滤波器设计通常涉及更多的电路级细节,但FilterPro的可视化工具和自动计算功能使得这一过程变得相对简单。 为了深入了解...

    Filter1源代码

    当有多个Filter配置时,它们会形成一个Filter链。请求会按照配置的顺序依次通过每个Filter的`doFilter()`方法,直到到达目标Servlet。Filter之间是串联的,每个Filter都有机会对请求进行修改或做其他操作。 4. **...

    Java-filter测试程序

    - **初始化(init())**:当Filter首次被加载时,会调用`init(FilterConfig config)`方法,传入一个FilterConfig对象,包含了Filter配置信息。 - **过滤(doFilter())**:每次有请求匹配到Filter时,都会调用`...

    Spring 管理filter 和servlet

    在`applicationContext.xml`配置文件中,将Filter或Servlet作为bean定义,使其成为Spring管理的一部分。例如: ```xml &lt;bean id="springFilter" class="com.netqin.filter.SpringFilter"&gt; &lt;value&gt;...

    Filter过滤器(分类讨论,分类讲解)

    ### Filter过滤器(分类讨论,分类讲解) #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常重要的技术,它可以在请求到达目标资源(如...在未来的学习和实践中,可以进一步探索更多高级特性和应用场景。

    filter 简单小例子,入门例子

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,尤其对于初学者而言,它是理解和掌握Web应用程序中数据处理和请求控制的关键概念。...在实践中不断学习和积累,你的Java Web技术会更加扎实。

    Servlet之Filter深入讲解及实例研究

    博主Evankaka详细介绍了如何创建和配置Filter,以及如何在实际项目中应用Filter,包括字符编码转换和登录检查的示例,这些实例有助于加深对Filter的理解和实践。 总的来说,Servlet之Filter是Java Web开发中的重要...

    webfilter的教程

    在Java Web开发中,`Filter`的配置通常在`web.xml`文件中完成,通过定义`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素来指定`Filter`类和它应该拦截的URL模式。例如,`url-pattern`可以是星号(*),表示拦截所有请求,或者可以...

    JSP-Filter的简单练习

    在`web.xml`中配置Filter,包括指定Filter类、设置过滤规则以及映射到特定的URL模式: ```xml &lt;filter&gt; &lt;filter-name&gt;myFilter&lt;/filter-name&gt; &lt;filter-class&gt;com.example.MyFilter&lt;/filter-class&gt; &lt;/filter&gt; ...

    servlet之Filter使用范例--登陆验证

    Filter在Servlet容器中注册,并通过`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素在web.xml配置文件中定义其拦截的目标Servlet或URL模式。当用户请求匹配这些配置的资源时,Filter会先于Servlet执行,执行完后,Filter再将...

    如何新建一个Filter空工程

    10. **添加Filter到Graph**:使用`IGraphBuilder::AddFilter`方法将你的Filter添加到Graph中,并使用`ConnectDirect`或`RenderFile`来连接Filter。 **三、编译与测试** 1. 编译你的工程,确保没有编译错误。 2. ...

    AppFilter 播放视频(.avi)源代码

    总的来说,这个项目为开发者提供了一个动手实践DirectShow编程的机会,通过研究AppFilter的源代码,可以深入理解如何创建自定义的视频播放Filter,以及如何处理.avi格式的视频数据。这对于那些希望从事多媒体软件...

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。...希望本文能为你在Struts2框架的学习和实践中提供一定的帮助。

    Java EE中Filter技术的研究与应用.zip

    Filter的配置通常在web.xml文件中完成,包括定义Filter类、设置过滤路径和Filter链的顺序。也可以使用Java-based配置或者注解方式来配置Filter。 5. **Filter的应用场景** - **权限控制**:Filter可以检查用户...

    tablefilter

    "TableFilter"是一款基于jQuery的开源插件,用于在HTML表格上实现强大的过滤功能。它提供了用户友好的交互式过滤选项,...通过深入理解和实践这些文件,你可以熟练掌握TableFilter的使用,为你的项目带来更多的可能性。

    springsecurity2 自定义filter实现

    在实践中,你可能还需要结合Spring Boot、MVC等技术,利用Spring Security提供的各种注解,如`@Secured`、`@PreAuthorize`等,实现更便捷的权限控制。同时,熟悉Spring Security的源码对于深入理解和定制框架功能也...

    web.xml文件配置.doc

    在filter配置中,多个filter的初始化顺序由它们在web.xml文件中的位置决定,但filter拦截资源的顺序则是根据filter-mapping的顺序进行。每个filter-mapping对应一个filter,且filter-mapping必须位于相应的filter...

    servlet+filter+lisenter 例子

    在Java Web开发中,Servlet、Filter和Listener是三个核心组件,它们构成了Web应用程序的基础架构,用于处理HTTP请求、...在实践中,开发者可以根据需求灵活组合和配置这三个组件,以实现各种复杂的业务逻辑和管理策略。

Global site tag (gtag.js) - Google Analytics