码迷,mamicode.com
首页 > 其他好文 > 详细

好好利用Struts2拦截器

时间:2015-01-19 00:12:29      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

  继续学习SSH项目,当前完成了用户注册、登录、查看调查,新建调查几个简单的功能,为了程序的健壮性,比如当我们查看调查,新建调查的时候,就应该判断用户是否登陆过,如果没有登录的,则让其进行登录,然后再进行其他操作。

  这样的话,利用struts的拦截器来实现是非常方便的。因为struts2中,到达action之前是先进入拦截器中的。所以可以在拦截器中进行判断,下面上部分代码:

  

/**
 * 登录拦截器,实现对用户登录的拦截操作
 * @author Bubble
 */
@SuppressWarnings("serial")

public class LoginInterceptor implements Interceptor {

	@Override
	public void destroy() {

	}

	@Override
	public void init() {

	}

	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		@SuppressWarnings("rawtypes")
		BaseAction action = (BaseAction) arg0.getAction() ;
		//如果 action 为登录或者注册 action 的话,则放行
		if(action instanceof LoginAction ||
				action instanceof RegAction){
			return arg0.invoke() ;
		}
		//其他Action则校验 是否登录
		else{
			User user = (User) arg0.getInvocationContext().getSession().get("user") ;
			if(user == null){
				//user 为空,则去登录
				return "login" ;
			}else{
				//放行
				if(action instanceof UserAware){
					((UserAware) action).setUser(user);
				}
				return arg0.invoke() ;
			}
		}
	}

}

  然后记得修改 struts.xml文件

<!-- 自定义拦截器 -->
		<interceptors>
			<!-- 注册用户登录拦截器 -->
			<interceptor name="loginInterceptor" class="com.ysp.surveypark.struts2.LoginInterceptor" />
			<interceptor-stack name="myLoginStack">
				<interceptor-ref name="loginInterceptor"/>
				<interceptor-ref name="defaultStack"/>
			</interceptor-stack>
		</interceptors>
		
		<!-- 使用自定义拦截器栈 -->
		<default-interceptor-ref name="myLoginStack"/>
		
		<!-- 配置全局 login页面 -->
		<global-results>
			<result name="login">/index.jsp</result>
		</global-results>

  同样,很多时候,我们需要获取登录用户的session,比如,查看调查,新建调查。每次都要从session中获取user对象,这样可以让其 action 实现 sessionAware 接口,然后获得 对应的session,但是如果这样的话,就会分别在其方法上获取。代码就重复了,所以可以同样利用 拦截器原理,代码同上:可以让需要获取 user session的action实现对应的UserAware,UserAware接口中有一个 setUser(User user)方法,在拦截器中判断传过来的 action 是否实现了 UserAware接口,如果实现了,则调用setUser(User user)方法设置 user.这样的话,就很简洁明了了

好好利用Struts2拦截器

标签:

原文地址:http://www.cnblogs.com/alwaysjava/p/4232602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!