導航:首頁 > 凈水問答 > 過濾器不過濾固定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相關的資料

熱點內容
君浩環保水處理設備 瀏覽:36
過濾過的廢水可以干嗎 瀏覽:554
污水處理廠土建施工資料 瀏覽:963
鍋爐清灰劑廠家鍋爐除垢劑價格 瀏覽:867
工業超純水停機了怎麼辦 瀏覽:691
鄉村生物污水處理 瀏覽:459
空氣凈化器過濾網怎麼裝 瀏覽:221
金壇污水處理多少錢 瀏覽:387
pe污水管道介面做法有幾種 瀏覽:710
直飲水機怎麼預留進水管 瀏覽:631
電滲析離子交換膜可以連續使用 瀏覽:550
如何處理甲苯廢水 瀏覽:763
簡單蒸餾觀察現象 瀏覽:392
提升泵井施工方案 瀏覽:950
除去水管中的水垢 瀏覽:815
電鍍污水處理回用 瀏覽:311
納濾凈水機好不好 瀏覽:973
污水井冒水屬於哪裡管 瀏覽:25
雲米電器飲水機質量怎麼樣 瀏覽:396
反滲透廢水怎麼排到下水道 瀏覽:131