導航:首頁 > 濾芯資訊 > jspfilter濾芯怎麼用

jspfilter濾芯怎麼用

發布時間:2025-01-24 15:23:10

1. jsp/servlet過濾器和struts2攔截器的有什麼區別

攔截器和過濾器的區別:

1、攔截器是基於java的反射機制的,而過濾器是基於函數回調

2、過濾器依賴與servlet容器,而攔截器不依賴與servlet容器

3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用

4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能

5、在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

攔截器
:是在面向切面編程的就是在你的service或者一個方法前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。

下面通過實例來看一下過濾器和攔截器的區別:

使用攔截器進行/admin 目錄下jsp頁面的過濾

[html] view plain

<package name="newsDemo"
extends="struts-default"

namespace="/admin">

<interceptors>

<interceptor name="auth"
class="com.test.news.util.AccessInterceptor" />

<interceptor-stack name="authStack">

<interceptor-ref
name="auth" />

</interceptor-stack>

</interceptors>

<!-- action -->

<action name="newsAdminView!*" class="newsAction"

method="{1}">

<interceptor-ref
name="defaultStack"/>

<interceptor-ref
name="authStack">

</interceptor-ref>

下面是我實現的Interceptor class:

[java] view plain

package com.test.news.util;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

import
com.opensymphony.xwork2.ActionInvocation;

import
com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import
com.test.news.action.AdminLoginAction;

/**

*
@author chaoyin

*/

public class AccessInterceptor
extends AbstractInterceptor {

private static final long
serialVersionUID = -4291195782860785705L;

@Override

public String intercept(ActionInvocation actionInvocation) throws
Exception {

ActionContext actionContext =
actionInvocation.getInvocationContext();

Map session =
actionContext.getSession();

//except login action

Object action = actionInvocation.getAction();

if (action
instanceof AdminLoginAction) {

return
actionInvocation.invoke();

}

//check
session

if(session.get("user")==null ){

return
"logout";

}

return actionInvocation.invoke();//go
on

}

}

過濾器:是在javaweb中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的
action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者
struts的action前統一設置字元集,或者去除掉一些非法字元。

使用過濾器進行/admin
目錄下jsp頁面的過濾,首先在web.xml進行過濾器配置:

[html] view plain

<filter>

<filter-name>access
filter</filter-name>

<filter-class>

com.test.news.util.AccessFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>access filter</filter-name>

<url-pattern>/admin/*</url-pattern>

</filter-mapping>

下面是過濾的實現類:

[java] view
plain

package com.test.news.util;

import
java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import
javax.servlet.FilterConfig;

import
javax.servlet.ServletException;

import
javax.servlet.ServletRequest;

import
javax.servlet.ServletResponse;

import
javax.servlet.http.HttpServletRequest;

import
javax.servlet.http.HttpServletResponse;

import
javax.servlet.http.HttpSession;

public class AccessFilter
implements Filter {

/**

* @author chaoyin

*/

public void destroy() {

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain filterChain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;

HttpServletResponse response = (HttpServletResponse)arg1;

HttpSession session = request.getSession();

if(session.getAttribute("user")== null &&
request.getRequestURI()。indexOf("login.jsp")==-1 ){

response.sendRedirect("login.jsp");

return ;

}

filterChain.doFilter(arg0, arg1);

}

public void init(FilterConfig arg0) throws ServletException {

}

}
摘自網路--

2. filter過濾器配置如何不過濾一些頁面

直接添加多個文件映射啊,為每個需要進行過濾的文件都寫個映射標簽

3. filter跟攔截器的區別和執行順序

filter和攔截器的區別和執行順序

1.Filter過濾器只過濾jsp文件不過濾action請求解決方案

解決辦法:在web.xml中將filter的配置放在struts2配置的前面。

2.攔截器與Filter的區別
Spring的攔截器與Servlet的Filter有相似之處,比如二者都是AOP編程思想的體現,都能實現許可權檢查、日誌記錄等。不同的是:

使用范圍不同:Filter是Servlet規范規定的,只能用於Web程序中。而攔截器既可以用於Web程序,也可以用於Application、Swing程序中。

規范不同:Filter是在Servlet規范中定義的,是Servlet容器支持的。而攔截器是在Spring容器內的,是Spring框架支持的。

使用的資源不同:同其他的代碼塊一樣,攔截器也是一個Spring的組件,歸Spring管理,配置在Spring文件中,因此能使用Spring里的任何資源、對象,例如Service對象、數據源、事務管理等,通過IoC注入到攔截器即可;而Filter則不能。

深度不同:Filter在只在Servlet前後起作用。而攔截器能夠深入到方法前後、異常拋出前後等,因此攔截器的使用具有更大的彈性。所以在Spring構架的程序中,要優先使用攔截器。

實際上Filter和Servlet極其相似,區別只是Filter不能直接對用戶生成響應。實際上Filter里doFilter()方法里的代碼就是從多個Servlet的service()方法里抽取的通用代碼,通過使用Filter可以實現更好的復用。
filter是一個可以復用的代碼片段,可以用來轉換HTTP請求、響應和頭信息。Filter不像Servlet,它不能產生一個請求或者響 應,它只是修改對某一資源的請求,或者修改從某一的響應。
JSR中說明的是,按照多個匹配的Filter,是按照其在web.xml中配置的順序 來執行的。

