Перехватить страницы JSP и убедиться, что они вошли в систему
Недавно я использовал Struts2 для выполнения проекта и необходимо перехватить JSP, чтобы проверить, была ли он регистрирована, но цепочка фильтров Struts2 может только фильтровать действия. Позже я обнаружил, что в Web.xml фильтр класса реализации Javax.servlet.filter может быть напрямую добавлен в фильтр JSP. Пожалуйста, смотрите код
Класс реализации фильтра
<span style = "font-size: 18px;"> package common; импортировать java.io.ioexception; Импорт javax.servlet.filter; Импорт javax.servlet.filterchain; Импорт javax.servlet.filterConfig; Импорт javax.servlet.servletexception; Импорт javax.servlet.servletrequest; Импорт javax.servlet.servletresponse; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.httpservlet; Импорт javax.servlet.httpservlet; Импорт javax.servlet. javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Общедоступный класс LoginFilter Extens Httpservlet реализует фильтр {частный статический окончательный длинный сериал ряд = 1L; @Override public void dofilter (запрос ServletRequest, ответ ServletResponse, FilterChain Chain) Throws IOException, ServletException {httpservletRequest req = (httpservlectrequest); 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 (запрос, ответ); возвращаться; } Loginuser объекта = req.getSession (). Getattribute ("<strong> <span style =" color:#ff0000; "> loginsession </span> </strong>"); if (loginuser == null) {res.sendredirect (indexpath); возвращаться; } chain.dofilter (запрос, ответ); } @Override public void init (FilterConfig arg0) Throws ServletException {// TODO Auto Generated Method Stub}} </span> Метод входа в систему:
<span style = "font-size: 18px;"> public String login () {login login = new login (); //......... Проверка Информация о входе в систему actioncontext ctx = actioncontext.getContext (); Map <string, object> session = ctx.getSession (); session.put ("<strong> <span style =" color:#ff0000; "> loginsession </span> </strong>", login); вернуть "успех"; } </span> Конфигурация web.xml
<filter> <filter-name> setlog </filter-name> <filter-class> common.loginfilter </filter-class> </filter> <Filter-prapp <Url-pattern>/pages/content/*</url-pattern> <url-pattern>/pages/product/*</url-pattern> <url-pattern>/pages/vodtask/*</url-pattern> </filter-mapping>
Обратите внимание, что если на странице используется кадр, он может привести к тому, что сеанс выйдет и выйти на страницу входа в систему. В настоящее время страница входа отображается на подпаке кадра. Решение: добавьте следующий код на страницу входа в систему.
<span style = "font-size: 18px;"> <script language = "javascript"> if (top! = window) top.location.href = window.location.href; </script> </span>
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!