A. web.xml過濾器怎麼怎麼攔截了以後還繼續執行請求的內容是怎麼回事
Filter執行filter方法的時候穿一個filterChain的參數,這是整個的過濾器鏈,執行完一個filter以後會調用這個chain的next的下一個filter的doFilter方法
B. java web 過濾器跟攔截器的區別和使用
java web 過濾器跟攔截器的區別和使用分別介紹如下:
1、過濾器的使用
Filter主要對客戶端的請求和伺服器的響應進行過濾,使用場景:
客戶端的請求到達伺服器,伺服器真正開始處理這個請求之前,要經過Filter的過濾
伺服器真正的處理完這個請求,生成響應之後,要經過Filter的過濾,才能將響應發送給客戶端
作用:可以通過Filter技術,對web伺服器管理的所有web資源,例如JSP、Servlet、靜態圖片文件或靜態 html文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的許可權訪問控制、過濾敏感詞彙、壓縮響應信息等一些高級功能。
配置Filter
同開發Servlet一樣,寫完了類,接下來就是配置了,我們需要在web.xml文件中配置Filter。具體的配置和Servlet配置如出一轍。
<filter>
<filter-name>log</filter-name>
<filter-class>com.jellythink.practise.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
上面配置中比較重要的就是url-pattern和dispatcher了。
過濾類:
public class LogFilter implements Filter
{
private FilterConfig config;
public void init(FilterConfig config)
{
this.config = config;
}
public void destroy()
{
this.config = null;
}
// 這個方法是Filter的核心方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
// 對用戶的請求進行處理
ServletContext context = this.config.getServletContext();
long begin = System.currentTimeMillis();
// 輸出過濾信息
System.out.println("開始過濾...");
HttpServletRequest hRequest = (HttpServletRequest)request;
System.out.println("Filter已經截獲到用戶請求的地址:" + hRequest.getServletPath());
// 處理完以後,將請求交給下一個Filter或者Servlet處理
chain.doFilter(request, response);
// 對伺服器的響應進行處理
long end = System.currentTimeMillis();
System.out.println("過濾結束");
System.out.println("請求被定為到:" + hRequest.getRequestURI() + "; 所花費的時間為:" + (end - begin));
}
}
2、攔截器的使用:
攔截器的主要作用是攔截用戶的請求並進行相應的處理。比如通過它來進行許可權驗證,或者是來判斷用戶是否登陸,或者是像12306那樣子判斷當前時間是否是購票時間。
1.在SpringMVC的配置文件中加上支持MVC的schema
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
下面是聲明示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
這樣在SpringMVC的配置文件中就可以使用mvc標簽了,mvc標簽中有一個mvc:interceptors是用於聲明SpringMVC的攔截器的。
C. javaweb防止表單重復提交的幾種解決方案
1.js方法解決:關於js方法解決就是說通過js動態控制提交按鈕不能多次點擊,或者多次點擊不起作用。
方案一:通過設立標識使表單不能重復提交:
要強調的是,利用session方法解決表單重復問題是十分完美的,基本上可以應對各種重復提交問題。
但!是不是之前在客戶端防止表單重復提交的種種方法就不使用了呢?
答案是否定的,我們需要多種方法混合使用才能達到最好的效果,也許有人會問,不是說session方法基本可以應對各種重復提交問題了嗎?
這里我們所說的達到最好效果指的是,給用戶更好地體驗,例如用戶點擊了提交按鈕,這時將按鈕變為不可用的,用以告訴用戶你已經提交內容了,不可重復提交。還有如果無論什麼情況都用session防止表單重復提交問題,反而無形的增加了伺服器端的負擔。
D. javaWeb如何寫攔截器過濾前端所有請求中的數據
頁面復時JSP頁面吧,從資料庫制中讀取的數據應該是分頁顯示出來的如果你的頁面的數據記錄的條數是pageSize個 JSP頁面:for(int i=0;i<pageSize;i++){ <input type=checkbox name=<%=i %> value=<%=id %>>記錄內容 // 循環顯示每條記錄並加入復選框,id是表的主碼 }點擊刪除按鈕後進入一個Servlet控制器String id=null;for(int i=0;i<pageSize;i++){ id=request.getParameter(i+""); if(id!=null){ 刪除記錄方法(String id); }}在model中再寫一個根據ID刪除記錄的類.方法就OK了 很好寫 我就不寫了
E. Android 應用安全 - WebView請求過濾
為了提高應用的安全性,有時候我們需要過濾WebView的請求,從而達到並不是信任所有的請求,可以防止在App中打開非正常鏈接或者屏蔽廣告
如果你的App有比較嚴格的安全需求,則只需要信任自己定義的信任列表,把列表之外的路徑都不讓其載入,如果你的App中會載入大量的外部網頁默認信任大部分網頁則只需要添加黑名單,依需求而定
需要注意一點,為了增強匹配的安全性我們可以使用正則去進行匹配,正則中"."表示任何所以我們需要加上轉義字元
shouldInterceptRequest函數會攔截所有經過的web資源資源請求,當沒有通過我們的名單校驗時,則返回一個不返回任何資源的WebResourceResponse對象,意味著不載入此資源,這里要注意就是shouldInterceptRequest函數的返回值不要直接返回null,那意味著交給了webView自己處理起不到攔截的作用
Android 知識整理
F. 如何處理重復web請求
1.系統啟動時彈出對話框,通常是一些廣告信息,例如歡迎訪問某某網站等。
2.開機彈出網頁,通常會彈出很多窗口,讓你措手不及,惡毒一點的,可以重復彈出窗口直到死機。
解決辦法:1.彈出對話框。打開注冊表編輯器,找到HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Winlogon主鍵,然後在右邊窗口中找到"LegalNoticeCaption"和 "LegalNoticeText"這兩個字元串,刪除這兩個字元串就可以解決在啟動時出現提示框的現象了。
G. webservice校驗重復請求的問題
建張表,記錄UUID和他的處理結果,每次根據UUID查詢記錄,如果找到記錄說明已處理返回處理結果,沒找到說明是新的請求,處理並將結果和UUID保存到表中