在线等 过滤器过滤url的问题 只想过滤一个url(jsp或者action)怎么设置

dragon20121114 2013-03-06 11:06:11
如果我想只过滤某个页面(比如说a.jsp),不过滤其他页面,该怎么配置?因为不需要过滤的url太多,不好一一配置,所以我需要只配置过滤的url,求解

下面是部分web.xml的配置

<filter>
<!-- 设计过滤处理类,生成静态页面 -->
<filter-name>loginFilter</filter-name>
<filter-class>com.niit.filter.CheckLoginFilter</filter-class>

<!-- 重定向的URL -->
<init-param>
<param-name>redirectURL</param-name>
<param-value>/index.jsp</param-value>
</init-param>

<!-- 过滤的字段 -->
<init-param>
<param-name>checkSessionKey</param-name>
<param-value>username</param-value>
</init-param>

<!-- 不需要过滤的url -->
<init-param>
<param-name>notCheckURLList</param-name>
<param-value>/index.jsp</param-value>
</init-param>

</filter>

<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>


如果我想只过滤某个页面(比如说a.jsp),不过滤其他页面,该怎么配置?因为不需要过滤的url太多,不好一一配置,所以我需要只配置过滤的url,求解
...全文
876 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyusunquan 2013-03-06
  • 打赏
  • 举报
回复
引用 2 楼 a597926661 的回复:
引用 1 楼 a84992018 的回复:<filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>a.jsp</url-pattern> </filter-mapping> 修改 <url-pattern>a.jsp</url-pat……
如此即可
安特矮油 2013-03-06
  • 打赏
  • 举报
回复
过滤器可以配置只拦截某个请求,当然你也可以在过滤器中判断该url是否需要你过滤的。
a597926661 2013-03-06
  • 打赏
  • 举报
回复
引用 1 楼 a84992018 的回复:
<filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>a.jsp</url-pattern> </filter-mapping>
修改 <url-pattern>a.jsp</url-pattern>的值就行了
a84992018 2013-03-06
  • 打赏
  • 举报
回复
<filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>a.jsp</url-pattern> </filter-mapping>
IMBA__小八 2013-03-06
  • 打赏
  • 举报
回复
你过滤器的url就是获取tijiaodingdan.jsp这个路径,不是取到了吗。不懂你的意思
dragon20121114 2013-03-06
  • 打赏
  • 举报
回复
我想过滤 tijiaodingdan.jsp

其中过滤器如下:

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
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;

public class IsLoginFilter implements Filter
{
protected FilterConfig filterConfig = null;
private String redirectURL = null;
private List notCheckURLList = new ArrayList();
private String username = null;

public void destroy()
{
notCheckURLList.clear(); // 清楚list里面的所有元素
System.out.println("过滤器销毁");
}

public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;

HttpSession session = request.getSession();
if (username == null)
{
filterChain.doFilter(request, response);
return;
}
if ((!checkRequestURIIntNotFilterList(request))
&& session.getAttribute(username) == null)
{
response.sendRedirect(request.getContextPath() + redirectURL);
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}

private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
{
String uri = request.getServletPath()
+ (request.getPathInfo() == null ? "" : request.getPathInfo());
return notCheckURLList.contains(uri);
}

public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
redirectURL = filterConfig.getInitParameter("redirectURL");
username = filterConfig.getInitParameter("checkSessionKey");

String notCheckURLListStr = filterConfig
.getInitParameter("notCheckURLList");

if (notCheckURLListStr != null)
{
StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
notCheckURLList.clear();
while (st.hasMoreTokens())
{
notCheckURLList.add(st.nextToken());
}
}
// TODO Auto-generated method stub
System.out.println("过滤器初始化");

}


web.xml文件部分代码如下:

<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.niit.action.islogin.IsLoginFilter</filter-class>
<init-param>
<param-name>redirectURL</param-name>
<param-value>/index.jsp</param-value>
</init-param>
<init-param>
<param-name>checkSessionKey</param-name>
<param-value>username</param-value>
</init-param>

<init-param>
<param-name>notCheckURLList</param-name>
<param-value>/index.jsp</param-value>
</init-param>

</filter>

<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/jiayongdianqijsp/tijiaodingdan.jsp</url-pattern>
</filter-mapping>




为什么总是过滤不了tijiaodingdan.jsp这个文件呢?????????我debug发现,程序没有进去到dofilter中去!!!
IMBA__小八 2013-03-06
  • 打赏
  • 举报
回复
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request; String path = req.getServletPath(); if(path.endWith("/a.jsp")) //过滤的处理 else chain.doFilter(request, response);
dragon20121114 2013-03-06
  • 打赏
  • 举报
回复
如果是两个呢?需要过滤啷个jsp页面(比如说a.jsp和b.jsp)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