导航:首页 > 净水问答 > 过滤器不过滤固定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相关的资料

热点内容
简易净水器的蓬松棉有什么运用 浏览:510
低频波导除垢技术 浏览:409
污水处理水池爬梯 浏览:877
沙坪坝污水池淤泥清理 浏览:513
污染控制中如何进行废水排放管理 浏览:120
天花空调过滤网 浏览:312
psp模拟器如何提升最高画质 浏览:56
大孔树脂分离设备 浏览:149
食品过滤用活性炭 浏览:841
污水处理证4级什么意思 浏览:143
ro膜阻垢剂哪家便宜 浏览:599
净化器aia什么意思 浏览:193
大小区有多少污水井盖 浏览:670
棋牌室空气净化器灯怎么换灯管 浏览:421
关于污水知多少的资料 浏览:485
饮用水和污水有什么区别 浏览:974
无压桶净水器水压小怎么改造 浏览:418
过滤罐更换滤料工程预算 浏览:5
污水泵三孔法兰尺寸 浏览:884
ao污水工艺中的do是什么意思 浏览:568