⑴ JSP中用filter 過濾某個包中的所有servlet
web.xml中這樣配置:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.zq.servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/servlet/Login</url-pattern>
</servlet-mapping>
或者不配置web.xml在servlet中寫註解:
@WebServlet("/servlet/Login")
配置fliter可以在web.xml中這樣寫:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.zy.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
或者不配置web.xml在filter中寫註解:
@WebFilter(filterName="/MyFilter",urlPatterns="/servlet/*")
即在所有想過濾的servlet名字前加上「/setvlet」在過濾的時候過濾路徑就可以寫成「/servlet/*」這樣就能過濾所有的Servlet。
⑵ 如何正確運用PHP filter判斷過濾數據
PHP 5.2以及更高的版本,PHP filter被綁定於系統,它可以對數據進行自動的過濾和判斷。 第一種、PHP filter判斷一個變數的內容是否符合要求 使用函數filter_var,第一個參數是要判斷的變數。第二個參數是判斷的要求,FILTER_VALIDATE_EMAIL表示判斷是否符合email格式。如果變數是類似’[email protected]’的數據,系統就會完整的輸出‘[email protected]’。如果是錯誤的格式,比如’boy’,就會輸出false。如果沒有填寫表單中的email欄位,系統輸出空字元串。$email=‘[email protected]’; echofilter_var($email, FILTER_VALIDATE_EMAIL); 第二種、PHP filter根據要求過濾一個變數的內容 和上面唯一的不同是第二個參數使用FILTER_SANITIZE_EMAIL,輸出的結果會不同。如果變數是類似’[email protected]’的數據,系統就會完整的輸出’[email protected]’。如果是錯誤的格式,比如’boy-afds3′,只要是數字和字母和劃線等email格式中可以出現的內容,系統同樣會完整的輸出’boy-afds3′。如果變數沒有設置內容,系統輸出空字元串。如果是’boy阿三’,系統會把email格式中不允許的東西去除,輸出’boy’。$email=‘[email protected]’; echofilter_var($email, FILTER_SANITIZE_EMAIL); 第三種、PHP filter判斷輸入的變數的內容是否符合要求 使用函數filter_input。第一個參數表示從那裡獲得的數據,INPUT_POST表示通過POST方法傳遞過來,還可以使用INPUT_GET, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV,代表相應的途徑。第二個參數就是數據的名稱。第三個參數代表過濾的要求,FILTER_VALIDATE_EMAIL表示判斷數據是否符合email格式。 假設通過表單的POST過來的一個欄位email。如果是類似 ’[email protected]’ 的數據,系統就會完整的輸出’[email protected]’。如果是錯誤的格式,比如’boy’,就會輸出false。如果沒有填寫表單中的email欄位,系統輸出null,也就是空。 echofilter_input(INPUT_POST, ‘email’,FILTER_VALIDATE_EMAIL); 第四種、PHP filter根據要求過濾輸入的變數的內容 和上面唯一的不同是第二個參數使用FILTER_SANITIZE_EMAIL,輸出的結果會不同。假設通過表單的POST過來的一個欄位email。 如果是類似’[email protected]’的數據,系統就會完整的輸出’[email protected]’。如果是錯誤的格式,比如’boy-afds3′,只要是數字和字母和劃線等email格式中可以出現的內容,系統同樣會完整的輸出’boy-afds3′。如果沒有填寫表單中的email欄位,系統輸出null,也就是空。如果是’boy阿三’源碼天空 ,系統會把email格式中不允許的東西去除,輸出’boy’。 echofilter_input (INPUT_POST,‘email’,
⑶ filter方法
filter方法?filter是一種在特定條件下縮小數組內容的方法,它用於在回調函數指定的條件下判斷單個元素,並僅檢索與條件匹配的元素,所以,本篇文章我們就來具體看看JavaScript中filter過濾器的使用方法。
我們先來看一下filter的基本語法
使用filter時,請指定數組的filter方法。
array.filter(callback [,that]);
對於array,需要指定預先創建的數組對象。
對於回調,可以指定數組元素的值「value」,數組元素的數字索引「index」以及存儲數組元素的數組對象「arrayObj」。
對於每個數組元素,callbak返回true的元素將生成為新數組,callcak未返回true的元素將被跳過,並且不包含在新數組中。
我們下面來看具體的示例
以下是通過實際使用filter方法從數組中提取特定條件的示例
從數組中提取奇數
代碼如下
var data = [1, 4, 7, 12, 21];
var result = data.filter(function(value) {
return value % 2 === 1;
});
console.log(result);
運行結果如下
從數組中刪除小於5的數字
代碼如下
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
function isMinNum(value) {
return (value >= 5);
}
var filterNum = numbers.filter(isMinNum);
console.log(filterNum);
運行結果如下
從字元串中提取與條件匹配的字元串
代碼如下
var items = ["item1", "item2", "item3"];
var filterItems = items.filter(function(value) {
return value === "item2";
});
console.log(filterItems);
⑷ scandir第三個參數filter是過濾用的嗎
最近發現了jquery的.filter()方法,這真是一個很強大的方法,最強大之處在於,他可以接受一個函數作為參數,然後根據函數的返回值判斷,如果返回值是true,這個元素將被保留,如果返回值是false,這個元素將被剔除。這就是jquery選擇器的過濾器。
空說無用,我們展示一下
復制代碼代碼如下:
<body>
<p>你好啊,今天及多大了啊</p>
<p><span>為什麼要告訴你</span></p>
</body>
如果我們要選擇有一個<span>子元素的<p>元素,平常我都是這么寫的
復制代碼代碼如下:
$("p>span").parent();
現在藉助於.filter()我們可以寫成這個樣子:
復制代碼代碼如下:
$("p").filter(function(index){
return $(this).find("span").size();
});
雖然看起來有些麻煩,但是他提供了我們一種極其強大的自定義查找元素的功能,我們可以傳遞一個函數,然後藉助jquery的隱式迭代,來實現查找。
⑸ powerbuilder中filter函數怎麼用啊,請高手解釋一下,具體參數解釋,和返回值解釋
filter是過濾的函數。
首先要用setfilter函數設置過濾條件,才能用filter函數執行。
setfilter函數的參數是字元型,裡面的字元串用於設置過濾的條件,例如dw_control.setfilter("emp_name = 'Tom'"),設置好過濾條件後,dw_control.filter()。兩個函數配合使用。
至於返回值,返回值為整型,如果返回1,表示此函數成功執行,如果返回-1表示執行過程中出現錯誤。
⑹ 過濾器Filter
過濾器是 Servlet 的高級特性之一,是實現了 Filter 介面的 Java。 過濾器位於瀏覽器與伺服器端之間,充當濾網的作用,過濾或處理一些不恰當的請求 。
過濾器的用處: 過濾敏感字元串、避免中文亂碼、許可權驗證(規定只帶有Session或Cookie的用戶才能訪問)等等;
所有實現了 Filter 介面的類都稱為過濾器。過濾器必須實現 Filter 下的三個方法:
其中, doFilter() 方法有三個參數 ServletRequest、ServletResponse 和 FilterChain,FilterChain 參數用於調用後續的過濾器,如果不存在過濾器,則訪問目標資源;
web.xml中配置
應用順序是指 根據請求地址執行對應的過濾器的順序 。執行攔截一個請求的過濾器是根據 web.xml中 <filter-mapping> 順序從上往下執行,而且是嵌套執行的。
一個請求中,如果需要經過多個過濾器,其請求和響應的過程如下圖所示
⑺ DAX從入門到精通 3-4-1 了解filter函數
filter函數很簡單:傳入一個表格,然後返回一個和原來列相同的表格,但是只會保留符合條件的行。
filter的語法如下:
filter函數對table進行迭代,每行都會判斷是否符合條件,然後返回布爾值。當條件為true的時候,filter返回該行,否則跳過。
注意:
從邏輯角度出發,filter函數對table表每行執行條件判斷。但是DAX內部在執行判斷的時候,會使用優化的處理方式,會使用對列去重的方式來減少判斷的數量。判斷的數據,實際上是等於filter函數處理表的粒度。這個粒度情況決定的了filter函數的性能,這個也是一個DAX優化的一個重要點。
例如,下面這個查詢只選擇brand = "Fabrikam":
可以在filter函數內嵌套filter函數,因為可以使用一個表函數來作為filter的參數。filter首先執行的是最內部的filter,通常,嵌套兩個過濾器會產生相同的結果和使用AND函數中包含的邏輯條件的組合相同。也就是,下面的語句會得到相同的結果:
但是,這兩個公式在table表含有非常多行或者非常復雜的時候,性能會有很大的差距。例如下面這個查詢,返回價格是成本三倍的fabrikm的產品。
這樣的查詢會把兩個條件都添加到proct表的所有行進行判斷。因此,你可以更改下,如果你有兩個條件,其中一個運行更快且更容易,你可以使用filter的嵌套形式,先處理這個過濾條件。例如。下面的查詢,先過濾了price和cost,然後再過濾brand = 『Fabrikam』,最終達成結果。
如果你調整一下順序,那麼執行的順序也調整了。如下的先過濾了『Fabrikam』,然後再過濾price和cost。
這點對於DAX表達式的優化非常有用。你可以選擇先運行更高效的過濾條件。但是,在沒有完全掌握上下文的時候,不要開始使用這種方法來優化語句。在第16章中,我們會深入的討論這個優化。這個案例的作用只是讓你意識到嵌套時候的運算順序。
劃重點:
通常情況下,對於嵌套的函數,順序總是從最內部開始然後向外到最外部。但是calculate和calculatetable不同,這個是因為對於參數的特殊評估條件。很多情況下,我們會在相似的情況下使用filter和calculatetable函數,使用的時候我們要注意它們的區別。
⑻ 特徵選擇的Filter過濾法
1.1 當數據預處理完成之後,接下來就是特徵工程部分,特徵工程包括了特徵的提取,特徵創造,特徵選擇。
特徵提取(feature extraction):從文字、圖像、聲音等其他非結構化數據只能怪提取新信息作為特徵,比如說從淘寶的商品名稱中提取產品類別,產品顏色,是否是網上產品等。
特徵創造(feature creation):把現有的特徵進行組合,或是相互計算得到新的特徵。比如說我們有一列特徵是速度,一列特徵距離,通過兩特徵相除,創造新特徵:通過距離所花的時間。
特徵選擇(feature selection):從所有的特徵中選擇出有意義的,對模型有幫助的特徵,避免將所有特徵都導入模型中去訓練。
下面只講特徵選擇,特徵選擇有四種方法:過濾法,嵌入法,包裝法,和降維演算法。
1.2 Filter過濾法
過濾法通常用作預處理的步驟,特徵選擇完全獨立於任何的機器學習演算法,它是根據各種統計檢驗中的分數以及相關性的各項指標來選擇特徵的。
1.3 VarianceThreshold
VarianceThreshold是通過特徵本身的方差來篩選特徵的類。比如一個特徵本身的方差很小,就表示樣本在這個特徵上基本沒有差異,可能特徵中的大多數值都一樣,甚至整個特徵的取值都相同,那這個特徵對於樣本區分沒有什麼作用,所以 無論接下來的特徵工程要做什麼,都要優先消除方差為0的特徵 。VarianceThreshold重要參數threshold,表示方差的閾值,表示舍棄所有方差小於threshold的特徵,不填默認為0,即刪除所有記錄都相同的特徵。
可以看見,已經刪除了方差為0的特徵,但是依然剩390多個特徵,明顯還需要進一步的特徵選擇,如果我們知道我們需要多少個特徵,方差也可以幫助我們將特徵選擇一步到位。比如說,我們希望留下一半的特徵,那可以設定一個讓特徵總數減半的方差閾值,只要找到特徵方差的中位數,再將這個中位數作為參數threshold的值輸入就好了
使用的方差閾值是特徵方差的中位數,因此屬於閾值比較大,過濾掉的特徵比較多的情況。我們可以觀察到,如果在過濾掉一半特徵之後,模型的精確度上升了。這說明被我們過濾掉的特徵在當前隨機模式(random_state = 0)下大部分是噪音。那我們就可以保留這個去掉了一半特徵的數據,來為之後的特徵選擇做准備。當然,如果過濾之後模型的效果反而變差了,我們就可以認為,被我們過濾掉的特徵中有很多都有有效特徵,那我們就放棄過濾,使用其他手段來進行特徵選擇。
1.4 方差過濾對模型的影響
最近鄰演算法KNN,單棵決策樹,支持向量機SVM,神經網路,回歸演算法,都需要遍歷特徵或升維來進行運算,所以它們本身的運算量就很大,需要的時間就很長,因此方差過濾這樣的特徵選擇對他們來說就尤為重要。但對於不需要遍歷特徵的演算法,比如隨機森林,它隨機選取特徵進行分枝,本身運算就非常快速,因此特徵選擇對它來說效果平平。這其實很容易理解,無論過濾法如何降低特徵的數量,隨機森林也只會選取固定數量的特徵來建模;而最近鄰演算法就不同了,特徵越少,距離計算的維度就越少,模型明顯會隨著特徵的減少變得輕量。因此,過濾法的主要對象是:需要遍歷特徵或升維的演算法,而過濾法的主要目的是:在維持演算法表現的前提下,幫助演算法降低計算成本。
1.5 過濾法對隨機森林無效,卻對樹模型有效?
從演算法原理上來說,傳統決策樹需要遍歷所有特徵,計算不純度後進行分枝,而隨機森林卻是隨機選擇特徵進行計算和分枝,因此隨機森林的運算更快,過濾法對隨機森林無用,對決策樹卻有用。在sklearn中,決策樹和隨機森林都是隨機選擇特徵進行分枝,但決策樹在建模過程中隨機抽取的特徵數目卻遠遠超過隨機森林當中每棵樹隨機抽取的特徵數目(比如說對於這個400維的數據,隨機森林每棵樹只會抽取10~20個特徵,而決策樹可能會抽取100~200個特徵),因此,過濾法對隨機森林無用,卻對決策樹有用也因此,在sklearn中,隨機森林中的每棵樹都比單獨的一棵決策樹簡單得多,高維數據下的隨機森林的計算比決策樹快很多。
⑼ 如何創建過濾器Filter
建立一個過濾器涉及下列五個步驟: 1、建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清楚。 2、在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。 3、調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。 4、對相應的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。 5、禁用激活器servlet。防止用戶利用預設servlet URL繞過過濾器設置。doFilter方法: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException{HttpServletRequest req = (HttpServletRequest)request; System.out.println(req.getRemoteHost() + " tried to access " +req.getRequestURL() +" on " + new Date() + "."); chain.doFilter(request,response); }在web.xml中進行部署 分別是:filter和filter-mapping。filter元素向系統注冊一個過濾對象,filter-mapping元素指定該過濾對象所應用的URL。 1.filter元素 filter元素位於部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。filter元素具有如下六個可能的子元素: :icon 這是一個可選的元素,它聲明IDE能夠使用的一個圖象文件。 :filter-name 這是一個必需的元素,它給過濾器分配一個選定的名字。 :display-name 這是一個可選的元素,它給出IDE使用的短名稱。 :description 這也是一個可選的元素,它給出IDE的信息,提供文本文檔。 :filter-class 這是一個必需的元素,它指定過濾器實現類的完全限定名。 :init-param 這是一個可選的元素,它定義可利用FilterConfig的getInitParameter方法讀取的初始化參數。單個過濾器元素可包含多個init-param元素。2.filter-mapping元素 filter-mapping元素位於web.xml文件中filter元素之後serlvet元素之前。它包含如下三個可能的子元素:: :filter-name 這個必需的元素必須與用filter元素聲明時給予過濾器的名稱相匹配。 :url-pattern 此元素聲明一個以斜杠(/)開始的模式,它指定過濾器應用的URL。所有filter-mapping元素中必須提供url-pattern或servlet-name。但不能對單個filter-mapping元素提供多個url-pattern元素項。如果希望過濾器適用於多個模式,可重復整個filter-mapping元素。 :servlet-name 此元素給出一個名稱,此名稱必須與利用servlet元素給予servlet或JSP頁面的名稱相匹配。不能給單個filter-mapping元素提供多個servlet-name元素項。
⑽ java過濾非法字元的filter
filter代碼在pujia12345提供的代碼上改的;
jsp頁面的編碼你設成你自己的,我用的是-8。
input.jsp輸入後,正常跳轉到handle.jsp,而禁詞已經被過濾。
filter:
package test;
import java.io.*;
import javax.servlet.*;
import java.util.*;
public class MyFilter implements Filter
{
private List<String> unString;
public void init(FilterConfig filterConfig) throws ServletException
{
unString = new ArrayList<String>();
unString.add("日");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
String content = request.getParameter("content");//需要過濾的參數
if(content!=null){
for (int i = 0; i < unString.size(); i++)
{
String strIllegal = unString.get(i);
if (content.indexOf(strIllegal) >= 0)
{
content = content.replaceAll(strIllegal, "");//非法字元替換成空
}
request.setAttribute("content", content);//為request設置屬性保存修改後的值
}
}
chain.doFilter(request, response);
}
public void destroy()
{
//System.out.println("過濾器銷毀");
}
}
//---------------------------//
web.xml:
<filter>
<filter-name>myfilter</filter-name>
<filter-class>test.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//---------------------------//
輸入頁面input.jsp:
<%@page contentType="text/html;charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>input.jsp</title>
</head>
<body>
<form action="handle.jsp" method="post">
<input type="text" name="content" />
<input type="submit" value=" 提交 " />
</form>
</body>
</html>
//---------------------------//
input提交的頁面handle.jsp:
<%@page contentType="text/html;charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> handle.jsp </title>
</head>
<body>
<%
String content = (String)request.getAttribute("content");
out.println(content);
%>
</body>
</html>