导航:首页 > 净水问答 > 过滤器不过滤固定url

过滤器不过滤固定url

发布时间:2021-03-21 16:34:48

① java web登录后的各种请求在浏览器地址不变,过滤器该怎样拦截每次的请求

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
if(req.getSession().getAttribute("user")==null){
req.setAttribute("error", "请你先登录");
//非法请求才会进到这里面,在这里保存请求的url地址,在成功登录后再进行跳转
req.getSession().setAttribute("goUrl", req.getRequestURL()+"?"+ req.getQueryString());
request.getRequestDispatcher("/ulogin.jsp").forward(request, response);
}

else{
chain.doFilter(request, response);
}
}
上面的代码是过滤器中的代码
下面的是servlet中的代码
if(request.getSession().getAttribute("goUrl")!=null){
String url = (String)request.getSession().getAttribute("goUrl");
response.sendRedirect(url);
}
else{
response.sendRedirect("/webshopping/index.jsp");
}

② 过滤器的url-pattern设置了a.htm,访问a.htm,不走过滤器

如果你要让所有访问页面请求进过过滤器的话直接<url-pattern>/*.html</url-pattern> 就可以了

③ struts2怎么在web.xml配置过滤器过滤掉指定的url或者指定的url不过滤

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern> //这个抄 地方指定要过滤的url

</filter-mapping>

④ 急!如何让过滤器不过滤页面中引用的CSS或JS页面

对于这种,我说两种方法:

1、将你所有的JSP页面单独放在一个文件夹里专(假如jspPage),jspPage文件夹里可根据属类别分若干子文件夹,再把相对应的JSP放在子文件夹里;
JS、CSS及图片等分别放在外面的文件夹里(与文件夹jspPage并列)
再:<url-pattern>/jspPage/*</url-pattern>就行了
一般用的就是这种

2、在过滤的JAVA文件中,在doFilter方法里进行判断,将后缀名为.css、.js等直接设置为通过就行了,这种较为复杂,在一些特殊情况下才用到,一般不推荐

⑤ java过滤器怎么不过滤一个页面里包含的多个请求

abstract public class FilterPerRequest implements Filter {

private static final Boolean FILTERED = true;
private ThreadLocal<Boolean> statusLocal = new ThreadLocal<Boolean>();

@Override
final public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
if (hasNotFiltering()) {
doFilterAndDispatchRequest(req, resp, chain);
return;
}
//dispatch request only
chain.doFilter(req, resp);
}

private boolean hasNotFiltering() {
Boolean status = statusLocal.get();
if (status == null) {
return true;
}
return false;
}

private void doFilterAndDispatchRequest(ServletRequest req,
ServletResponse resp, FilterChain chain) throws IOException,
ServletException {
try {
doFilterPerRequest(req, resp);
setFiltered();
chain.doFilter(req, resp);
} finally {
cleanFilterStatus();
}
}

abstract protected void doFilterPerRequest(ServletRequest req,
ServletResponse resp);

private void setFiltered() {
statusLocal.set(FILTERED);
}

private void cleanFilterStatus() {
statusLocal.set(null);
}

}
那要就情况而定了。。。
如果是request范围内的话,就可以使用上面的过滤器。
如果是session范围内的话,就需要在session内存储一个标志变量,方式和request差不多。
如果是限制用户操作的话,那就必须将用户操作持久化。
由于你的问题不明确,我也不好多说...

⑥ java过滤器不过滤某个货某一些路径

<param-name>noLoginPaths</param-name> 参数名可自取

<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.imooc.filter.LoginFilter</filter-class>
<init-param>
<param-name>noLoginPaths</param-name>
<param-value>login.jsp;fail.jsp;LoginServlet</param-value>
</init-param>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

StringnoLoginPaths=config.getInitParameter("noLoginPaths");

关键代码 :

if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){

if(strArray[i]==null||"".equals(strArray[i]))continue;

if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}

}

完整代码:

importjava.io.IOException;

importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;

{

privateFilterConfigconfig;

@Override
publicvoiddestroy(){

}

@Override
publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
HttpSessionsession=request.getSession();

StringnoLoginPaths=config.getInitParameter("noLoginPaths");

Stringcharset=config.getInitParameter("charset");
if(charset==null){
charset="UTF-8";
}
request.setCharacterEncoding(charset);

if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){

if(strArray[i]==null||"".equals(strArray[i]))continue;

if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}

}
if(session.getAttribute("username")!=null){
arg2.doFilter(arg0,arg1);
}else{
response.sendRedirect("login.jsp");
}

}

@Override
publicvoidinit(FilterConfigarg0)throwsServletException{
config=arg0;
}

}

⑦ jsp过滤器的web.xml如何指定不想过滤的页面

在filter类中判断一下
如果URL是以page/index.jsp结尾的,直接就过了,不做验证
不过感觉这种方法治标不治本

我也在等达人出现。。。

⑧ 怎么让filter不过滤某几个动作

<filter-mapping
<filter-nameCommonHeadersFilter</filter-name
<url-pattern/*</url-pattern
</filter-mapping/*是对所有的路径过滤,那么你可以定义你不过滤的路径为
<filter-mapping
<filter-nameCommonHeadersFilter</filter-name
<url-pattern/yes/*</url-pattern
</filter-mapping
那么所有的不包含上面的路径都不做;
2,如果这个filter是你自己写的,或者你反编译后能看懂得话,那么直接在过滤器里面自己判断了!

⑨ filter过滤器配置如何不过滤一些页面

直接添加多个文件映射啊,为每个需要进行过滤的文件都写个映射标签

阅读全文

与过滤器不过滤固定url相关的资料

热点内容
雷凌的过滤芯怎么更换 浏览:486
纯净水桶如何改成电动的 浏览:550
汽车汽油滤芯器漏油什么原因 浏览:916
污水bod5是什么 浏览:591
醇酸树脂能存放多久 浏览:91
鱼缸测过滤改造 浏览:546
饮水机水流怎么设置 浏览:582
饮水机里有水垢吗 浏览:664
超滤SDI偏高 浏览:575
空气净化器怎么拆开飞利浦 浏览:101
净水机在哪里能看到机器的型号 浏览:478
团泊污水处理厂梧桐公社 浏览:805
纯水机增压泵有什么用 浏览:703
磷酸酸洗废水 浏览:479
更换滤芯为什么要冲洗 浏览:941
什么工业污水最好 浏览:199
长沙地埋式污水处理设备多少钱 浏览:267
排放污水有什么坏处 浏览:721
饮水机开水没有了怎么办 浏览:898
环境影响钢综片研磨清洗废水 浏览:27