本人在实习项目时,在网上找到一个简单的拦截用户登录,总结一下:希望高手指点,继续进步和完善。
首先编写拦截类LoginedCheckInterceptor.java 如下:package com.huangt.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.huangt.bean.SystemUser;
/* session过期、登录有效性及操作的权限验证拦截器 */
@SuppressWarnings("serial")
public class LoginedCheckInterceptor extends AbstractInterceptor {
/** 拦截请求并进行登录有效性验证 */
public String intercept(ActionInvocation ai) throws Exception {
//取得请求的URL
String url = ServletActionContext.getRequest().getRequestURL().toString();
HttpServletResponse response=ServletActionContext.getResponse();
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires",0);
SystemUser systemUser = null;
//对登录与注销请求直接放行,不予拦截
if (url.indexOf("login.action")!=-1 || url.indexOf("logout.action")!=-1){
return ai.invoke();
}
else{
//验证Session是否过期
if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){
//session过期,转向session过期提示页,最终跳转至登录页面
return "tologin";
}
else{
systemUser = (SystemUser)ServletActionContext.getRequest().getSession().getAttribute("systemUser");
//验证是否已经登录
if (systemUser==null){
//尚未登录,跳转至登录页面
return "tologin";
}else{
return ai.invoke();
}
}
}
}
}
然后用户登陆成功后,设置session的值。在LoginAction中登陆成功后加入一行:
ActionContext.getContext().getSession().put("systemUser",systemUser);
<!--EndFragment-->
<!---->
最为重要的便是struts.xml文件了,本人配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default">
<!-- 配置自定义拦截器LoginedCheckInterceptor -->
<interceptors>
<interceptor name="loginedCheck" class="com.zjsoft.interceptor.LoginedCheckInterceptor"/>
<interceptor-stack name="mystack">
<interceptor-ref name="loginedCheck" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 定义全局result -->
<global-results>
<!-- 定义名为exception的全局result -->
<result name="exception">/exception.jsp</result>
<result name="tologin" type="redirect">/unlogind.jsp</result>
</global-results>
<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 捕捉到Exception异常(所有异常)时跳转到exception所命名的视图上 -->
<exception-mapping exception="java.lang.Exception" result="exception"/>
</global-exception-mappings>
<!-- 用户登录 -->
<action name="login" class="loginAction" >
<result name="input" >/login.jsp</result>
<result name="error" >/login.jsp</result>
<result name="success" type="redirect">/index.jsp</result>
</action>
<action name="logout" class="com.zjsoft.action.LogoutAction" >
<result name="success" type="redirect">/login.jsp</result>
</action>
<!-- 系统用户信息管理 -->
<action name="listSystemUser" class="systemUserAction" method="listSystemUser">
<result name="success">/listSystemUser.jsp</result>
<interceptor-ref name="mystack" />
</action>
</package>
</struts>
在每个需要拦截登录的action中加入<interceptor-ref name="mystack" /> 便可。
分享到:
相关推荐
简单的struts2拦截器利用session拦截用户登录.docx
Struts通过拦截器实现登录后跳转到登录前页面
struts2拦截器使用(用户session失效后的统一页面指向).docx
页面session页面点击会报错,我可以配置拦截器进行拦截操作判断session是否过期。
JavaEE Struts2利用tokenSession防止重复提交
dwz框架实现拦截器 session超时跳转登陆页面 DWZ框架 struts2拦截器 session超时
防止重复提交 之 更强大的tokenSession拦截器
一个简单使用structs2拦截器实现使用自定义拦截器来完成用户权限的控制:当浏览者需要请求执行某个操作时,应用需要先检查浏览者是否登录,以及是否有足够的权限来执行该操作。 系统登陆之前点击查询自动跳入登陆...
4、拦截器可以利用依赖注入,因此在spring框架程序中,优先拦截器 5、拦截器是包裹在过滤器中使用的。 复习 converter 转换器 i18n struts2 spring MVC 拦截器 interceptor 过滤器 filter web.xml ...
主要介绍了详解Spring MVC拦截器实现session控制,使用session监听,重复登录后,强制之前登录的session过期。有兴趣的可以了解一下。
基于注解的Spring MVC 3 结合DWZ 框架,编写的拦截器判断session是否过期,有需要的可以下载。
本案例中 使用maven 搭建spring boot 基本案例 其中实现了 用户登录功能,实现Filter 和 拦截器两种方式 来过滤session登录,后续会使用token方式,请大家关注
使用拦截器时按如下步骤进行: (1)定义实现Interceptor接口的拦截器类 (2)通过Session启用拦截器,或者通过Configuration启用全局拦截器请看示例代码
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
基于springMVC拦截session中的某个值,一般情况下用于拦截session中用户信息是否存在
使用SessionListener+持久化Session+Springmvc拦截器实现单点登录
基于springMVC的session拦截器.rar
15.3 使用Token Session拦截器 256 15.4 小结 257 第16章调试与性能分析 258 16.1 debug标签 258 16.2 Debugging拦截器 259 16.3 性能分析 261 16.4 小结 262 第17章进度条 263 17.1 Execute and Wait拦截器...
主要介绍了SpringMVC拦截器实现监听session是否过期详解,还是比较不错的,这里分享给大家,供需要的朋友参考。