在web.xml声明的一个filter中:
<!– session过滤filter –> <filter> <filter-name>SessionFilter</filter-name> <filter-class> com.iqbon.jcms.web.util.SessionFilter </filter-class> <init-param> <param-name>excludedPages</param-name> <param-value>/admin/login.do</param-value> </init-param> </filter> <filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>
可以看到url-pattern的设置里面过滤的url规则是/admin/*,如果要把/admin/login.do排除在过滤url之外。
可以结合init-param的初始化参数和HttpServletRequest的getServletPath()方法来判断。
首先加上初始化参数:
<init-param> <param-name>excludedPages</param-name> <param-value>/admin/login.do</param-value> </init-param>
其次在filter的java代码中加上判断:
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; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import com.iqbon.jcms.util.KeyConstant; /** * session过滤器 */ public class SessionFilter implements Filter { /** * 需要排除的页面 */ private String excludedPages; private String[] excludedPageArray; /** * @see Filter#destroy() */ public void destroy() { return; } /** * 对session进行判断当前访问是否有登录 */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { boolean isExcludedPage = false; for (String page : excludedPageArray) {//判断是否在过滤url之外 if(((HttpServletRequest) request).getServletPath().equals(page)){ isExcludedPage = true; break; } } if (isExcludedPage) {//在过滤url之外 chain.doFilter(request, response); } else {//不在过滤url之外,判断session是否存在 HttpSession session = ((HttpServletRequest) request).getSession(); if (session == null || session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) { ((HttpServletResponse) response).sendRedirect(“/login.htm”); } else { chain.doFilter(request, response); } } } /** * 初始化函数,获取需要排除在外的url */ public void init(FilterConfig fConfig) throws ServletException { excludedPages = fConfig.getInitParameter(“excludedPages”); if (StringUtils.isNotEmpty(excludedPages)) { excludedPageArray = excludedPages.split(“,”); } return; } }
相关推荐
4. **例外处理**:有时可能需要允许某些特殊情况,比如搜索引擎爬虫的访问,这时可以在filter中添加例外规则。 实现一个Java防盗链filter,通常需要以下步骤: 1. **创建Filter类**:继承自`javax.servlet.Filter`...
在Filter中检查请求头,然后动态设置响应头以允许跨域。 5. nginx反向代理:在服务器端,可以使用nginx这样的反向代理服务器,将跨域请求转发到后端服务,nginx自身处理跨域问题,这样可以避免修改后端代码。 6. ...
但是AJAX却是例外的,所以解决方法是设置响应为session失效。 一共分为过滤器和页面JS两个部分的设置,先看过滤器的修改: import java.io.IOException; import javax.servlet.Filter; import javax.servlet....
您可以选择字段来过滤和自定义其数据类型,别名和例外运算符,可以添加/自定义请求格式,还可以添加新的运算符或覆盖现有的运算符 安装 您可以通过composer安装该软件包: composer require asemalalami/laravel-...
我们不再接受请求请求或为社区用户提供支持。 唯一的例外是作为对IBM API Connect客户的支持的一部分而提供的严重错误和安全漏洞的修复程序。 (请参阅下面的。) 我们敦促所有LoopBack 3用户尽快将其应用迁移到...
5. **白名单和例外**:某些反Adblock过滤器会提供白名单机制,允许特定的广告或广告网络不受限制地展示。这种方式既可以满足部分用户的需求,同时也能确保网站的收入。 在"anti-adblock-filter-main"这个文件中,很...
2. **配置Web.xml**:这是Web应用的部署描述符,其中需要配置Struts2的过滤器(Filter),该过滤器负责拦截所有请求并将其交给Struts2处理。 ```xml <filter> <filter-name>struts2</filter-name> <filter-class...
例如,我们可以设置所有请求都需要身份验证,然后为某些特定URL设置例外。 5. **登录与登出**: Spring Security默认提供了登录页面和逻辑。我们可以在配置中指定登录页面URL和登录处理URL。登出可以通过调用`...
大多数JavaWeb应用采用Model-View-Controller(MVC)设计模式,myWeb项目也不例外。Model负责数据的处理和存储,View负责显示,Controller处理用户请求并协调Model和View。在实际项目中,这三者通常通过Servlet、...
了解如何使用PHP的filter_var函数进行数据过滤,使用htmlspecialchars防止XSS攻击,以及设置CSRF令牌防止未授权操作,对确保系统安全至关重要。 5. 系统架构: 开源内容管理系统通常采用MVC(模型-视图-控制器)...
- **配置过滤器后端**:通过`filter_backends`属性设置为`DjangoFilterBackend`。 - **关联自定义过滤器类**:通过`filter_class`属性将自定义的`ItemCategoryFilter`类关联起来。 - **权限控制**:为了安全性考虑,...
Spring Security使用一系列过滤器(Filter Chain)来处理请求。每个过滤器都有特定的任务,比如`HttpSessionAuthenticationStrategy`负责会话管理,`UsernamePasswordAuthenticationFilter`处理表单登录。4.1.3版本...
例如,可以使用`map`操作符转换API返回的数据,`filter`操作符筛选出满足特定条件的结果,`subscribeOn`和`observeOn`控制线程调度。 3. **数据解析**:Android-Allocine-Api通常会将服务器返回的JSON数据转换为...
5. **Servlet Filter与Listener**:与JSP一起使用的Servlet技术,Filter用于拦截和修改请求或响应,Listener监听特定事件,两者都可以增强JSP应用的功能。 6. **JSP的错误处理**:通过配置`error-page`元素,可以...
2. **Hello World示例**:作为任何编程语言或平台的基本入门,"Hello World"程序在Android中也不例外。这个例子通常包括创建一个新的Activity,显示简单的文字信息在界面上,是理解Android布局和组件的起点。 3. **...
环境搭建是任何框架学习的基础,对于Struts2也不例外。首先,需要获取Struts2所需的JAR文件,这些文件通常包含在Struts2的发布包中,包括核心库、插件和其他依赖库。确保所有必要的JAR文件都被添加到项目的类路径中...
2. **安全配置**:如果你的Web应用启用了安全过滤器(如Spring Security),可能需要对静态资源进行例外处理,确保它们不会被安全策略阻止。 3. **缓存问题**:浏览器缓存可能导致旧版本的静态资源被加载,尝试清空...
2. **Java Web技术架构**:Java Web技术基于Servlet和Filter对请求进行处理,采用MVC(Model-View-Controller)设计模式,并通过XML或注解进行配置。它支持多种视图技术,如JSP、FreeMarker和Velocity,提供了丰富的...
服务器端会将所有操作写进日志文件,以便于事后查询,服务器端有IP过滤表,对IP过滤表以外的控制请求将不予回应。 4.Radmin 目前支持TCP/IP协议,应用十分广泛。 安全性亮点: 高级 256-位 AES 强加密用于...