Interceptar páginas JSP e verificar se elas estão conectadas
Recentemente, usei o STRUTS2 para fazer um projeto e precisava interceptar o JSP para verificar se ele foi registrado, mas a cadeia de filtros do Struts2 só pode filtrar as ações. Mais tarde, descobri que no web.xml, o filtro da classe de implementação javax.servlet.filter pode ser adicionado diretamente ao filtro JSP. Por favor, veja o código
Classe de implementação de filtro
<span style = "font-size: 18px;"> pacote com.common; importar java.io.ioException; importar javax.servlet.filter; importar javax.servlet.filterchain; importar javax.servlet.FilterConfig; importar javax.servlet.servletexception; importar javax.servlet.servletRequest; importar javax.Servlet.ServletResponse; importar javax.servlet.http.httpServlet; importar javax.servlet.httpServlet; importar javax.servlet.httpServlet; importar javax.servlet. javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; A classe pública LogInFilter estende o filtro HttPServLet {private estático final serialversionuid = 1L; @Override public void Dofilter (Solicitação de servletRequest, resposta servletResponse, cadeia de filtro) lança IoException, servletexception {httpServletRequest req = (httpServletRequest); HttpServletResponse res = (httpServletResponse); String Path = req.getContextPath (); String indexpath = req.getscheme ()+": //"+req.getServername ()+":"+req.getServerportport ()+path+"/pages/login.jsp"; if (req.getRequesturi (). endswith ("login.jsp")) {Chain.dofilter (solicitação, resposta); retornar; } Objeto loginUser = req.getSession (). GetAttribute ("<strong> <span style =" color:#ff0000; "> loginsession </span> </strong>"); if (loginUser == null) {res.sendRedirect (indexPath); retornar; } cadeia.dofilter (solicitação, resposta); } @Override public void init (filterConfig arg0) lança servletexception {// TODO Method Auto-Generated Stub}} </span> Método de login:
<span style = "font-size: 18px;"> public string login () {login login = new login (); // ....CHECK LOGIN Informações actionContext ctx = actionContext.getContext (); Mapa <string, object> session = ctx.getSession (); session.put ("<strong> <span style =" cor:#ff0000; "> loginsession </span> </strong>", login); retornar "sucesso"; } </span> Web.xml Configuração
<filter> <filter-name> setLog </filter-name> <filter-Class> com.common.logInfilter </ftrids-class> </ftrhter> <filter-mapping> <filter-name> setLog </filter-name> <url-pattern> /pages/home.jsp também <url-pattern>/páginas/content/*</url-tattern> <url-pattern>/páginas/product/*</url-tattern> <url-pattern>/páginas/vodtask/*</url-tattern> </ftrher-mapping>
Observe que, se um quadro for usado na página, poderá fazer com que a sessão seja interrompida e faça o login na página de login. No momento, a página de login é exibida em uma subpagem do quadro. Solução: Adicione o seguinte código à página de login.
<span style = "font-size: 18px;"> <script idioma = "javascript"> if (top! = window) top.location.href = window.Location.href; </script> </span>
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!