この記事では、主にJavaでのフィルターフィルターの関連する使用法を研究しており、特定の実装コードは次のとおりです。
フィルターフィルターは、主にデータをバックエンドに渡すために使用されます。レベルは非常にシンプルなので、書かれたいくつかのコードを提供します。
1。ブラウザをキャッシュページではなく作成するフィルター
javax.servlet。*;インポートjavax.servlet.http.httpservletResponse;インポートjava.io.io.ioexception;/***ブラウザではなくブラウザを作成するために使用されるフィルター*/パブリッククラスのフォーセノキャシフター実装フィルター{public void dofilter(public reavest、vertrecedseplecensephersepherseplespectonseplecens relicte、vertrespencepence relicted request、vertreletrespencepher relictens relicte {((httpservletResponse)response).setheader( "cache-control"、 "no-cache"); ((httpservletResponse)response).setheader( "pragma"、 "no-cache"); ((httpservletresponse)response).setdateheader( "expires"、-1); filterchain.dofilter(リクエスト、応答); } public void destroy(){} public void init(filterconfig filterconfig)servletexception {}}2。ユーザーがログインしているかどうかを検出するフィルター
パブリッククラスCheckLoginFilterを実装している{Protected filterConfig filterconfig = null; private string redirecturl = null;プライベートリストnotcheckurllist = new ArrayList();プライベート文字列sessionkey = null; public void dofilter(servletrequest servletrequest、servletresponse servletResponse、filterchain filterchain)IoException、servletexception {httpservletrequest request =(httpservletrequest)servletrequest; httpservletResponse応答=(httpservletResponse)servletResponse; httpsession session = request.getSession(); if(sessionkey == null){filterchain.dofilter(request、response);戻る; } if((!checkrequesturiintnotfilterlist(request))&& session.getattribute(sessionkey)== null){respons.sendredirect(request.getContextPath() + redirecturl);戻る; } filterchain.dofilter(servletRequest、servletResponse); } public void Destroy(){notcheckurllist.clear(); } private boolean checkrequesturiitnotfilterlist(httpservletrequest request){string uri = request.getServletpath() +(request.getPathInfo()== null? "":request.getPathInfo()); notcheckurllist.contains(uri)を返します。 } public void init(filterconfig filterconfig)servletexception {this.filterconfig = filterconfig; redirecturl = filterconfig.getInitParameter( "redirecturl"); sessionKey = filterconfig.getInitParameter( "ChecksessionKey"); string notcheckurlliststr = filterconfig.getInitParameter( "notcheckurllist"); if(notcheckurlliststr!= null){stringtokenizer st = new StringTokenizer(notcheckurlliststr ";"); notcheckurllist.clear(); while(St.HasmoreTokens()){notcheckurllist.add(st.nexttoken()); }}}}}}3。文字エンコードフィルター
javax.servlet。*;インポートjava.io.ioexception;/***フィルターはHTTP要求文字エンコードを設定するために使用されるフィルター、フィルターパラメーターエンコードを介して使用するために使用されるキャラクターエンコードを指定します。 void dofilter(servletrequest servletrequest、servletresponse servletResponse、filterchain filterchain)IoException、servletexception {if(encoding!= null)servletrequest.setcharacterencoding(encoding); filterchain.dofilter(servletrequest、vertrequest、filtreconse) null; encoding = null;} public void init(filterconfig filterconfig)servletexception {this.filterconfig = filterconfig; this.encoding = filterconfig.getInitParameter( "encoding");}}4.ユーザーのアクセスオペレーターを記録します
パッケージcom.qwserv.itm.pfl.log.svr; Import java.io.ioexception; Import javax.servlet.filter; Import javax.servlet.filterchain; Import javax.servlet.filterconfig; Import Javax.Servlet.Servletexception; Javax.Servletelet; javax.servlet.servletResponse; Import java.text.simpledateformat; import javax.servlet.http.httpservletrequest; import com.qwserv.itm.api.pfl.sm.vo.person; import java.sql com.qwserv.itm.util.toolkit.debugutil; public class observefilterはフィルター{保護された静的debugutil log = debugutil.getinstances( "pfl-log"、observefilter.class); public void destroy(){} public void dofilter(} public requents chase、servletrequestepess、servreletredepecse、servletestepeest requents、servletrete)desction servletexception {//ユーザーアクセス操作の記録httpservletrequest request1 =(httpservletrequest)request; stringbuffer url = request1.getRequesturl(); // urlをフィルタリングします。 SimpleDateFormat( "yyyy-mm-dd hh:mm:ss")。 format(new Java.util.date()); string hostip = request.getRemoteaddr(); string sessionId = request1.getRequestedSessionId(); string userid = ""; person inrequess1.getSession()。 person.getuser()。getId();}文字列queryString = request1.getqueryString(); if(null!= querystring){url.append( '?'); url.append(querystring);} // savetodb(userid、hostip、sessionid、url.ttring on ")、") ") filterchain.dofilter(request、response);} public void init(filterconfig filterconfig)throws servletexception {} public boolean judgefile(string url){if(url.endswith( "。gif")|| url.endswith( "。JPG")|| url. || url.endswith( "。"。Js ")||。 null; try {// sql式を構築し、データをデータベースに挿入= serviceaccess.getSystemSupportService()。getDefaultConnection(); st = conn.createStatement(); string sql = "log_observe_history(userid、url、url、session、session、faterdatedate、 '' "'、'" + desc + "'、'" + sessionid + "'、'" + hostip + "'、'" + operatortime + "'); log_observe_history(id、userid、url、url、sessionid、hostname、startdate)values(log_observe_seq.nextval、 '" + userid +"'、 '' + url + "'、'" + desc + "'、'" + sessionid + "'、'" + hostip + "'' '' + operatime +" HH24:mi:ss ')) ";} {e.printStackTrace();log.error("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {try {St.close();} catch(Exception E){e.printstacktrace();} st = null;} if(conn!= null){try {conn.close();} catch(exception e){e.printstacktrace();} conn = null;}} return 0;<filter> <filter-name> observefilter </filter-name> <filter-class> com.qwserv.itm.pfl.log.svr.observefilter </filter-class> </filter> <filter-mapping> <filter-name> observefilter </filter-name> <url-pattern>
5.Filterは、ユーザーが許可されていないリソースにアクセスしないようにします
パッケージcom.drp.util.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; Import javax.servlet.servletexception; Import javax.servlete.servlete.servlete.servletretrest.servletretretret.servreletesterrelet.servletested. javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class AuthFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain FilterChain)IoException、ServletException {// 1、DoFilterメソッドの最初のパラメーターはServletRequestオブジェクトです。このオブジェクトは、フォームデータ、Cookie、HTTPリクエストヘッダーなど、着信情報への完全なアクセスをフィルターに提供します。 2番目のパラメーターはservletResponseです。これは通常、単純なフィルターでは無視されます。最後のパラメーターはフィルターチェーンで、サーブレットまたはJSPページを呼び出すために使用されます。 httpservletrequest request =(httpservletrequest)servletrequest; //; // string currentururl = request.getRequesturi(); //ルートディレクトリに対応する絶対パスを取得します:string targeturl = culrenturl.substring(currenturr.indexof( "/"、1)、culernurl.length()); if(! "/login.jsp" .equals(targeturl)){//現在のページがリダイレクト後のログインページであるかどうかを防御します。もしそうなら、デッドループを防ぐためにセッションの判断をしないでください(session == null || session.getAttribute( "user")== null){//*session system.out.printlnを手動で追加する必要があります。 "/login.jsp"))セッションが空の場合、ユーザーがログインしていないことを意味し、login.jspページのreturn;}} //フィルターチェーンに参加して、filterchain.dofilter(request、response); //を実行し続けます。フィルターチェーンオブジェクトのDoFilterメソッドを呼び出します。フィルターインターフェイスのDoFilterメソッドは、フィルターチェーンオブジェクトをパラメーターとして取得します。このオブジェクトのDoFilterメソッドを呼び出すと、次の関連フィルターがアクティブになります。他のフィルターがサーブレットまたはJSPページに関連付けられていない場合、サーブレットまたはJSPページがアクティブになります。 } public void init(filterconfig filterconfig)servletexception {}}HTML
<filter> <filter-name> authfilter </filter-name> <filter-class> com.drp.util.filter.authfilter </filter-class> </filter> <filter-mapping> <filter-name> authfilter </filter-name> <url-pattern>*。jsp </url-pattern> //
要約します
上記は、Javaでのフィルターの使用に関するこの記事の完全なコード例です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!