Artikel ini terutama mempelajari penggunaan filter filter yang relevan di Java, dan kode implementasi spesifik adalah sebagai berikut.
Filter filter terutama digunakan untuk meneruskan data ke backend. Levelnya sangat sederhana, jadi saya hanya akan memberikan beberapa kode yang telah ditulis:
1. Filter yang membuat browser bukan halaman 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) respons) .setHeader ("cache-control", "no-cache"); ((HttpservletResponse) respons) .setHeader ("pragma", "no-cache"); ((HttpservletResponse) respons) .setDateheader ("kedaluwarsa", -1); filterchain.dofilter (permintaan, respons); } public void dashar () {} public void init (filterconfig filterconfig) melempar servletException {}}2. Filter untuk mendeteksi apakah pengguna masuk
Public Class CheckLogInfilter mengimplementasikan filter {filterconfig filterconfig = null; Private String Redirecturl = null; Daftar Pribadi Notcheckurllist = ArrayList baru (); Private String sessionKey = null; public void dofilter (ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain) melempar ioException, ServletException {httpservletRequest request = (httpservletrequest) servletRequest; HttpservletResponse respons = (httpservletResponse) ServletResponse; Httpsession sesi = request.getSession (); if (sessionKey == null) {filterchain.dofilter (permintaan, respons); kembali; } if ((! CheckRequestUturIntNotFilterList (request)) && session.getAttribute (sessionKey) == null) {response.sendredirect (request.getContextPath () + redirecturl); kembali; } filterchain.dofilter (servletRequest, servletResponse); } public void hancur () {notcheckurllist.clear (); } private boolean checkRequesturiitnotfilterlist (permintaan httpservletRequest) {string uri = request.getSerVletpath () + (request.getPathinfo () == null? "": request.getpathinfo ()); return notcheckurllist.contains (uri); } public void init (filterconfig filterconfig) melempar 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. Filter Pengkodean Karakter
Impor javax.servlet.*; impor java.io.ioException;/***Filter yang digunakan untuk mengatur pengkodean karakter permintaan http, tentukan pengkodean karakter mana yang digunakan melalui parameter filter pengkodean, yang digunakan untuk menangani masalah publiccon publercon; void dofilter (servletRequest servletRequest, servletResponse servletResponse, filterchain filterchain) melempar ioException, servletException {if (encoding! = null) servletrequest.setcharacterencoding (encoding); filterchain.dofilter (servletrequest (servleteseVeste (encoding); filterchain.dofilter (servletrequest.setchrain (encoding); filterchain. {filterconfig = null; encoding = null;} public void init (filterconfig filterconfig) melempar servletException {this.filterconfig = filterconfig; this.encoding = filterconfig.getInitparameter ("encoding");}}4. Catat operator akses pengguna
Paket com.qwserv.itm.pfl.log.svr; impor java.io.ioexception; impor javax.servlet.filter; impor javax.servlet.filterchain; impor javax.servlet.filterconfig; impor javax.servlet.servletexception; impor; javax.servlet.servletresponse; import java.text.simpledateFormat; import javax.servlet.http.httpservletrequest; com.qwserv.itm.api.pfl.smo.person; impor java.sql.*; com.qwserv.itm.util.toolkit.debugutil; ObserveFilter kelas publik mengimplementasikan filter {debugutil statis yang dilindungi = debugutil.getInstances ("pfl-log", pengucapan pabrikan. IOException, ServletException {// Rekam Operasi Akses Pengguna httpservletRequest request1 = (httpservletrequest) permintaan; stringBuffer url = request1.getRequesturl (); // filter URL, jika itu js/css/gambar, itu tidak akan diproses jika judgefile (judgefile (juri. SimpleDateFormat ("YYYY-MM-DD HH: MM: SS"). format (new java.util.date ()); string hosttip = request.getRemoTeAddr (); string sessionId = request1.getRequestedSessionId (); string userid = ""; orang orang = (orang) request1.getSession (). getAttribute ("userobj"); if (null! = orang & orang & orang (). person.getUser (). getId ();} string queryString = request1.getQueryString (); if (null! = queryString) {url.append ('?'); url.append (queryString);} // savetodB (userid, hostip, sessionid, url.toString); filterchain.dofilter (permintaan, respons);} public void init (filterconfig filterconfig) melempar servletException {} public boolean judgefile (string url) {if (url.endswith (". Gif") || url.endswith (". url.endswith (". BMP") ||. ke koneksi database conn = null; pernyataan st = null; coba {// buat ekspresi sql dan masukkan data ke dalam database conn = serviceAccess.getsystemsupportService (). getDefaultConnection (); st = conn.createStateMent (); string sql = "masukkan ke log_observe_history (doordin, detail, detail, detail, sql =" serte in ke log_observe_history (string SQL = " nilai ('" + userid +"', '" + url +"', '" + desc +"', '" + sessionId +"', '" + hosttip +"', '" + operateTime +"') "; jika (ServiceAccess.getSystemsupportService (). GetConnectionType (conn) == serviceAccess.getSystemsupportService (). JCA_TYPE_ORACLE) {sql = "masukkan ke dalam log_observe_history (id, userid, url, detail, session, hostname, startname, muxiMLate_history (ID, userid, url, detail, sessionid, hostname, startname, startname) + "','" + url + "','" + desc + "','" + sessionId + "','" + hosttip + "', to_date ('" + operatime + "',' yyyy-mm-dd hh24: mi: ss '))";} st. executeupdate (sql); {e.printStackTrace();log.error("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {coba {st.close ();} catch (Exception e) {e.printstacktrace ();} st = null;} if (conn! = null) {try {conn.close ();} catch (exception e) {e.printStackRace ();} conn = null;} return 0;<filter> <nilter-name> ObserveFilter </tilter-name> <nilter-class> com.qwserv.itm.pfl.log.svr.observeFilter </filter-class> </tiler> <nilter-Mapping> <TERFERTER-NAME> ObserveFilter </filter-name> <ruRl-pattern>/</url-podat> </filter> </filter> </Url-Pattern> </url-pattern> </filter-mapping> </url-pattern
5. Filter mencegah pengguna mengakses beberapa sumber daya yang tidak sah
Paket com.drp.util.filter; import java.io.ioException; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; impor javax.servlet. javax.servlet.servletResponse; import javax.servlet.http.httpservletrequest; impor javax.servlet.htp.httpservletResponse publise {http.htpsespons; dofilter (servletRequest servletRequest, servletResponse servletResponse, filterchain filterchain) melempar ioException, servletException {// 1, parameter pertama dari metode dofilter adalah objek servletRequest. Objek ini memberikan filter dengan akses penuh ke informasi yang masuk, termasuk data formulir, cookie, dan header permintaan HTTP. Parameter kedua adalah ServletResponse, yang biasanya diabaikan dalam filter sederhana. Parameter terakhir adalah FilterChain, yang digunakan untuk memanggil halaman servlet atau JSP. Httpservletrequest request = (httpservletrequest) servletrequest; //; // Jika Anda memproses permintaan http dan perlu mengakses metode seperti getheader atau getCookies yang tidak dapat diperoleh di servletRequest. String currentUrl = request.getRequesturi (); // Dapatkan jalur absolut yang sesuai dengan direktori root: string targetUrl = currentUrl.substring (currentUrl.indexof ("/", 1), currentUrl.length ()); // SeaVe nama file saat ini untuk membandingkan httpsession sesion = request.getsession ()); if (! "/login.jsp" .Equals (targetUrl)) {// menilai apakah halaman saat ini adalah halaman login setelah pengalihan. Jika demikian, jangan membuat penilaian sesi untuk mencegah loop dead if (session == null || session.getAttribute ("user") == null) {//*Setelah pengguna masuk, Anda perlu menambahkan session System.out.println ("request. "/login.jsp");//if sesi kosong, itu berarti bahwa pengguna tidak masuk, mengarahkan kembali ke halaman login.jsp return;}} // Bergabunglah dengan rantai filter dan terus menjalankan filterchain.dofilter (permintaan, respons); //. Panggil metode dofilter dari objek filterchain. Metode dofilter dari antarmuka filter mengambil objek filterchain sebagai parameternya. Saat memanggil metode dofilter dari objek ini, filter terkait berikutnya diaktifkan. Jika tidak ada filter lain yang dikaitkan dengan halaman Servlet atau JSP, halaman Servlet atau JSP diaktifkan. } public void init (filterconfig filterconfig) melempar servletException {}}html
<filter> <nilter-name> authfilter </tiler-name> <nilter-class> com.drp.util.filter.authfilter </filter-class> </filter> <niler-Mapping> <nilter-name> authfilter </filter-name> <rerl-pola>*.
Meringkaskan
Di atas adalah contoh kode lengkap dari artikel ini tentang penggunaan filter di java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!