Cet article étudie principalement l'utilisation pertinente des filtres de filtre en Java, et le code d'implémentation spécifique est le suivant.
Le filtre du filtre est principalement utilisé pour transmettre des données au backend. Le niveau est très simple, donc je vais juste donner quelques codes qui ont été écrits:
1. Filtres qui font que le navigateur ne cache pas les pages
Importer Javax.servlet. *; Importer Javax.servlet.http.httpservletResponse; Importer java.io.ioexception; / ** * Filter Utilisé pour faire du navigateur et non des pages de cache * / classe publique ForceNocaCheFilter implémente le filtre {Public Void Dofilter (ServletRequest Demande, ServletResponse Réponde, filtrechain) IoException, servlexception {((httpservletResponse) réponse) .sethEader ("cache-control", "no-cache"); ((HttpServletResponse) Réponse) .sethEader ("pragma", "non-cache"); ((HttpServletResponse) Réponse) .setDateHeader ("expire", -1); FilterChain.Dofilter (demande, réponse); } public void destre () {} public void init (filterconfig filterConfig) lève ServletException {}}2. Filtres pour détecter si l'utilisateur est connecté
classe publique CheckLogInFilter implémente Filter {Protected FilterConfig filterConfig = null; String private redirectUrl = null; Liste privée NotCheckurLlist = new ArrayList (); String privé SessionKey = NULL; public void dofilter (ServletRequest ServletRequest, servletResponse servletResponse, filterchain filterchain) lève ioexception, servlexception {httpservletRequest request = (httpservletRequest) servletRequest; HttpServletResponse Response = (httpServletResponse) servletResponse; HttpSession session = request.getSession (); if (sessionKey == null) {filterchain.dofilter (demande, réponse); retour; } if ((! checkRequestUriIntNotFilterList (request)) && session.getAttribute (sessionky) == null) {réponse.SenDredirect (request.getContextPath () + redirect); retour; } filterchain.dofilter (servletRequest, servletResponse); } public void destre () {notcheckurllist.clear (); } private boolean checkRequestUriitNotFilterList (httpServLetRequest request) {String uri = request.getServletPath () + (request.getPathInfo () == null? "": request.getPathInfo ()); retour notcheckurllist.contiains (URI); } public void init (filterConfig filterConfig) lève ServletException {this.filterConfig = filterConfig; redirectUrl = filterConfig.getInitParameter ("redirectUrl"); SessionKey = filterConfig.getInitParameter ("CheckscessionKey"); String NotcheckurLlistTr = filterConfig.getInitParameter ("NotcheckurLlist"); if (notcheckurLlistTR! = null) {StringTokenizer st = new StringTokenizer (NotcheckurLlistTR, ";"); notcheckurllist.clear (); tandis que (St.Hasmoretokens ()) {notcheckurllist.add (St.NextToken ()); }}}}}}3. Filtre d'encodage de caractère
Importer javax.servlet. *; Importer java.io.ioException; / ** * Filtre utilisé pour définir le codage des caractères de la demande HTTP, spécifiez quel codage de caractères est utilisé pour utiliser les paramètres de paramètre de filtre, qui est utilisé pour gérer les problèmes chinois de FilterConfig de la classe de la classe PROTERCTORCORCONFIG; ""; public void dofilter (servletRequest ServletRequest, servletResponse ServletResponse, filterchain filterchain) lance ioexception, servletException {if (codage! = null) serpletRequest.SetcharacterEncoding (codage); filterchain.dofilter (servleteRequest, servletResponse); {filterConfig = null; coding = null;} public void init (filterConfig filterConfig) lève ServletException {this.filterConfig = filterConfig; this.encoding = filterconfig.getInitParameter ("Encoding");}}4. Enregistrer l'opérateur d'accès de l'utilisateur
package com.qwserv.itm.pfl.log.svr; import java.io.ioexception; import javax.servlet.filter; importer javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletException; import javax.servlet.sservletRerest; javax.servlet.servletResponse; import java.text.simpledateformat; import javax.servlet.http.httpservletRequest; import com.qwserv.itm.api.pfl.sm.vo.eson; com.qwserv.itm.util.toolkit.debugutil; classe publique ObserveFilter implémente le filtre {protégé statique debugutil Log = Debugutil.getInstances ("PFL-LOG", observeFilter.class); public Void Destre IOException, ServletException {// Enregistrer les opérations d'accès aux utilisateurs httpservletRequest request1 = (httpServLetRequest) request; stringbuffer url = request1.getRequestUrl (); // filtre l'url, si c'est js / css / image, il ne sera pas traité si SimpledateFormat ("Yyyy-mm-dd hh: mm: ss"). format (new java.util.date ()); string hostip = request.getReMoteAdDr (); string sessionId = request1.getRetedSessionId (); string userId = ""; personne personne = (personne) request1.getSession (). getAttribute ("userOBj"); if (null! = personne && null! = personne. personne.getUser (). getID ();} String QueryString = request1.getQueryString (); if (null! = QueryString) {url.append ('?'); url.append (queystring);} // saveTodb (userrid, hostip, sessiond, url.tostring (), opsertime, ");} FilterChain.Dofilter (demande, réponse);} public void init (filterConfig filterConfig) lève ServletException {} public boolean jugeFile (Url de chaîne) {if (url.endswith (". gif") || url.endswith (". jpg") || url.endswith (". Url.endswith (". BMP") || Url.endswith (". CSS") || Url.endswith (". JS") || à la connexion de la base de données conn = null; instruction st = null; try {// construire sql expression et insérer des données dans la base de données Conn = ServiceAccess.getSystemSupportService (). GetDefaultConnection (); ST = Conne.CreatEstatement (); String Sql = "Insertname) valeurs ('"+ userId +"', '"+ url +"', '"+ desc +"', '"+ sessionid +"', '"+ hostip +"', '"+ opératortime +"') "; si (ServiceAccess.getSystemSupportService (). GetConnectionType (Conn) == ServiceAccess.getSystemSupportService (). JCA_TYPE_ORACLE) {SQL = "INSERT INTO LOG_OBSERE_HISTORY) VALEURS (LOG_OBSERVE_SEQ.NEXTVAL, '"+ USERID +"', '"+ URL +"', '"+ Desc +"', '"+ SessionID +"', '"+ hostip +"', to_date ('"+ opératime +"' ',' yyyy-mm-dd hh24: mi: ss ')) "; (Exception e) {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;}} retour 0; // signifie le fonctionnement est réussi}}}<filter> <filter-name> ObserveFilter </ Filter-Name> <Filter-Class> com.qwserv.itm.pfl.log.svr.observefilter </ filter-Class> </ Filter> <filter-Mapping> <filter-Name> ObserveFilter </ Filter-Mapping> <Url-Pattern> / * </ url-Pattern>
5.Filtre empêche les utilisateurs d'accéder à certaines ressources non autorisées
Package com.drp.util.filter; Importer java.io.ioException; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletException; import javax.servlet.servlerequest; import Javax.Servlet.Serger javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; Import Javax.servlet.http.httpSession; classe publique AuthFilter imprégation Filter {public Void Destrust () {che ServletResponse, filterChain FilterChain) lève IOException, ServletException {// 1, le premier paramètre de la méthode Dofilter est l'objet ServletRequest. Cet objet fournit au filtre un accès complet aux informations entrantes, y compris les données de formulaire, les cookies et les en-têtes de demande HTTP. Le deuxième paramètre est ServletResponse, qui est généralement ignoré dans des filtres simples. Le dernier paramètre est FilterChain, qui est utilisé pour appeler un servlet ou une page JSP. HttpServLetRequest request = (httpServLequest) servLetRequest; //; // Si vous traitez les demandes HTTP et devez accéder à des méthodes telles que Getheader ou Getcookies qui ne peuvent pas être obtenues dans ServleRequest, vous devez construire cet objet de demande comme HttServleReSterSequest HttSerSERSERSPONse Répondation = (httServlersesponse) ServlePonse. String currentUrl = request.getRequestturi (); // Obtenez le chemin absolu correspondant au répertoire racine: String TargetUrl = currentUrl.Substring (currentUrl.indexof ("/", 1), currentUrl.length ()); // Seneve le nom de fichier actuel pour comparer htttpSession session = request.getSession (false); if (! "/ login.jsp" .equals (TargetUrl)) {// juger si la page actuelle est une page de connexion après la redirection. Si c'est le cas, ne portez pas de jugement de session pour empêcher une boucle morte si (session == null || session.getAttribute ("utilisateur") == null) {// * Une fois que l'utilisateur se connecte, vous devez ajouter manuellement Session System.out.println ("request.getContextPath () =" + request.getContex "/login.jsp": Appelez la méthode Dofilter de l'objet FilterChain. La méthode Dofilter de l'interface filtrante prend un objet FilterChain comme paramètre. Lors de l'appel de la méthode Dofilter de cet objet, le filtre connexe suivant est activé. Si aucun autre filtre n'est associé au servlet ou à la page JSP, la page servlet ou jsp est activée. } public void init (filterconfig filterConfig) lève ServletException {}}html
<filter> <filter-name> AuthFilter </ Filter-Name> <Imter-Class> com.drp.util.filter.authFilter </filter-Class> </filter> <filter-mapping> <filter-name> AuthFilter </filter-Name> <Url-Pattern> *.
Résumer
Ce qui précède est l'exemple de code complet de cet article sur l'utilisation du filtre en Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!