配置一个权限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错误
分享到:
相关推荐
在上面的配置中,`<filter-name>`用于唯一标识Filter,`<filter-class>`指定了Filter的完整类名。`<filter-mapping>`则定义了Filter的映射规则,`<url-pattern>`元素指定了哪些URL请求需要经过这个Filter。 为了使...
- **过滤(DoFilter)**:每当请求匹配到Filter配置时,`doFilter()`方法会被调用。这个方法中,开发者可以编写自定义逻辑,如添加日志、修改请求或响应等,然后通过`chain.doFilter(request, response)`将请求传递...
在FilterPro中,用户可以通过选择MFB滤波器类型,然后调整参数来实现特定的滤波效果。MFB滤波器设计通常涉及更多的电路级细节,但FilterPro的可视化工具和自动计算功能使得这一过程变得相对简单。 为了深入了解...
当有多个Filter配置时,它们会形成一个Filter链。请求会按照配置的顺序依次通过每个Filter的`doFilter()`方法,直到到达目标Servlet。Filter之间是串联的,每个Filter都有机会对请求进行修改或做其他操作。 4. **...
- **初始化(init())**:当Filter首次被加载时,会调用`init(FilterConfig config)`方法,传入一个FilterConfig对象,包含了Filter配置信息。 - **过滤(doFilter())**:每次有请求匹配到Filter时,都会调用`...
在`applicationContext.xml`配置文件中,将Filter或Servlet作为bean定义,使其成为Spring管理的一部分。例如: ```xml <bean id="springFilter" class="com.netqin.filter.SpringFilter"> <value>...
### Filter过滤器(分类讨论,分类讲解) #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常重要的技术,它可以在请求到达目标资源(如...在未来的学习和实践中,可以进一步探索更多高级特性和应用场景。
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,尤其对于初学者而言,它是理解和掌握Web应用程序中数据处理和请求控制的关键概念。...在实践中不断学习和积累,你的Java Web技术会更加扎实。
博主Evankaka详细介绍了如何创建和配置Filter,以及如何在实际项目中应用Filter,包括字符编码转换和登录检查的示例,这些实例有助于加深对Filter的理解和实践。 总的来说,Servlet之Filter是Java Web开发中的重要...
在Java Web开发中,`Filter`的配置通常在`web.xml`文件中完成,通过定义`<filter>`和`<filter-mapping>`元素来指定`Filter`类和它应该拦截的URL模式。例如,`url-pattern`可以是星号(*),表示拦截所有请求,或者可以...
在`web.xml`中配置Filter,包括指定Filter类、设置过滤规则以及映射到特定的URL模式: ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> ...
Filter在Servlet容器中注册,并通过`<filter>`和`<filter-mapping>`元素在web.xml配置文件中定义其拦截的目标Servlet或URL模式。当用户请求匹配这些配置的资源时,Filter会先于Servlet执行,执行完后,Filter再将...
10. **添加Filter到Graph**:使用`IGraphBuilder::AddFilter`方法将你的Filter添加到Graph中,并使用`ConnectDirect`或`RenderFile`来连接Filter。 **三、编译与测试** 1. 编译你的工程,确保没有编译错误。 2. ...
总的来说,这个项目为开发者提供了一个动手实践DirectShow编程的机会,通过研究AppFilter的源代码,可以深入理解如何创建自定义的视频播放Filter,以及如何处理.avi格式的视频数据。这对于那些希望从事多媒体软件...
### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。...希望本文能为你在Struts2框架的学习和实践中提供一定的帮助。
Filter的配置通常在web.xml文件中完成,包括定义Filter类、设置过滤路径和Filter链的顺序。也可以使用Java-based配置或者注解方式来配置Filter。 5. **Filter的应用场景** - **权限控制**:Filter可以检查用户...
"TableFilter"是一款基于jQuery的开源插件,用于在HTML表格上实现强大的过滤功能。它提供了用户友好的交互式过滤选项,...通过深入理解和实践这些文件,你可以熟练掌握TableFilter的使用,为你的项目带来更多的可能性。
在实践中,你可能还需要结合Spring Boot、MVC等技术,利用Spring Security提供的各种注解,如`@Secured`、`@PreAuthorize`等,实现更便捷的权限控制。同时,熟悉Spring Security的源码对于深入理解和定制框架功能也...
在filter配置中,多个filter的初始化顺序由它们在web.xml文件中的位置决定,但filter拦截资源的顺序则是根据filter-mapping的顺序进行。每个filter-mapping对应一个filter,且filter-mapping必须位于相应的filter...
在Java Web开发中,Servlet、Filter和Listener是三个核心组件,它们构成了Web应用程序的基础架构,用于处理HTTP请求、...在实践中,开发者可以根据需求灵活组合和配置这三个组件,以实现各种复杂的业务逻辑和管理策略。