Este artigo estuda principalmente o uso relevante de filtros de filtro em Java, e o código de implementação específico é o seguinte.
O filtro é usado principalmente para passar dados para o back -end. O nível é muito simples, então vou dar alguns códigos que foram escritos:
1. Filtros que fazem o navegador não as páginas de cache
import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * Filter used to make Browser not cache pages*/public class ForceNoCacheFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, Servletexception {((httpServletResponse) resposta) .SEtheader ("Controle de cache", "sem cache"); ((HttpServletResponse) Resposta) .SETHEADER ("PRAGMA", "sem cache"); ((HttpServletResponse) Resposta) .SetDateHeader ("Expira", -1); filterChain.dofilter (solicitação, resposta); } public void Destroy () {} public void init (filterConfig filterConfig) lança servletexception {}}2. Filtros para detectar se o usuário está conectado
classe pública CheckLoginFilter implementa filtro {Protected filterConfig filterConfig = null; Redirecturl de sequência privada = nulo; Lista privada NotCheckurllist = new ArrayList (); Private String sessionKey = NULL; public void Dofilter (servletRequest servletRequest, servletResponse servletResponse, filterchain FilterChain) lança ioexception, servletexception {httpServletRequest solicitação = (httpServletRequest) servletRequest; HttpServLeTResponse Response = (httpServletResponse) servletResponse; Session httpSession = request.getSession (); if (sessionKey == NULL) {filtrhain.dofilter (solicitação, resposta); retornar; } if ((! checkRequesturiIntNotFilterList (request)) && session.getAttribute (sessionKey) == null) {Response.sendRedirect (request.getContextPath () + redirecturl); retornar; } filterChain.dofilter (servletRequest, servletResponse); } public void Destro () {NotCheckurllist.clear (); } Private Boolean checkRequesturiitNotFilterList (httpServLeTrequest request) {string uri = request.getServletPath () + (request.getPathinfo () == null? "": request.getPathinfo ()); retornar NotCheckurllist.Contains (URI); } public void init (filterConfig filterConfig) lança servletexception {this.filterConfig = filterConfig; redirectUturl = filterConfig.getInitParameter ("redirecturl"); sessionKey = filterConfig.getInitParameter ("checkSessionKey"); String NotCheckurlliststr = filterConfig.getInitParameter ("NotCheckurllist"); if (NotCheckurlliststr! = NULL) {StringTokenizer st = new StringTokenizer (NotCheckurlliststr, ";"); NotCheckurllist.clear (); enquanto (St.HasmoreTokens ()) {NotCheckurllist.add (St.NextToken ()); }}}}}}3. Filtro de codificação de caracteres
importar javax.Servlet.*; importar java.io.ioException;/***filtro usado para definir a codificação de caracteres de solicitação HTTP, especifique qual codificação de caractere é usada para usar através do codificação de parâmetros de filtro, que é usado para lidar com problemas chineses do filtro do filtro do filtro de html ", o stringf); Void Dofilter (servletRequest servletRequest, servletResponse servletResponse, filterchain FilterChain) lança ioexception, servletexception {if (coding! null; coding = null;} public void init (filterConfig filterConfig) lança servletexception {this.filterConfig = filterConfig; this.Encoding = filterConfig.getInitParameter ("codificação");}}4. Registre o operador de acesso do usuário
pacote com.qwserv.itm.pfl.log.svr; importar java.io.ioException; importar javax.servlet.filter; importar javax.servlet.filterchain; importação javax.Servlet.FilterCofig; import Javax.Servlet.ServLeTexception; importex.Servlet.FilterCofig; import Javax.Servlet.ServLeTexception; importex. javax.servlet.servletResponse; importar java.text.simpledEformat; importar javax.servlet.http.httpServletRequest; import com.qwserv.itm.api.pfl.sm.vo.Person; import java.sql. com.qwserv.itm.util.toolkit.debugutil; public classe Observefilter implementa filtro {protegido estático debugutil log = debuGutil.getInstances ("pfl-log", observefilter.class); public void () {} vazio público dofilter (servleTleTleTleTleTleTleTreQuter); ServletException {//Record user access operations HttpServletRequest request1 = (HttpServletRequest)request;StringBuffer url = request1.getRequestURL();//Filter the url, if it is js/css/image, it will not be processed if (judgeFile(url.toString())){String operaTime = new SimpledateFormat ("AAAA-MM-DD HH: MM: SS"). formato (novo java.util.date ()); string hostip = request.getRemoteaddr (); string sessionId = request1.getRequestedSessionId (); string userId = ""; pessoa pessoa = (pessoa) solicitação1.getSession (). getAttribute ("userObj); se (null! pessoa.getUser (). getId ();} string querystring = request1.getQueryString (); if (null! = Querystring) {url.append ('?'); url.append (querystring);} // SaveTodb (userId, hostip, sessionId,/url. filterChain.dofilter (solicitação, resposta);} public void init (filterConfig filterConfig) lança servletexception {} public boolean juizfile (string url) {if (url.endswith ("gif") || url.endswith (". ||. null; tente {// Construa expressão SQL e insira dados no banco de dados Conn = serviceAccess.getSystemSupportService (). getDefaultConnection (); st = conn.createstatement (); string sql = "insert em log_obNeve_history (userId, url); + url + "','" + desc + "','" + sessionId + "','" + hostip + "','" + operatortime + "')"; if (serviceAccess.getSystemSupportService (). "insert into LOG_OBSERVE_HISTORY(Id,USERID,URL,Detail,SessionID,HostName,StartDate) values(LOG_OBSERVE_SEQ.nextval,'"+ userId + "','" + url + "','" + desc + "','" + sessionId + "','" + hostIp + "',TO_DATE('" + operaTime + "','YYYY-MM-DD HH24: MI: SS ')) ";} St.ExecuteUpdate (SQL);} Catch (Exceção e) {e.printStackTrace();log.error("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {tente {St.Close ();} Catch (Exceção e) {E.PrintStackTrace ();} st = null;} if (conn! = null) {try {Conn.Close ();} Catch (exceção e) {e.printstacktrace ();} Conn = null;}}}}}}<filter> <filter-name> Observefilter </ftrhter-Name> <filter-Class> com.qwserv.itm.pfl.log.svr.observeFilter </ftrids-class> </filter> <filter-Mapping> <filter-name> observeFilter </filtr-name> <bilt-stattern>/*
5.Filter impede os usuários de acessar alguns recursos não autorizados
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;import javax.servlet.ServletResponse;import javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpsession; public classe authfilter implemments {public void () {} public Void Dilter Filtrhain filterchain) lança ioexception, servletexception {// 1, o primeiro parâmetro do método dofilter é o objeto ServletRequest. Este objeto fornece ao filtro acesso total às informações recebidas, incluindo dados de formulário, cookies e cabeçalhos de solicitação HTTP. O segundo parâmetro é o ServletResponse, que geralmente é ignorado em filtros simples. O último parâmetro é o FilterChain, que é usado para chamar uma página de servlet ou jsp. HttpServletRequest request = (HttpServletRequest)servletRequest;//;// If you process HTTP requests and need to access methods such as getHeader or getCookies that cannot be obtained in ServletRequest, you must construct this request object as HttpServletRequest HttpServletResponse response = (HttpServletResponse)servletResponse. String currenturl = request.getRequesturi (); // Obtenha o caminho absoluto correspondente ao diretório raiz: string TargetUrl = currenturl.substring (currenturl.indexOf ("/", 1), currenturl.length (); // Seeve o nome atual do arquivo para comprovar httpsesssession = request (); if (! "/login.jsp" .equals (Targeturl)) {// Defenda se a página atual é uma página de login após o redirecionamento. Nesse caso, não faça o julgamento da sessão para impedir um loop morto se (session == null || session.getAttribute ("usuário") == null) {//*Depois que o usuário faz login, você precisa adicionar manualmente session system.out.println ("Respond.getContextPath () (" + request.getContextpath (); "/Login.jsp") ;//ified the Session estiver vazio, significa que o usuário não está conectado, redireciona para a página Login.jsp Return;}} // junte -se à cadeia de filtro e continue a executar o filtro Chain.dofilter (solicitação, resposta); //. Chame o método Dofilter do objeto FilterChain. O método Dofilter da interface do filtro toma um objeto FilterChain como seu parâmetro. Ao chamar o método Dofilter desse objeto, o próximo filtro relacionado é ativado. Se nenhum outro filtro estiver associado à página do servlet ou JSP, a página do servlet ou JSP será ativada. } public void init (filterConfig filterConfig) lança servletexception {}}html
<filter> <filter-name> AuthFilter </filter-Name> <filter-Class> com.drp.util.filter.authfilter </filter-Class> </filter> <filter-Mapping> <filtro-name> AuthFilter </filter-Name> <url-Pattern>.
Resumir
O exposto acima é o exemplo completo de código deste artigo sobre o uso do filtro em Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!