Mencegat halaman JSP dan memverifikasi apakah mereka masuk
Baru -baru ini, saya menggunakan Struts2 untuk melakukan proyek dan perlu mencegat JSP untuk memverifikasi apakah telah dicatat, tetapi rantai filter Struts2 hanya dapat menyaring tindakan. Kemudian saya menemukan bahwa di web.xml, filter kelas implementasi javax.servlet.filter dapat langsung ditambahkan ke filter JSP. Silakan lihat kodenya
Kelas Implementasi Filter
<span style = "font-size: 18px;"> paket com.common; impor java.io.ioException; impor javax.servlet.filter; impor javax.servlet.filterchain; impor javax.servlet.filterconfig; impor javax.servlet.servletException; impor javax.servlet.servletrequest; impor javax.servlet.servletresponse; impor javax.servlet.http.httpservlet; impor javax.servlet.httpservlet; impor javax.servlet.httpservlet; Impor javax.servlet. javax.servlet.http.httpservletrequest; impor javax.servlet.http.httpservletResponse; LoginFilter kelas publik memperluas httpservlet mengimplementasikan filter {private static final long serialversionuid = 1l; @Override public void dofilter (permintaan servletRequest, respons servletResponse, rantai filterchain) melempar ioException, servletException {httpservletRequest req = (httpservletrequest) permintaan; Respons httpservletResponse res = (httpservletResponse); String path = req.getContextPath (); String indexPath = req.getScheme ()+": //"+req.getServerName ()+":"+req.getServerport ()+path+"/pages/login.jsp"; if (req.getRequesturi (). endswith ("login.jsp")) {chain.dofilter (permintaan, respons); kembali; } Objek loginUser = req.getSession (). GetAttribute ("<strong> <span style =" color:#ff0000; "> Loginsession </span> </strong>"); if (loginuser == null) {res.sendredirect (indexPath); kembali; } rantai.dofilter (permintaan, respons); } @Override public void init (filterconfig arg0) melempar ServletException {// TODO Metode yang dihasilkan secara otomatis}} </span> Metode login:
<span style = "font-size: 18px;"> public string login () {login login = login baru (); //! Peta <String, Object> session = ctx.getSession (); session.put ("<strong> <span style =" color:#ff0000; "> Loginsession </span> </strong>", login); mengembalikan "kesuksesan"; } </span> Konfigurasi Web.xml
<filter> <nilter-name> setlog </tiler-name> <nilter-class> com.common.loginfilter </filter-class> </filter> <nilter-mapping> <nilter-name> setlog </filter-name> <rill-pattern> /pages/home.jsp </url-Pattern> <rerl-pattern>/page/pages/home.js </url-Pattern> <rerl-pattern>/page/page/page/channels/</url-Pattern> <rerl-pattern>/page/page/pages/channels/</url-Pattern> <rerl-pattern> <rerl-pola>/halaman/konten/*</url-pola> <rerl-pola>/halaman/produk/*</rerl-pattern> <rerl-pattern>/halaman/vodtask/*</rerl-pola> </filter-mapping>
Perhatikan bahwa jika bingkai digunakan pada halaman, itu dapat menyebabkan sesi habis dan keluar ke halaman login. Pada saat ini, halaman login ditampilkan pada sub -halaman bingkai. Solusi: Tambahkan kode berikut ke halaman login.
<span style = "font-size: 18px;"> <script language = "javascript"> if (top! = window) top.location.href = window.location.href; </script> </span>
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!