jsp filter 過濾器功能與簡單用法示例_JSP編程

來源:腳本之家  責任編輯:小易  

不管是JSP還是Servlet,其Filter過濾器都是一個東西。因為JSP的本質就是Servlet,只不過是被包裝了一下,成了標準,讓Web服務器都遵循這個標準來解析編譯執行而已。以下演示的就是在JSP中如何過濾臟話(Servlet的處理方式也差不多):一、過濾器類 packagecom.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>map=new HashMap,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("-過濾器的銷毀-");} }二、請求包裝器packagecom.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>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>getMap(){ return map;} public void setMap(Map,String>map){ this.map=map;} }三、臟話列表word.txt媽的=*老子=*狗日的=*我日=我*TMD=*我靠=我*賤人=*滾=*操=*四、web.xml中配置過濾器WordsFiltercom.filter.WordsFilter</filter-class>filePathWEB-INF/word.txtWordsFiltergetNote.jspwww.13333515.buzz防采集請勿采集本網。

本文實例講述了jsp filter 過濾器功能與簡單用法。分享給大家供大家參考,具體如下:

注意問題:在學習用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文亂碼,而在提交的jsp頁面中卻用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的

過濾器的作用是什么?

過濾器是針對路徑過濾 設置想要過濾路徑就可以了 其實更推薦使用spring攔截器

過濾器可以動態地攔截請求和響應,以變換或使用包含在請求或響應中的信息。

一般我的方法是 eccludedPages是個List,存放著比如index.jsp,error.jsp等不需要過濾的頁面 if!excludedPages.contains(uri)){ } } filterChain.doFilter(request,response);

可以將一個或多個過濾器附加到一個 Servlet 或一組 Servlet。過濾器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 頁面。 在客戶端的請求訪問后端資源之前,攔截這些請求。 在服務器的響應發送回客戶端之前,處理這些響應。

過濾器也是繼承于servlet 可通過表單提交方式,或url傳值,拿到文本框的值 public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException,

過濾器的實現要實現 java.servlet.Filter 這個接口類

Filter簡介 Filter也稱之為過濾器,它是Servlet技術中最實用的技術,Web開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet,靜態圖片文件或靜態 html 文件等進行攔截,

一個簡易的filter 類示例

