如何在java中使用Filter进行访问控制。 所有请求都经过Filter,但是把login.jsp和login.action也过滤掉了。这可如何是好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在过滤器中做判断啊,访问login.jsp和login.action的放行啊,亲! 有道理啊亲,关键是我过滤的应该是什么 *.jsp or *.action ? 可以对上面的两个操作 添加例外具体可以在<filter>的<init-param>中进行配置,然后在filter实现中获取配置的例外参数,并进行判断是否进行过滤操作可以做形如下面的配置:<init-param><param-name>exclusions</param-name><!-- 例外添加 不需要过滤操作的接口 --><param-value>/login.jsp,login.action</param-value> 那不就相当于没有过滤器了么。。只放行login.jsp和login.action这两个页面。先获得url,然后判断是不是以login.jsp或者login.action结尾,用String中的endsWith()方法。 String currentURL = request.getRequestURI(); String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length()); if (!"/".equals(targetURL) && !"/login.jsp".equals(targetURL) && !"/login_check.jsp".equals(targetURL) && !"logout.jsp".equals(targetURL)){//filter 操作 }项目里面的东西,仅作参考 关键是在Filter中对额外参数的配置不会啊。亲。 一个大致例子:/***过滤器初始化参数配置*/ <filter> <filter-name>过滤器名称</filter-name> <filter-class> 过滤器的类路径 </filter-class> //配置出书啊参数,key、value形式 <init-param> <param-name>exclusions</param-name> <!-- 例外添加 不需要过滤操作的接口 --> <param-value>/login.jsp,/login.action</param-value> </filter> <filter-mapping> <filter-name>过滤器名称</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>/** * 初始化filter,获取过滤例外参数 * @param filterConfig filterConfig * @throws ServletException ServletException */ public void init(FilterConfig filterConfig) throws ServletException { FilterConfig config = filterConfig; String exclu = filterConfig.getInitParameter("exclusions"); private Set<String> exclusions = new HashSet<String>(); if (null != exclu) { String[] exclus = exclu.split(","); for (int i = 0; i < exclus.length; i++) { exclusions.add(exclus[i]); } } }取到exclusions之后就可以在具体过滤的方法里面进行验证处理了 急急急!!!关于jstl与el Comparable接口 讨论一个方法 还是关于上传的老问题 struts和hibernate整合的问题 js脚本中如何获得用户输入给标签<html:file properties="p1" onChange="myJs()">的值(即取得它得到的文件名) jsp 下的查询本目录文件 如何用java实现网络存储,即网络硬盘的功能? 抓狂,jdom解析xml的问题,问题解决,立马送分!!! Java处理图片 如何用annotation指定字段的容量? 听说这段代码有BUG,你们能执行吗
具体可以在<filter>的<init-param>中进行配置,然后在filter实现中获取配置的例外参数,并进行判断是否进行过滤操作
可以做形如下面的配置:
<init-param>
<param-name>exclusions</param-name>
<!-- 例外添加 不需要过滤操作的接口 -->
<param-value>/login.jsp,login.action</param-value>
那不就相当于没有过滤器了么。。只放行login.jsp和login.action这两个页面。先获得url,然后判断是不是以login.jsp或者login.action结尾,用String中的endsWith()方法。
String currentURL = request.getRequestURI();
String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length()); if (!"/".equals(targetURL) && !"/login.jsp".equals(targetURL) && !"/login_check.jsp".equals(targetURL) && !"logout.jsp".equals(targetURL)){//filter 操作
}项目里面的东西,仅作参考
一个大致例子:/**
*过滤器初始化参数配置
*/
<filter>
<filter-name>过滤器名称</filter-name>
<filter-class>
过滤器的类路径
</filter-class>
//配置出书啊参数,key、value形式
<init-param>
<param-name>exclusions</param-name>
<!-- 例外添加 不需要过滤操作的接口 -->
<param-value>/login.jsp,/login.action</param-value>
</filter>
<filter-mapping>
<filter-name>过滤器名称</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
/**
* 初始化filter,获取过滤例外参数
* @param filterConfig filterConfig
* @throws ServletException ServletException
*/
public void init(FilterConfig filterConfig) throws ServletException
{
FilterConfig config = filterConfig;
String exclu = filterConfig.getInitParameter("exclusions");
private Set<String> exclusions = new HashSet<String>();
if (null != exclu)
{
String[] exclus = exclu.split(",");
for (int i = 0; i < exclus.length; i++)
{
exclusions.add(exclus[i]);
}
}
}
取到exclusions之后就可以在具体过滤的方法里面进行验证处理了