Interceptar páginas JSP y verificar si están conectados
Recientemente, utilicé Struts2 para hacer un proyecto y necesitaba interceptar JSP para verificar si se ha registrado, pero la cadena de filtro de Struts2 solo puede filtrar acciones. Más tarde, descubrí que en Web.xml, el filtro de la clase de implementación javax.servlet.filter se puede agregar directamente para filtrar JSP. Consulte el código
Clase de implementación de filtros
<span style = "font-size: 18px;"> paquete com.common; import java.io.ioException; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletException; import javax.servlet.servletRequest; import javax.servlet.servletResponse; import javax.servlet.http.httpservlet; import javax.servlet.httpservlet; import javax.servlet.httpservlet; import javax.servlet. javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; LoginFilter de clase pública extiende httpservlet implementa filtro {private static final long SerialVersionUid = 1l; @Override public void dofilter (solicitud de servletRequest, respuesta de servicio de servicio, cadena de filtro de filtro) lanza ioexception, servletException {httpservletRequest req = (httpservletRequest) solicitud; HttpservletResponse Res = (httpservletResponse) respuesta; String ruta = req.getContextPath (); String indexpath = req.getScheme ()+": //"+req.getServerName ()+":"+req.getServerPort ()+path+"/pages/login.jsp"; if (req.getRequesturi (). endswith ("login.jsp")) {chain.dofilter (solicitud, respuesta); devolver; } Objeto loginuser = req.getSession (). GetAttribute ("<strong> <span style =" color:#ff0000; "> Loginsession </span> </strong>"); if (loginuser == null) {res.sendedirect (indexpath); devolver; } chain.dofilter (solicitud, respuesta); } @Override public void init (FilterConfig Arg0) lanza ServletException {// TODO Auto Generated Method Stub}} </span> Método de inicio de sesión:
<span style = "font-size: 18px;"> public string login () {login login = new Login (); //.....COCK Información de inicio de sesión ActionContext ctx = ActionContext.getContext (); Map <string, object> session = ctx.getSession (); session.put ("<strong> <span style =" color:#ff0000; "> Loginsession </span> </strong>", inicio de sesión); devolver "éxito"; } </span> configuración web.xml
<filter> <filter-name> setlog </filter-name> <filter-class> com.common.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> setlog </filtre-name> <url-pattern> /pages/home.jsp </url-pattern> <url-pattern>/channel/*<</url-patter <Url-Pattern>/Pages/Content/*</url-Pattern> <url-pattern>/pages/product/*</url-Pattern> <url-pattern>/pages/vodtask/*</url-Pattern> </filtre-mapping
Tenga en cuenta que si se usa un marco en la página, puede hacer que la sesión se agote e inicie sesión en la página de inicio de sesión. En este momento, la página de inicio de sesión se muestra en una subpágina del marco. Solución: Agregue el siguiente código a la página de inicio de sesión.
<span style = "font-size: 18px;"> <script language = "javascript"> if (top! = window) top.location.href = window.location.href; </script> </span>
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!