當前位置:首頁 » 凈水方式 » androidfilter過濾器

androidfilter過濾器

發布時間: 2021-01-12 02:36:31

Ⅰ java 中的過濾器filter 都有什麼作用

過濾器顧名思義就是進行過濾的,可以實現代碼的定向執行和預處理。
通俗點說專法屬filter相當於加油站,request是條路,response是條路,目的地是servlet,這個加油站設在什麼地方對什麼數據操作可以由你來控制。
備註:過濾器可以再請求和響應之前做一部分預處理,有效的過濾掉不需要的內容,而且過濾器可以被復用,節省了大量的復用代碼,提高了java的代碼執行效率

Ⅱ filter過濾器如何獲得值

按你的配置,<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

Filter機制就是過濾所有的請求,你的loginservlet請求處理前,肯定先經過過濾器版的處理,str當然輸出時權null。
解決方法:
修改url-pattern,不攔截loginservlet;
或者:重寫doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2)方法,
在if--else邏輯中,注意在合適的位置調用 arg2.doFilter(arg0, arg1)方法允許loginservlet請求正常執行,過濾其他請求。

Ⅲ java過濾器中實現Filter的類怎麼寫

web.xml配置文件
SessionFilter
com.qhit.system.tools.SessionFilter
SessionFilter
/*
java類
public class ConnFilter extends HttpServlet implements Filter {
public void doFilter(ServletRequest request,ServletResponse response,
FilterChain filterchain) throws IOException,ServletException
{
try
{
filterchain.doFilter(request,response);此處為過濾鏈 理解為請求通過該過濾繼續前行 可在內此處加上判斷 如果容TRUE執行該語句 有過FALSE 則直接跳轉其他頁面 常用於判斷是否有許可權進入某頁面
}
finally
{
DBUtils.close();
}
}

Ⅳ android eclipse怎麼創建過濾器,也就是create filter,就是傳說各種綠色的「+」。如圖

在你的logcat右邊點擊1會出現左邊的filterView裡面有就加號了

Ⅳ Filter過濾器中指定過濾內容怎麼配置

servlet的這個 是不是需要把每一個的servlet都寫進
「servlet位置」? 回答: 每個servlet都要在web.xml里配置,難道版有沒配的? 追問: 有~~ 每個都有權 就是覺得要是每個都寫一邊那麼會不會造成代碼冗餘
假設servlet的配置
/LoginServlet
/RegisterServlet
加入到過濾器的中
那個後綴的看起來還不錯 具體能給個寫法看寫么? 回答: 比如servlet配置後綴
/LoginServlet.jspx
/RegisterServlet.jspx那filter/*.jspx再如servlet配置路徑

Ⅵ Filter過濾器中指定過濾內容怎麼配置

你的問題好像是只需要Filter處理jsp的請求,只要改web.xml里Filter配置就可以。url-pattern別給/*,給/.jsp,如果回需要過濾多種文件答請求,可以再增加filter-mapping,每個的url-pattern對應一種文件。
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>

Ⅶ Filter過濾器中指定過濾內容怎麼配置

</filter-mapping> 補充: 如果是過濾servlet,需要把所有servlet的url-pattern設置成相同的後綴或路徑,然後用Filter用統一的parttern過濾。 追問: servlet的這個 是不是需要把每一個的servlet都寫進
<url-pattern>「servlet位置」</url-pattern>? 回答: 每個servlet都要在web.xml里配置,難道有沒配的? 追問: 有~~ 每個都有 就是覺得要是每個都寫一邊那麼會不會造成代碼冗餘
假設servlet的<url-pattern>配置
<url-pattern>/LoginServlet</url-pattern>
<url-pattern>/RegisterServlet</url-pattern>
加入到過濾器的<url-pattern>中
那個後綴的看起來還不錯 具體能給個寫法看寫么? 回答: 比如servlet配置後綴
<url-pattern>/LoginServlet.jspx</url-pattern>
<url-pattern>/RegisterServlet.jspx</url-pattern>那filter<url-pattern>/*.jspx</url-pattern>
再如servlet配置路徑

Ⅷ filter過濾器 和攔截器的區別

1、首先要明確什麼是攔截器、什麼是過濾器
1.1 什麼是攔截器:
攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實現策略。
在Webwork的中文文檔的解釋為——攔截器是動態攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行。同時也是提供了一種可以提取action中可重用的部分的方式。
談到攔截器,還有一個詞大家應該知道——攔截器鏈(Interceptor Chain,在Struts 2中稱為攔截器棧 Interceptor Stack)。攔截器鏈就是將攔截器按一定的順序聯結成一條鏈。在訪問被攔截的方法或欄位時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。
1.2. 攔截器的實現原理:
大部分時候,攔截器方法都是通過代理的方式來調用的。Struts 2的攔截器實現相對簡單。當請求到達Struts 2的ServletDispatcher時,Struts 2會查找配置文件,並根據其配置實例化相對的攔截器對象,然後串成一個列表(list),最後一個一個地調用列表中的攔截器。
1.3 什麼是過濾器
過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。在這之後,過濾器可以作如下的選擇:
①以常規的方式調用資源(即,調用servlet或JSP頁面)。
②利用修改過的請求信息調用資源。
③調用資源,但在發送響應到客戶機前對其進行修改。
④阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。

1.4 Servlet過濾器的基本原理
在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈里逐個處理,直到請求發送到目標為止。例如,某網站里有提交「修改的注冊信息」的網頁,當用戶填寫完修改信息並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的數據進行統一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈里進行處理。當過濾器處理成功後,把提交的數據發送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

2、攔截器與過濾器的區別 :
1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

攔截器的代碼實現(以struts2為例):
1、在xml文件中如何定義攔截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎麼遍別寫自定義攔截器

public class FilterIPActionInterceptor extends AbstractInterceptor
{
/** 日誌控制. */
private final Log log = LogFactory.getLog(getClass());