package demo;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;public class DemoFilter implements Filter{ private String name=null; @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { arg0.setAttribute("name", "init text string : " + name); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { //獲得web.xml中filter init-param 中的配置 name = arg0.getInitParameter("name"); }}

僅僅只是寫好了這個過濾器類還不行。我們要在web.xml中聲明哪些請求需要過濾器的調用

web.xml

<!--聲明一個filter--> <filter> <!--filter的名稱--> <filter-name>demoFilter</filter-name> <!--filter 類--> <filter-class>demo.DemoFilter</filter-class> <!--該filter類需要的配置--> <init-param> <param-name>name</param-name> <param-value>my name is tanyong</param-value> </init-param> </filter> <!--為url-pattern 中相匹配的url鏈接 映射至相應的filter filter 通過 filter-name來識別--> <filter-mapping> <filter-name>demoFilter</filter-name> <!--匹配映射規則,我這里用的是所有請求都要在demoFilter filter 里面去兜晃一圈--> <url-pattern>/*</url-pattern> </filter-mapping>

希望本文所述對大家jsp程序設計有所幫助。

我來給你簡單的說一下吧:)首先要明確。Filter是JSP2.0里面的東西,顧名思義,也就是過濾器的意思和你說說如何用吧。要用Filter就得在web.xml中配置例:配置方法和配置普通的Servlet一樣的哦PrivFiltercom.myPriv.filter.PrivFilter</filter-class>PrivFilterresource/*com.myPriv.filter.PrivFilter是這個過濾器所在的位置。當然這個過濾器必須實現接口javax.servlet.Filter。然后就可以在過濾器這個接口方法中增加過濾條件了public void doFilter(ServletRequset request,ServletResponse response,FilterChain chain)thows ServletException,IOException{}然后你可以把過濾條件寫出來,寫在doFilter方法里面我這里寫一個簡單的例子:public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException {HttpServletRequest request=(HttpServletRequest)req;HttpServletResponse response=(HttpServletResponse)res;HttpSession session=request.getSession();ServletContext application=session.getServletContext();if(session.getAttribute("userSession")=null){response.sendRedirect("error/priv_error.jsp");return;}else{chain.doFilter(request,response);}}在上面的這個過濾方法中,如果session.getAttribute("userSession")=null)那就跳轉到錯誤頁面。如果不為空,則繼續所以chain.doFilter(request,response);的意思就是跳轉到下個頁面,明白了吧?如果還有不明白。可以留下你的問題還有忘了回答你的問題 了。java會在處理每一個Servlet時都走一次Filter的。所以你不必擔心你的過濾不起作用了而且chain.doFilter(request.response);是必須的。沒有他,程序就不會繼續了:)他是讓你的request和response繼續運行哦這個你就可接寫/*好了。它是說對哪些范圍起作里這個過濾器內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • 通過過濾器(filter)解決jsp的post和request中文亂碼問題
  • jsp過濾器filter配置過濾類型全部匯總
  • jsp 開發中過濾器filter設置編碼格式的實現方法
  • jsp使用servlet過濾器進行身份驗證的方法
  • jsp過濾器防止xss漏洞的實現方法(分享)
  • jsp使用過濾器防止sql注入的簡單實現
  • jsp實現登錄驗證的過濾器
  • jsp中過濾器選擇過濾器的寫法詳解
  • 詳解jsp中使用過濾器進行內容編碼的解決辦法
  • servlet+jsp實現過濾器 防止用戶未登錄訪問
  • jsp使用過濾器防止xss漏洞
  • jsp 中servlet的自己實現
  • jsp頁面實現文件上傳下載類代碼
  • ejb3.0之實體bean的繼承
  • java/jsp學習系列之八(改寫mysql翻頁例子)
  • jsp傳參 servlet接收中文亂碼問題的解決方法
  • 關于jsp中cookie丟失問題(詳解)
  • 詳解 spring注解的(list&map)特殊注入功能
  • struts2集成javamail發郵件示例詳解
  • 搭建ssh時的思考和遇到的幾個問題的解決方法
  • jsp分頁顯示的實例代碼
  • 不明白Filter過濾器怎么用,大家幫幫我
  • 在Jsp頁面或者Filter過濾器中怎么過濾臟話
  • jsp filter 過濾器怎么用
  • java jsp 中過濾器 filter 有什么功能
  • 如何配置Filter過濾器處理JSP中文亂碼
  • filter過濾器,怎樣可以配置成除某幾個jsp文
  • filter過濾器配置如何不過濾一些頁面
  • 如何在過濾器Filter.java中獲取jsp頁面文本框的值?
  • 過濾器實現的filter接口是哪個
  • JSP filter過濾器,怎樣可以配置成除某幾個jsp文件外,所有的jsp文件都過濾呢
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁jsp編程通過過濾器(filter)解決jsp的post和request中文亂碼問題jsp過濾器filter配置過濾類型全部匯總jsp 開發中過濾器filter設置編碼格式的實現方法jsp使用servlet過濾器進行身份驗證的方法jsp過濾器防止xss漏洞的實現方法(分享)jsp使用過濾器防止sql注入的簡單實現jsp實現登錄驗證的過濾器jsp中過濾器選擇過濾器的寫法詳解詳解jsp中使用過濾器進行內容編碼的解決辦法servlet+jsp實現過濾器 防止用戶未登錄訪問jsp使用過濾器防止xss漏洞jsp 中servlet的自己實現jsp頁面實現文件上傳下載類代碼ejb3.0之實體bean的繼承java/jsp學習系列之八(改寫mysql翻頁例子)jsp傳參 servlet接收中文亂碼問題的解決方法關于jsp中cookie丟失問題(詳解)詳解 spring注解的(list&map)特殊注入功能struts2集成javamail發郵件示例詳解搭建ssh時的思考和遇到的幾個問題的解決方法jsp分頁顯示的實例代碼jsp el表達式詳細介紹jsp下頁面跳轉的幾種方法小結jsp生成頁面驗證碼的方法[附代碼在jsp頁面如何獲得url參數spring mvc 框架搭建配置方法及詳jsp web.xml文件的作用及基本配置jsp自定義標簽taglib實現過程重點servlet+jsp實現圖片或文件的上傳將html頁改成jsp的兩種方式jsp 連接mysql配置與使用jdbctm 指南:入門7-callablestatementjsp 中response.setcontenttype()的作用及jsp中request的3個基礎實踐jsp內置對象:request和response的簡單介紹java數據庫存取技術在jsp中處理虛擬路徑javascript實現城市選擇控件的效果jsp實現屏蔽瀏覽器緩存的方法spring 整合 hibernate 時啟用二級緩存實java/jsp學習系列之五(jdbc-odbc翻頁例子
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果