Este artículo estudia principalmente el uso relevante de los filtros de filtro en Java, y el código de implementación específico es el siguiente.
El filtro de filtro se utiliza principalmente para pasar datos al backend. El nivel es muy simple, por lo que daré algunos códigos que se han escrito:
1. Filtros que hacen que el navegador no sea páginas de caché
import javax.servlet.*; import javax.servlet.http.httpservletResponse; import java.io.ioException;/***Filtro utilizado para hacer que el navegador no sea de caché páginas*/clase pública ForceCacheFilter Implements Filter {public void DoFilter (ServletRequest Solicitud, ServletResponse Respuesta, FilterChain FilterChain, Filter Chains IoOctual, IoMeCepts, IoMeCeption, IoMeCeption, Solicitud de Filtro, FilterChilEcception, Toteo, FilterChilEctual. Respuesta de servletException {((httpServletResponse) .setheader ("Cache-Control", "No-Cache"); ((HttpservletResponse) respuesta) .setheader ("pragma", "no-cache"); ((HttpservletResponse) respuesta) .SetDateHeader ("expiras", -1); filterChain.dofilter (solicitud, respuesta); } public void Destroy () {} public void init (filterconfig filterconfig) lanza ServletException {}}2. Filtros para detectar si el usuario ha iniciado sesión
Public Class CheckLogInFilter implementa Filter {FilterConfig protegido FilterConfig = null; cadena privada redirecturl = null; Lista privada NotcheckUrllist = new ArrayList (); String private SessionKey = nulo; public void dofilter (ServLetRequest ServLetRequest, ServletResponse ServletResponse, FilterChain FilterChain) lanza IOException, ServletException {httpServletRequest request = (httpservletRequest) ServLetRequest; HttpservletResponse respuesta = (httpservletResponse) servletResponse; Httpsession session = request.getSession (); if (sessionKey == NULL) {FilterChain.dofilter (solicitud, respuesta); devolver; } if ((! CheckReSquestUriIntNotFilterList (request)) && session.getAttribute (sessionKey) == null) {Response.sendedirect (request.getContextPath () + redirecturl); devolver; } filterChain.Dofilter (ServLetRequest, ServLetResponse); } public void destruye () {NotcheckUrllist.Clear (); } private boolean checkrequesturiitnotFilterList (httpservletRequest solicitud) {string uri = request.getServletPath () + (request.getPathInfo () == null? "": request.getpathinfo ()); devolver nocheckurllist.contains (URI); } public void init (filterconfig filterconfig) lanza ServletException {this.filterconfig = filtreConfig; 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. Filtro de codificación de personajes
import javax.servlet.*; import java.io.ioException;/***Filtro utilizado para establecer la codificación de caracteres de solicitud HTTP, especifique qué codificación de caracteres se utiliza para usar a través de la codificación de parámetros de filtro, que se utiliza para manejar los problemas chinos de HTML Solicitud de parámetros*/clase pública de caracteres de clase pública. void dofilter (ServLetRequest ServLetRequest, ServLetResponse ServletResponse, FilterChain FilterChain) lanza IOException, ServLetException {if (coding! = NULL) SERVLETREQUEST.SECHARACTERECTERECODING (ENCODING); FilterChain. null; encoding = null;} public void init (filterconfig filtRonfig) lanza ServletException {this.filterConfig = filtreConfig; this.Encoding = FilterConfig.getInitParameter ("Codificación");}}4. Registre el operador de acceso del usuario
paquete 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.servletRequest; javax.servlet.servletResponse; import java.text.simppledateFormat; import javax.servlet.http.httpservletRequest; import com.qwserv.itm.api.pfl.sm.vo.person; import java.sql.*; import Com.qwserv.itm.api.servatecses; importar java.sql.*; import.qwserv.itm.api.servateAcses; importar java.sql.*; import Com.qwserv.itm.api.serviceceCses; import java.sql.*; import.qwserv.itm.api.servateAcses; import java.sql.*; import.qwserv.itm.api.servateAcses; import java.sql.*; import.qwserv.itm.api.servateAcses; import; com.qwserv.itm.util.toolkit.debugutil; public class ObserveFilter implementa filtro {protegido static debugutil log = debugutil.getInStances ("pfl-log", observación de observación.class); public void destruye () {} public void doFilter (solicitud de servletrequest, servletResse-shade, filtrina de filtros de filtros de filtros) ServletException {// registro de operaciones de acceso de usuario httpservletRequest request1 = (httpservletRequest) request; StringBuffer url = request1.getRequestUrl (); // filtra la url, si es js/css/image, no se procesará si (juzgarfile (url.tostring ())) {string operatime = newe SimpleDateFormat ("aaa yyy-mm-dd hh: mm: ss"). format (new java.util.date ()); string hostip = request.getRemoteaddr (); string sessionId = request1.getRequestedSessionId (); string userId = ""; persona persona = (persona) request1.getSession (). getAttribute ("userObj"); If (null! = Person && null! = Person.getuser () {) {useriD) persona.getUser (). getId ();} string QueryString = request1.getQueryString (); if (null! = QueryString) {url.append ('?'); url.append (QueryString);} // SaveTodb (userId, hostip, sessionId, url.Tostring (), oprimen, ");} filterChain.dofilter (solicitud, respuesta);} public void init (filterconfig filterconfig) lanza ServletException {} public boolean JudgeFile (string url) {if (url.endswith (". gif") || url.endswith (". jpg") || url.endswith (". Png") || null; try {// construya la expresión de SQL e inserte datos en la base de datos conn = serviceAccess.getSystemSupportService (). URL + "','" + DESC + "','" + SessionId + "','" + Hostip + "','" + Operatortime + ")"; if (ServiceAccess.getSystemSupportService (). GetConnectionType (Conn) == ServiceAccess.getSystemSupportService (). JCA_TYPE) 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 (Excepción e) {e.printStackTrace();log.error("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {try {St.Close ();} Catch (Exception e) {E.PrintStackTrace ();} st = null;} if (conn! = null) {try {conn.close ();} capt (excepción e) {e.printstackTrace ();} conn = null;}} return 0;<filter> <filter-name> ObserverFilter </filter-name> <filter-class> com.qwserv.itm.pfl.log.svr.observeFilter </filter-class> </siltre> <filter-mapping> <filter-name> ObserveFilter </filtre-name> <url-pattern>/*</ url-pattern> </filtre-mapping>
5. Filter evita que los usuarios accedan a algunos recursos no autorizados
paquete com.drp.util.filter; import java.io.ioException; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletception; import javax.servlet.servletRest; import Javax.servlet.servlet. javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession; public class AuthFilter Implement Filter {public void destruye () {} public void doFilter (servletRequest, ServletReSponsessPonsess ServeSsessEnsessPonseSponseSponSeSponsess ServEdRessEnsEnsEponSeSponsess ServetRessEnsessPonsess ServetRessEnsesS ServetRessEnsess ServTrePonses FilterChain FilterChain) lanza IOException, ServletException {// 1, el primer parámetro del método Dofilter es el objeto ServLetRequest. Este objeto proporciona al filtro acceso completo a la información entrante, incluidos los datos del formulario, las cookies y los encabezados de solicitud HTTP. El segundo parámetro es servletResponse, que generalmente se ignora en filtros simples. El último parámetro es FilterChain, que se utiliza para llamar a una página Servlet o JSP. HttpservletRequest request = (httpservletRequest) ServLetRequest; //; // Si procesa las solicitudes HTTP y necesita acceder a métodos como GetHeader o Getcookies que no se puede obtener en ServletRequest, debe construir este objeto de solicitud como httTpSeRElTrequest httTpServeTretRetResponse Response = (httPserveServeServeServeServeServeSponseSponseSponse. String currentUrl = request.getRequestUri (); // Obtenga la ruta absoluta correspondiente al directorio raíz: string TargetUrl = currentUrl.substring (currentUrl.indexof ("/", 1), currentUrl.length ()); // sain el nombre de archivo actual para comparar httpsession session = request.getSession (false); if (! "/login.jsp" .equals (TargetUrl)) {// juzga si la página actual es una página de inicio de sesión después de la redirección. Si es así, no realice un juicio de sesión para evitar un bucle muerto if (session == null || session.getAttribute ("user") == null) {//*Después de que el usuario inicia sesión, debe agregar manualmente el sistema.sut.println ("request.getContextPath () =" + request.getContex "/login.jsp") ;////Se la sesión está vacía, significa que el usuario no ha iniciado sesión, redirige al retorno de la página login.jsp;}} // unirse a la cadena de filtro y continuar ejecutando filtreChain.dofilter (solicitud, respuesta); //. Llame al método Dofilter del objeto FilterChain. El método Dofilter de la interfaz de filtro toma un objeto FilterChain como su parámetro. Al llamar al método Dofilter de este objeto, se activa el siguiente filtro relacionado. Si ningún otro filtro está asociado con la página Servlet o JSP, se activa la página Servlet o JSP. } public void init (filterconfig filtreConfig) lanza ServletException {}}html
<filter> <filter-name> AuthFilter </filter-name> <filter-class> com.drp.util.filter.authfilter </filter-class> </filter> <filter-mapping> <filter-name> autfilter </filtre-name> <url-pattern>*. jsp </url-pattern> // significa válido para todos los archivos jsp </filtre-mapping> mapping>
Resumir
Lo anterior es el ejemplo de código completo de este artículo sobre el uso del filtro en Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!