关于struts2自定义拦截器的问题
现在有个项目,多个JSP页面,多个action,然后现在我想让用户必须登录才能访问到其中一些页面,如果不登陆则跳转至登录;我知道使用到session跟web。xml配置文...
现在有个项目,多个JSP页面,多个action,然后现在我想让用户必须登录才能访问到其中一些页面,如果不登陆则跳转至登录;
我知道使用到session跟web。xml配置文件的配置,但是具体我还是没弄明白是怎么回事...谁有稍微小点的struts2做的这种项目啊,给我发一个看看啊...很纠结啊....
邮箱736625545,QQ的...求好人 展开
我知道使用到session跟web。xml配置文件的配置,但是具体我还是没弄明白是怎么回事...谁有稍微小点的struts2做的这种项目啊,给我发一个看看啊...很纠结啊....
邮箱736625545,QQ的...求好人 展开
展开全部
拦截器跟struts2没关系,这个是在web.xml中配置的,下面这个就是所谓的拦截器了:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
下面这一段就是所谓登录拦截器 实现:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String currentURL = httpRequest.getRequestURI();
// 取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.lastIndexOf("/"),
currentURL.length());
// 截取到当前文件名用于比较
HttpSession session = httpRequest.getSession(false);
if (!("/userLogin!logIn.action".equals(targetURL)
|| "/login.jsp".equals(targetURL) || "/login_admin.jsp"
.equals(targetURL))) {
if (session == null || session.getAttribute("userInfo") == null) {
// *用户登录以后需手动添加session
httpResponse.sendRedirect(httpRequest.getContextPath()
+ "/login.jsp");
// 如果session为空表示用户没有登录就重定向到login.jsp页面
return;
}
}
chain.doFilter(request, response);
}
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
下面这一段就是所谓登录拦截器 实现:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String currentURL = httpRequest.getRequestURI();
// 取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.lastIndexOf("/"),
currentURL.length());
// 截取到当前文件名用于比较
HttpSession session = httpRequest.getSession(false);
if (!("/userLogin!logIn.action".equals(targetURL)
|| "/login.jsp".equals(targetURL) || "/login_admin.jsp"
.equals(targetURL))) {
if (session == null || session.getAttribute("userInfo") == null) {
// *用户登录以后需手动添加session
httpResponse.sendRedirect(httpRequest.getContextPath()
+ "/login.jsp");
// 如果session为空表示用户没有登录就重定向到login.jsp页面
return;
}
}
chain.doFilter(request, response);
}
追问
if (session == null || session.getAttribute("userInfo") == null) {
// *用户登录以后需手动添加session
手动添加session??这个是指的另外一个类(或action中添加登录session信息?)的操作吗?
基本上我了解的就差不多,但是我写不到项目中...
应该还有个类吗?
追答
嗯,是的,还有一个登录实现类,登录成功后向session中添加名为userinfo的用户信息
Map mapSession = ActionContext.getContext().getSession();
mapSession.put(“userinfo”, UserObject);
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询