`
El_Nino
  • 浏览: 205159 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

filter如何设置例外的请求

阅读更多

在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;
}

}

 

2
1
分享到:
评论

相关推荐

    防盗链filter

    4. **例外处理**:有时可能需要允许某些特殊情况,比如搜索引擎爬虫的访问,这时可以在filter中添加例外规则。 实现一个Java防盗链filter,通常需要以下步骤: 1. **创建Filter类**:继承自`javax.servlet.Filter`...

    java服务器端解决跨域问题共6页.pdf.zip

    在Filter中检查请求头,然后动态设置响应头以允许跨域。 5. nginx反向代理:在服务器端,可以使用nginx这样的反向代理服务器,将跨域请求转发到后端服务,nginx自身处理跨域问题,这样可以避免修改后端代码。 6. ...

    Ajax请求session失效该如何解决

    但是AJAX却是例外的,所以解决方法是设置响应为session失效。 一共分为过滤器和页面JS两个部分的设置,先看过滤器的修改: import java.io.IOException; import javax.servlet.Filter; import javax.servlet....

    Laravel-Advanced-Filter:Laravel高级过滤器

    您可以选择字段来过滤和自定义其数据类型,别名和例外运算符,可以添加/自定义请求格式,还可以添加新的运算符或覆盖现有的运算符 安装 您可以通过composer安装该软件包: composer require asemalalami/laravel-...

    loopback-filters:实现LoopBack样式的过滤

    我们不再接受请求请求或为社区用户提供支持。 唯一的例外是作为对IBM API Connect客户的支持的一部分而提供的严重错误和安全漏洞的修复程序。 (请参阅下面的。) 我们敦促所有LoopBack 3用户尽快将其应用迁移到...

    anti-adblock-filter:反Adblock过滤器

    5. **白名单和例外**:某些反Adblock过滤器会提供白名单机制,允许特定的广告或广告网络不受限制地展示。这种方式既可以满足部分用户的需求,同时也能确保网站的收入。 在"anti-adblock-filter-main"这个文件中,很...

    struts2简明参考

    2. **配置Web.xml**:这是Web应用的部署描述符,其中需要配置Struts2的过滤器(Filter),该过滤器负责拦截所有请求并将其交给Struts2处理。 ```xml &lt;filter&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class...

    spring security第一个项目

    例如,我们可以设置所有请求都需要身份验证,然后为某些特定URL设置例外。 5. **登录与登出**: Spring Security默认提供了登录页面和逻辑。我们可以在配置中指定登录页面URL和登录处理URL。登出可以通过调用`...

    javaweb源码

    大多数JavaWeb应用采用Model-View-Controller(MVC)设计模式,myWeb项目也不例外。Model负责数据的处理和存储,View负责显示,Controller处理用户请求并协调Model和View。在实际项目中,这三者通常通过Servlet、...

    基于PHP的DBHcmsPHP开源内容管理系统源码.zip

    了解如何使用PHP的filter_var函数进行数据过滤,使用htmlspecialchars防止XSS攻击,以及设置CSRF令牌防止未授权操作,对确保系统安全至关重要。 5. 系统架构: 开源内容管理系统通常采用MVC(模型-视图-控制器)...

    Django-rest-framework中过滤器的定制实例

    - **配置过滤器后端**:通过`filter_backends`属性设置为`DjangoFilterBackend`。 - **关联自定义过滤器类**:通过`filter_class`属性将自定义的`ItemCategoryFilter`类关联起来。 - **权限控制**:为了安全性考虑,...

    springsecurity4.1.3

    Spring Security使用一系列过滤器(Filter Chain)来处理请求。每个过滤器都有特定的任务,比如`HttpSessionAuthenticationStrategy`负责会话管理,`UsernamePasswordAuthenticationFilter`处理表单登录。4.1.3版本...

    Android-Allocine-Api,用于Android的Allocine API,为RxJava2制造.zip

    例如,可以使用`map`操作符转换API返回的数据,`filter`操作符筛选出满足特定条件的结果,`subscribeOn`和`observeOn`控制线程调度。 3. **数据解析**:Android-Allocine-Api通常会将服务器返回的JSON数据转换为...

    JSP速成教程(PDG)

    5. **Servlet Filter与Listener**:与JSP一起使用的Servlet技术,Filter用于拦截和修改请求或响应,Listener监听特定事件,两者都可以增强JSP应用的功能。 6. **JSP的错误处理**:通过配置`error-page`元素,可以...

    Android-example-ok.rar_android_example andro

    2. **Hello World示例**:作为任何编程语言或平台的基本入门,"Hello World"程序在Android中也不例外。这个例子通常包括创建一个新的Activity,显示简单的文字信息在界面上,是理解Android布局和组件的起点。 3. **...

    Strut2入门经典笔记(含源代码)

    环境搭建是任何框架学习的基础,对于Struts2也不例外。首先,需要获取Struts2所需的JAR文件,这些文件通常包含在Struts2的发布包中,包括核心库、插件和其他依赖库。确保所有必要的JAR文件都被添加到项目的类路径中...

    Tomcat无法加载css和js等静态资源文件的解决思路

    2. **安全配置**:如果你的Web应用启用了安全过滤器(如Spring Security),可能需要对静态资源进行例外处理,确保它们不会被安全策略阻止。 3. **缓存问题**:浏览器缓存可能导致旧版本的静态资源被加载,尝试清空...

    Java Web技术的安全与防范.pdf

    2. **Java Web技术架构**:Java Web技术基于Servlet和Filter对请求进行处理,采用MVC(Model-View-Controller)设计模式,并通过XML或注解进行配置。它支持多种视图技术,如JSP、FreeMarker和Velocity,提供了丰富的...

    破解版为最新完美版。支持WIN7隐藏任务栏图标

    服务器端会将所有操作写进日志文件,以便于事后查询,服务器端有IP过滤表,对IP过滤表以外的控制请求将不予回应。  4.Radmin 目前支持TCP/IP协议,应用十分广泛。  安全性亮点:  高级 256-位 AES 强加密用于...

Global site tag (gtag.js) - Google Analytics