所以這也就是,把自己的Filter或者其他的Filter(比如UrlRewrite的Filter)放在Struts的 DispatcherFilter的前面的原因。因為,它們需要在請求被Struts2框架處理之前,做一些前置的工作。

當Filter被調用,並且進入了Struts2的DispatcherFilter中 後,Struts2會按照在Action中配置的Interceptor Stack中的Interceptor的順序,來調用Interceptor。

4. 如何創建過濾器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元素項。

5. web配置問題 過濾所有的jsp文件該怎麼搞啊

寫個過濾器(創建一個類實現Filter介面)
在web.xml中配置如下
添加以下代碼
<filter>
<filter-name>encoding</filter-name> //名字任意
<filter-class>全類路徑</filter-class> //實現filter介面的類的路徑
</filter>
<filter-mapping>
<filter-name>encoding</filter-name> //與上面的名字匹配
<url-pattern>*.jsp</url-pattern> //*.jsp表示任意jsp文件
</filter-mapping>

6. 在Jsp頁面或者Filter過濾器中怎麼過濾臟話

不管是JSP還是Servlet,其Filter過濾器都是一個東西。因為JSP的本質就是Servlet,只不過是被包裝了一下,成了標准,讓Web伺服器都遵循這個標准來解析編譯執行而已。 以下演示的就是在JSP中如何過濾臟話(Servlet的處理方式也差不多): 一、 過濾器類 package com.filter;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class WordsFilter implements Filter { private Map< String, String>map = new HashMap< String, String>(); //過濾器的初始化 public void init(FilterConfig config) throws ServletException { String filePath = config.getInitParameter("filePath");//從配置文件中取得文件的相對路徑 ServletContext context = config.getServletContext(); String realPath = context.getRealPath(filePath);//根據相對路徑取得絕對路徑 try { FileReader freader = new FileReader(realPath);//根據絕對路徑,通過文件流來讀取文件 BufferedReader br = new BufferedReader(freader); String line = null; while((line=br.readLine()) != null) { String []str = line.split("="); map.put(str[0], str[1]); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //亂碼處理 request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); HttpServletRequest HttpReq = (HttpServletRequest) request; HttpReqWrapper hrw = new HttpReqWrapper(HttpReq); hrw.setMap(map); chain.doFilter(hrw, response); } public void destroy() { System.out.println("--過濾器的銷毀--"); } }二、請求包裝器
package com.filter;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class HttpReqWrapper extends HttpServletRequestWrapper { private Map< String,String> map = null; public HttpReqWrapper(HttpServletRequest request) { super(request); } //過濾臟話 public String replace(String str){ StringBuffer sb = new StringBuffer(str); Setkeys = this.getMap().keySet(); Iteratorit = keys.iterator(); String ss = null; while(it.hasNext()) { String key = it.next(); int index = sb.indexOf(key); if(index != -1) { if(key != null) ss = key; sb.replace(index, index+key.length(), this.getMap().get(key)); } } if(ss!=null) { if (sb.toString().indexOf(ss) == -1) { return sb.toString(); } else { return replace(sb.toString()); } } return sb.toString(); }// 重寫getParameter()方法 public String getParameter(String str) { if(str.equals("pager.offset")){ return super.getParameter(str); }else{ String content = super.getParameter(str); return replace(content); } } public Map< String,String> getMap() { return map; } public void setMap(Map< String,String> map) { this.map = map; } }

三、臟話列表word.txt媽的=**
老子=**
狗日的=***
我日=我*
TMD=***
我靠=我*
賤人=**
滾=*
操=*

四、web.xml中配置過濾器
<filter>
<filter-name>WordsFilter</filter-name>
<filter-class>com.filter.WordsFilter</filter-class>
<init-param>
<param-name>filePath</param-name>
<param-value>/WEB-INF/word.txt</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>WordsFilter</filter-name>
<url-pattern>/getNote.jsp</url-pattern>
</filter-mapping>

閱讀全文

與jspfilter濾芯怎麼用相關的資料

熱點內容
凈水廠如何運營 瀏覽:832
反滲透膜沖洗參數 瀏覽:230
阿里斯頓純凈水管子如何安裝 瀏覽:102
韓樂凈水器濾芯全餐多少錢 瀏覽:385
污水處理閥價格多少 瀏覽:141
魚缸玻璃上的白色水垢 瀏覽:81
如何把酸銅廢水提煉 瀏覽:127
飲水機怎麼用不被燙 瀏覽:895
熱水壺燒自來水會有水垢么 瀏覽:970
怎麼把臟水過濾成清水 瀏覽:291
神經細胞動作電位的去極相通透性最大的離子 瀏覽:820
醋除水垢600字 瀏覽:216
凈水廠一套房子多少錢 瀏覽:220
電鍍廠廢水如何處理 瀏覽:287
生活污水COD做到15 瀏覽:32
養豬廢水處理工藝 瀏覽:768
沁園九陽超濾凈水器怎麼樣 瀏覽:807
昆明螺螄灣哪裡有凈水器用管賣 瀏覽:148
小米凈化器小孔怎麼清洗 瀏覽:299
做完豆腐的廢水叫什麼 瀏覽:950