/**
* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
*/
@Override
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation invocation) throws Exception
{
String result = null;
// 獲得當前方法名.
String methodName = invocation.getInvocationContext().getName();
String currIp = null;
try
{
if (invocation.getAction() instanceof PortletAction)
{
PortletAction action = (PortletAction) invocation.getAction();
currIp = action.getRequest().getRemoteAddr();
}
String ip = ApplicationResource.getHotValue("ALLOW_CACHE_IP");

if (StringUtils.isBlank(ip) || StringUtils.isBlank(currIp))
{
log.error("允許刷新的IP不存在或當前請求的IP非法.");
throw new NoAllowIPException();
}
else
{
String[] ips = ip.split(",");
boolean errorIp = true;
for (String s : ips)
{
if (s.equals(currIp))
errorIp = false;
}
// 判斷IP
if (errorIp)
throw new NoAllowIPException();
}
result = invocation.invoke();//調用被攔截的方法
}
catch (Exception e)
{
log.error("異常類名:" + invocation.getAction().getClass());
log.error("異常方法:" + methodName, e);
throw e;
}

return result;
}

}

3、怎麼編寫過濾器

1、在web.xml裡面配置自定義的攔截器
<filter>
<filter-name>Redirect Filter</filter-name>
<filter-class>com.xx.filter.RedirectFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>Redirect Filter</filter-name>
<url-pattern>/xx/xx/*</url-pattern>

</filter-mapping>

2、如何編寫自定義的攔截器
public class RedirectFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 獲取URL
Long startTime = null;
if (log.isDebugEnabled())
{
startTime = System.currentTimeMillis();
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
String url = httpRequest.getRequestURL().toString();
if (url == null || url.trim().length() == 0) {
return;
}
if (url.indexOf(luceneCreateMapping) != -1
|| url.indexOf(luceneSearchMapping) != -1) {
doFilterForxxx(request, response, url);
} else {
doxxxx(request, response, url);
}
if (log.isDebugEnabled())
{
long endTime = System.currentTimeMillis();
Thread currentThread = Thread.currentThread();
String threadName = currentThread.getName();
log.debug("[" + threadName + "]" + "< "
+ this.getClass().getName() + " " + url + " "
+ (endTime - startTime) + " ms");
}
// 激活下一個Filter
filterChain.doFilter(request, response);

}
}

Ⅸ filter過濾器需要調用嗎

在AngularJS的世界裡,filter提供了一種格式化數據的方法,Angular也提供給我們了很多內建的過濾器,並且建立自定義過濾器也是相當的簡單

在HTML的模板綁定{{}}中,我們使用 | 來調用過濾器,比如,我們想讓字元串全部大寫字元顯示:
{{ name | uppercase }}

當然了,我們也可以在JavaScript中使用$filter服務來調用過濾器,還拿字元串大寫來舉例:
app.controller('DemoController', ['$scope', '$filter', function($scope, $filter) { $scope.name = $filter('lowercase')('Ari'); }]);
如何傳遞參數到filter呢?只需要把參數放在filter之後,中間加個冒號(如果有多個參數要傳遞,在每個參數後加上冒號)比如,數字過濾器可以幫助我們限制數字的位數,如果想顯示兩位小數,加上number:2就可以了
{{ 123.456789 | number:2 }}
filter過濾器主要用來過濾一個數組數據並返回一個包含子數組數據的新數組。

比如,在客戶端搜索時,我們可以快速的從數組中過濾出我們想要的結果。

這個filter方法接收一個string,object,或者function參數用來選擇/移除數組元素。

下滿我們具體來看:

一,內置的過濾器
1,uppercase,lowercase大小轉換
{{ "lower cap string" | uppercase }} //結果:LOWER CAP STRING {{ "TANK is GOOD" | lowercase }} //結果:tank is good
|這里的豎線是一種管道功能,如果對linux比較熟悉的話,這塊的|根linux的管道功能,基本是一樣的2,json格式化
{{ {foo: "bar", baz: 23} | json }} //結果:{ "foo": "bar", "baz": 23 }
注意:bza沒格式前是沒有雙引號的,格式化後就轉換成了json數據了。

3,date格式化

mysql時間戳 ng-bind="message.time * 1000 | date:'yyyy-mm-dd'"

{{ 1304375948024 | date:'medium'}} //May 03, 2011 06:39:08 PM {{ 1304375948024 | date }} //結果:May 3, 2011 {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }} //結果:05/03/2011 @ 6:39AM {{ 1304375948024 | date:"yyyy-MM-dd hh:mm:ss" }} //結果:2011-05-03 06:39:08
4,number格式化
{{ 1.234567 | number:1 }} //結果:1.2 {{ 1234567 | number }} //結果:1,234,567
5,currency貨幣格式化
{{ 250 | currency }} //結果:$250.00 {{ 250 | currency:"RMB ¥ " }} //結果:RMB ¥ 250.00
6,filter查找 只能查value,不能查key
{{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | filter:'s'}} //查找含有有s的行 //上例結果:[{"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}] {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | filter:{'name':'ip'} }} //查找name like ip的行 //上例結果:[{"age":20,"id":10,"name":"iphone"}] $filter('number')(30000, 2); var jsonString = $filter('json')({"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}])
7,limitTo字元串,對像的截取
{{ "i love tank" | limitTo:6 }} //結果:i love {{ "i love tank" | limitTo:-4 }} //結果:tank {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | limitTo:1 }} //結果:[{"age":20,"id":10,"name":"iphone"}]
8,orderBy對像排序
{{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:'id':true }} //根id降序排 {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:'id' }} //根據id升序排 {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:['-age','name'] }}
二,自定filter功能
filter的自定義方式也很簡單,使用mole的filter方法,返回一個函數,該函數接收輸入值,並返回處理後的結果。
app.filter('過濾器名稱',function(){ return function(需要過濾的對象,過濾器參數1,過濾器參數2,...){ //...做一些事情 return 處理後的對象; } });
我找了一個基本angularjs的mvc框架,phonecat,自定義filter也是在這基礎寫的,這個框架挺好用的。
filters.js添加一個mole
angular.mole('tanktest', []).filter('tankreplace', function() { return function(input) { return input.replace(/tank/, "=====") }; });
html中調用
{{ "TANK is GOOD" | lowercase |tankreplace}} //結果:===== is good
注意:| lowercase |tankreplace管道命令可以有多個
yourApp.filter('orderObjectBy', function() { return function(items, field, reverse) { var filtered = []; angular.forEach(items, function(item) { filtered.push(item); }); filtered.sort(function (a, b) { return (a[field] > b[field] ? 1 : -1); }); if(reverse) filtered.reverse(); return filtered; }; });
該過濾器將對象轉換成標準的數組並把它通過您指定欄位排序。您可以使用orderObjectBy過濾器酷似ORDERBY,包括欄位名後一個布爾值,以指定的順序是否應該得到扭轉。換句話說,假的是升序,真正的下降。html調用
<li ng-repeat="item in items | orderObjectBy:'color':true">{{ item.color }}</li>

排序搜索
<input type="text" ng-model="search" class="form-control" placeholder="Search"> <thead> <tr> <!-- ng-class="{dropup:true}" --> <th ng-click="changeOrder('id')" ng-class="{dropup: order === ''}"> 產品編號 <span ng-class="{orderColor: orderType === 'id'}" class="caret"></span> </th> <th ng-click="changeOrder('name')" ng-class="{dropup: order === ''}"> 產品名稱 <span ng-class="{orderColor: orderType === 'name'}" class="caret"></span> </th> <th ng-click="changeOrder('price')" ng-class="{dropup: order === ''}"> 產品價格 <span ng-class="{orderColor: orderType === 'price'}" class="caret"></span> </th> </tr> </thead> <tbody> <tr ng-repeat="item in proctData | filter: search | orderBy:order + orderType"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.price | currency: '¥'}}</td> </tr> </tbody>
angularjs
//默認排序欄位 $scope.orderType = 'id'; $scope.order = '-'; $scope.changeOrder = function(type) { console.log(type); $scope.orderType = type; if ($scope.order === '') { $scope.order = '-'; }else{ $scope.order = ''; } }

Ⅹ Java中過濾器Filter的父類是什麼

Filter是javax.servlet.Filter他是個介面,沒有父類。 實現了Filter要實現其中的init(),doFilter()和destroy()三個方法,分別對應專初屬始化設置操作,過濾行為,及清除過濾器操作。

使用過濾器可以附加到特定的JSP頁面或者servlet上,這個可以在web.xml中進行配置。

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239