Abfangen JSP -Seiten und überprüfen Sie, ob sie angemeldet sind
Kürzlich habe ich Struts2 verwendet, um ein Projekt durchzuführen, und musste JSP abfangen, um zu überprüfen, ob es angemeldet wurde, aber die Filterkette von Struts2 kann nur Aktionen filtern. Später stellte ich fest, dass in web.xml der Filter der Implementierungsklasse von javax.servlet.filter direkt zum Filter JSP hinzugefügt werden kann. Bitte beachten Sie den Code
Filter -Implementierungsklasse
<span style = "Schriftgröße: 18px;"> Paket com.common; importieren java.io.ioException; import Javax.servlet.filter; importieren javax.servlet.filterchain; importieren javax.servlet.filterconfig; importieren javax.servlet.servletException; importieren javax.servlet.servletrequest; importieren javax.servlet.servletresponse; import Javax.servlet.http.httpServlet; importieren javax.servlet.httpServlet; importieren javax.servlet.httpServlet; Javax.servlet importieren. javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; LoginFilter der öffentlichen Klasse erweitert HttpServlet implementiert Filter {private statische endgültige lange Serialversionuid = 1L; @Override public void dofilter (ServletRequest Request, ServletResponse -Antwort, Filterchain -Kette) löst IOException, ServletException {httpServletRequest req = (httpServletRequest) an; HttpServletResponse res = (httpServletResponse) Antwort; String path = req.getContextPath (); String indexPath = req.getScheme ()+": //"+req.getServerNername ()+":"+req.getServerport ()+path+"/pages/login.jsp"; if (req.getRequesturi (). EndsWith ("login.jsp")) {chain.dofilter (request, Antwort); zurückkehren; } Objekt loginuser = req.getSession (). GetAtTribute ("<strong> <span style =" color:#ff0000; "> LoginSession </span> </strong>"); if (loginuser == null) {res.sendredirect (IndexPath); zurückkehren; } chain.dofilter (Anfrage, Antwort); } @Override public void init (filterconfig arg0) löscht servletException {// Todo automatisch generierte Methode Stub}} </span> aus Login -Methode:
<span style = "Schriftgröße: 18px;"> public String login () {login login = new Login (); // ....Check Anloginformation ActionContext ctx = actionContext.getContext (); Map <string, Object> session = ctx.getSession (); Session.put ("<strong> <span style =" color:#ff0000; "> LoginSession </span> </strong>", Anmeldung); zurück "Erfolg"; } </span> Web.xml -Konfiguration
<Filter> <filter-name> setlog </filter-name> <filter-class> com.common.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> setlog </filter-name> <url-patter> /pages/hom.jsp </url-pattern> <URL-Muster>/Seiten/Kanal/*</url-pattern> <URL-Muster>/Seiten/Inhalt/*</url-pattern> <url-pattern>/pages/produkt/*</url-pattern> <urlpattern>/pages/vodtask/*</url-pattern> </fill-maping> </fill-maping>
Beachten Sie, dass die Sitzung, wenn auf der Seite ein Bild verwendet wird, und sich bei der Anmeldeseite anmelden. Zu diesem Zeitpunkt wird die Anmeldeseite auf einer Unterseite des Rahmens angezeigt. Lösung: Fügen Sie der Anmeldeseite den folgenden Code hinzu.
<span style = "Schriftgröße: 18px;"> <script Language = "javaScript"> if (ober! </script> </span>
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!