В этой статье в основном изучается соответствующее использование фильтров фильтров в Java, и конкретный код реализации выглядит следующим образом.
Фильтр фильтр в основном используется для передачи данных в бэкэнд. Уровень очень прост, поэтому я просто дам несколько кодов, которые были написаны:
1. Фильтры, которые делают браузер не кеш -страницы
Импорт javax.servlet.*; import javax.servlet.http.httpservletresponse; импорт java.io.ioexception;/***Фильтр, используемый для того, чтобы сделать браузер, а не кэш -страницы*/public class forcenocachefilter реализует фильтр {public void dofilter (ServletRequest -запрос, revletresponse responsesonse responsesonse wialainchain wifletr IoException, servletexception {((httpservletresponse). ((Httpservletresponse). ((Httpservletresponse) ответ) .setDateHeader («истекает», -1); FilterChain.dofilter (запрос, ответ); } public void destress () {} public void init (FilterConfig FilterConfig) Throws ServletException {}}2. Фильтры, чтобы обнаружить, вошел ли пользователь
Общедоступный класс CheckLoginFilter реализует фильтр {Protected FilterConfig FilterConfig = null; частная строка redirecturl = null; частный список notcheckurllist = new ArrayList (); Private String SessionKey = null; public void dofilter (ServletRequest ServletRequest, Servletresponse Servletresponse, FilterChain FilterChain) Throws IOException, ServletException {httpservletRequest request = (httpservlectrequest) ServletRequest; Httpservletresponse response = (httpservletresponse) Servletresponse; Httpsession session = request.getsession (); if (sessionKey == null) {filterChain.dofilter (запрос, ответ); возвращаться; } if ((! CheckRequestUriintNotFilterList (request)) && session.getAttribute (sessionKey) == null) {response.sendredirect (request.getContextPath () + redirecturl); возвращаться; } filterChain.dofilter (ServletRequest, ServletResponse); } public void destress () {notcheckurllist.clear (); } private boolean checkrequesturiitnotfilterlist (httpservlectrequest) {string uri = request.getservletpath () + (request.getpathinfo () == null? ": request.getpathinfo ()); вернуть notcheckurllist.contains (uri); } public void init (FilterConfig FilterConfig) Throws ServletException {this.filterConfig = filterConfig; redirecturl = filterConfig.getInitParameter ("redirecturl"); SessionKey = filterConfig.getInitParameter ("CheckSessionKey"); String notcheckurlliststr = filterConfig.getInitParameter ("notcheckurlist"); 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;/** * Filter used to set HTTP request character encoding, specify which character encoding is used to use through filter parameter encoding, which is used to handle Chinese issues of Html Form request parameters*/public class CharacterEncodingFilter implements Filter {protected FilterConfig filterConfig = null;protected String encoding = "; Public void Dofilter (ServletRequest ServletRequest, Servletresponse Servletresponse, FilterChain FilterChain) Throws IoException, ServletException {if (кодирование! = null) ServletRequest.SetchAracterEncoding (inCoding); FilterChain.dofilter (ServletRequest, ServletRespons); {filterConfig = null; encoding = null;} public void init (filterConfig filterConfig) Throws ServletException {this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter ("Кодирование");}}4. Запишите оператор доступа пользователя
Пакет com.qwserv.itm.pfl.log.svr; импорт java.io.ioexception; импорт javax.servlet.filter; import javax.servlet.filterchain; импорт javax.servlet.filterConfig; import javax.servlet.servletexception; import javax.servlet.servequest; javax.servlet.servletresponse; import java.text.simpledateformat; импорт javax.servlet.http.httpservlectrequest; импорт com.qwserv.itm.api.pfl.sm.vo.person; импорт java.sql. com.qwserv.itm.util.toolkit.debugutil; Общедоступный Class Observefilter реализует фильтр {защищенный статический отладчик log = debugutil.getinstances ("pfl-log", examerefilter.class); public void destress () {} public void dofilter (revletrequest refsce, revletresponse resect) IoException, ServletException {// Записать операции доступа пользователя httpservlectrequest request1 = (httpservlectrequest) request; stringbuffer url = request1.getRequesturl (); // Фильтрой SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"). format (new java.util.date ()); string hostip = request.getRemoteaddr (); string sessionId = request1.getRequestSessionId (); string userId = ""; личность = (человек) request1.getSession (). getAttribute ("userObj"); if (null! Person.getUser (). getId ();} String QueryString = request1.getQueryString (); if (null! = QueryString) {url.append ('? FilterChain.dofilter (запрос, ответ);} public void init (FilterConfig FilterConfig) Throws ServletException {} public Boolean DudgeFile (String url) {if (url.endswith (". Gif") || url.endswith (". Jpg") || url.endswith (". Bmp") ||. Соединение базы данных conn = null; оператор ST = null; try {// Construct SQL Expression и вставьте данные в базу данных cont = serviceAccess.getSystemSupportService (). getDefaultConnection (); ste = conn.createStatement (); String sql = "Infort into log_observe_history (usterd, patherd, sessionder, patch, patch, stessen, patch, userdemare, userdemare, staring steard values ('" + userId +"', '" + url +"', '" + desc +"', '" + sessionId +",' " + hostip +", '" + operatortime +"') "; (ServiceAccess.getSystemSupportService (). GetConnectionType (conn) == serviceAccess.getSystemSupportService (). Jca_type_oracle) {sql = "Вставка в log_observe_history (id, userid, url, sessionid, hostname, startdate) значения (log_observe_seq.nextval, '" + userId +"', '" + url +",' " + desc +" ',' " + sessionId +" ',' " + hostip +" ', to_date (' " + operatime +", 'yyyy-mm-dd hh24: mi: sss') "; (Исключение 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;} return 0; //<filter> <filter-name> veamervefilter </filter-name> <filter-class> com.qwserv.itm.pfl.log.svr.observefilter </filter-class> </filter> <Filter-MAPPING> <Filter-name> visemerefilter </filter-name> <url-pattern>/*</url-pattern-pattern-pattern-pattern-patterning>
5. Фильтр мешает пользователям получить доступ к некоторым несанкционированным ресурсам
пакет com.drp.util.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; импорт javax.servlet.filterConfig; import javax.servlet.servletexception; import javax.servlet.servlece.serssessessessessessessessessessessessess. javax.servlet.http.httpservlectrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; открытый класс Authfilter реализует Filter {public void destress () {} public dofilter (ServletRequest, ServleceSes Servletresponse, FilterChain FilterChain) бросает ioException, ServletException {// 1, первым параметром метода DoFilter является объект ServletRequest. Этот объект предоставляет фильтр полный доступ к входящей информации, включая данные формы, файлы cookie и заголовки HTTP -запросов. Второй параметр - это сервис -ответ, который обычно игнорируется в простых фильтрах. Последним параметром является FilterChain, который используется для вызова страницы сервлета или 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 (); // Получить абсолютный путь, соответствующий корневому каталогу: string targetUrl = currenturl.substring (currenturl.indexof ("/", 1), currenturl.length ()); // seave текущее имя файла для сравнения httpsession session = request.getsession (false); if (! "/login.jsp" .equals (targetUrl)) {// судить, является ли текущая страница страницей входа после перенаправления. Если это так, не выносите суждение сеанса, чтобы предотвратить мертвое цикл if (session == null || session.getattribute ("user") == null) {//*После входа пользователя вводит в систему, вам необходимо вручную добавить Session System.out.println ("request.getContextPath () =" + request.getContextPath ()); "/login.jsp") ;//if сеанс пуст, это означает, что пользователь не вошел в систему, перенаправить на страницу login.jsp return;}} // присоединяется к цепочке фильтра и продолжайте выполнять filterchain.dofilter (запрос, ответ); //. Вызовите метод Dofilter объекта FilterChain. Метод Dofilter интерфейса фильтра принимает объект Filterchain в качестве его параметра. При вызове метода Dofilter этого объекта активируется следующий связанный фильтр. Если другой фильтр не связан со страницей сервлета или JSP, активируется страница сервлета или JSP. } public void init (FilterConfig FilterConfig) Throws ServletException {}}HTML
<Filter> <Filter-name> authfilter </filter-name> <filter-class> com.drp.util.filter.authfilter </filter-class> </filter> <Filter-Maping> <Filter-name> Authfilter </filter-name> <Url-pattern>*.
Суммировать
Выше приведено полный пример кода этой статьи об использовании фильтра в Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!