이 기사는 주로 Java에서 필터 필터의 관련 사용법을 연구하며 특정 구현 코드는 다음과 같습니다.
필터 필터는 주로 데이터를 백엔드로 전달하는 데 사용됩니다. 레벨은 매우 간단하므로 작성된 몇 가지 코드 만 제공하겠습니다.
1. 캐시 페이지가 아닌 브라우저를 만드는 필터
import javax.servlet.*; import javax.servlet.http.httpservletresponse; import java.io.ioexception;/***브라우저를 캐시하지 않게 만드는 데 사용되는 필터*/public class forcenocachefilter emperments 필터 필터 {servletrequest, servletrongeception, servletrongeception) ServleTeXception {((httpservletResponse) 응답) .SetheAder ( "캐시 제어", "없음"); ((httpservletResponse) 응답) .Setheader ( "Pragma", "No-Cache"); ((httpservletResponse) 응답) .setDateHeader ( "Expires", -1); filterchain.dofilter (요청, 응답); } public void destroy () {} public void init (FilterConfig FilterConfig) servletexception {}}2. 사용자가 로그인되는지 여부를 감지하기 위해 필터
공개 클래스 checkloginfilter는 필터 {protected filterconfig filterconfig = null; 개인 문자열 REDIRECTURL = NULL; 개인 목록 Notcheckurllist = new ArrayList (); 개인 문자열 sessionkey = null; Public Void Dofilter (ServletRequest ServletRequest, ServletResponse ServletRepronse, FilterChain FilterChain)는 ioException, ServleTeXception {httpservletRequest request = (httpservletRequest) servletRequest; httpservletresponse 응답 = (httpservletResponse) servletResponse; httpsession session = request.getSession (); if (sessionKey == null) {filterCain.dofilter (요청, 응답); 반품; } if ((! checkrequesturiintnotfilterlist (request)) && session.getAttribute (sessionKey) == null) {response.sendRedirect (request.getContextPath () + redirectUrl); 반품; } filterChain.dofilter (ServletRequest, ServletRepponse); } public void destroy () {notcheckurllist.clear (); } private boolean checkrequesturiitnotfilterlist (httpservletrequest request) {string uri = request.getServletPath () + (request.getPathInfo () == null? "": request.getPathInfo ()); Notcheckurllist를 반환합니다. } 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. 문자 인코딩 필터
import javax.servlet.*; import java.io.ioexception;/***HTTP 요청 문자 인코딩을 설정하는 데 사용되는 필터, 필터 매개 변수 인코딩을 통해 사용되는 문자 인코딩을 지정하십시오. 필터 양식 요청 매개 변수*/public classectrected emplement {protected actorpected emplicor {protected strist emplicor em; ""; Public Void Dofilter (ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain Filterchain)는 ioException, ServleTeXception {if (encoding! = null) servletrequest.setcharacterencoding (Encoding); filterchain (servletrequest); {FilterConfig = null; encoding = null;} public void init (FilterConfig FilterConfig) servleTexception {this.filterConfig = FilterConfig; this.encoding = filterconfig.getInitParameter ( "인코딩");}}4. 사용자의 액세스 연산자를 기록하십시오
package 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; import javax.servlet javax.servlet.servletresponse; import java.text.simpledateformat; import javax.servlet.http.httpservletrequest; import com.qwserv.itm.api.pfl.sm.vo.person; import java.sql.*; importm.pfl.sm.apm.api com.qwserv.itm.util.toolkit.debugutil; public class ObserveFilter Implements Pliter {Protected Static Debugutil log = debugutil.getInstances ( "pfl-log", ObserveFilter.class); public void destroy () {} public void dofilter (servletrequest), servletr response 응답, servletronge 응답) ioException, servleTeXception {// 사용자 액세스 작업 기록 httpservletRequest request1 = (httpservletRequest) 요청; StringBuffer url = request11.getRequestUrl (); // URL 필터, JS/CSS/image 인 경우 (jurefile) (url.tostring ()) {jurefile (url.tostring ()). simpledateformat ( "yyyy-mm-dd hh : mm : ss"). format (new java.util.date ()); String hostip = request.getRemoteaddr (); String SessionId = request1.getRequestEdSessionId (); String userId = "" "; person = (person) request1.getSession (). getAttribute ("userobj "); if (null! person.getUser (). getId ();} String QueryString = request11.getQueryString (); if (null! = QueryString) {url.append ( '?'); url.append (querystring);} // savetodb (userId, hostip, sessionId, url.toString (), jestoMe,}, ") FilterChain.dofilter (요청, 응답);} public void init (FilterConfig FilterConfig) servleTexception {} public boolean judgefile (string url) {if (url.endswith ( ". gif") || url.endswith ( ". jpg") || url.endswith ( "| url.endswith ( ". bmp") || 데이터베이스 연결 Conn = null; station st = null; try {// SQL 표현식을 구성하고 데이터베이스에 데이터를 삽입하고 데이터베이스에 데이터를 삽입하십시오. conn = serviceaccess.getSystemsupportservice (). getDefaultConnection (); conn.createstatement (); String Sql = "insert inter interiD, stuest, in insert, urtoriD, spossId, inn insert, spossid, in insert in insert. 값 ( ' " + userId +"', ' " + url +"', ' " + desc +"', ' " + sessionId +"', ' " + hostip +"', ' " + operatortime +"'); if. (serviceaccess.getsystemsupportservice (). getConnectionType (conn) == ServiceAccess.getSystemsUpportService (). jca_type_oracle) {sql = "log_observe_history (id, userid, url, sevetl, sessionid, hostname, staretdate) 값 (log_observe_seq.nextVal, ' + userId + "', '" + url + "', '" + desc + "', '" + sessionId + ",'" + hostip + " ', to_date (' + Operatime +" ','yyyy-mm-dd hh24 : mi : ss ');}; (예외 e) {e.printStackTrace();log.error("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {try {st.close ();} catch (예외 e) {e.printstacktrace ();} st = null;} if (conn! = null) {try {conn.close ();} catch (예외 e) {e.printstacktrace ();} conn = null;}} 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-mattern>/*</url tantn> </filtern>
5. 필터는 사용자가 일부 무단 리소스에 액세스하지 못하게합니다
package 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.servlet.servletrequest; javax.servlet.http.httpervletrequest; import javax.servlet.http.http.httpsession; import javax.servlet.http.httpessess; public authfilter emplements filter {public void destroy ()} 공공 void dofilter (servletrequer servletrequest servletrequest servletrequest, servletrequest). ServletResponse, FilterChain FilterChain)는 ioException, servleTexception {// 1, dofilter 메소드의 첫 번째 매개 변수는 ServletRequest 객체입니다. 이 객체는 양식 데이터, 쿠키 및 HTTP 요청 헤더를 포함한 들어오는 정보에 대한 전체 액세스 권한을 제공합니다. 두 번째 매개 변수는 ServletResponse이며 일반적으로 간단한 필터에서 무시됩니다. 마지막 매개 변수는 필터 체인이며 서블릿 또는 JSP 페이지를 호출하는 데 사용됩니다. httpservletrequest request = (httpservletrequest) servletrequest; //; // http 요청을 처리하고 servletrequest에서 얻을 수없는 getheader 또는 getcookies와 같은 메소드에 액세스 해야하는 경우,이 요청 개체를 Httpervletrequest로 구성해야합니다. String currentUrl = request.getRequesturi (); // 루트 디렉토리에 해당하는 절대 경로를 가져옵니다 : String targeturl = currentUrl.substring (currentUrl.indexof ( "/", 1), currentUrl.length (); // httpsession session = requestsession (false); if (! "/login.jsp".equals (targeturl)) {// 현재 페이지가 리디렉션 후 로그인 페이지인지 여부를 방어합니다. 그렇다면 (세션 == null || session.getAttribute ( "user") == null) {//*사용자가 로그인 한 후 세션 System.out.println ( "requestContextPath () =" + request.getContextPath ())를 수동으로 추가해야합니다. "/login.jsp") ;////////////////4는 로그인하지 않고 로그인으로 리디렉션되지 않음을 의미합니다. jsp 페이지 리턴;}} // 필터 체인에 가입하여 FilterCain.dofilter (요청, 응답); //. Filterchain 객체의 도필터 방법을 호출하십시오. 필터 인터페이스의 도필터 메소드는 FilterChain 객체를 매개 변수로 취합니다. 이 객체의 도필터 방법을 호출 할 때 다음 관련 필터가 활성화됩니다. 다른 필터가 서블릿 또는 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-name> authfilter </filter-name> <url-pattern>*
요약
위는 Java의 필터 사용에 관한이 기사의 완전한 코드 예입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!