Struts2拦截器简单实例

利用拦截器实现权限控制  用户admin 有全部的访问访问权限,用户zhangsan a.jsp,b.jsp 访问权限  用户lisi a.jsp、c.jsp访问权限,如果用户没有访问权限 页面统一跳转到  permissionDenied.jsp

页面:

<form action="user!login.action">
    用户名:<input type='text' name="user.userName"/>
    密码:<input type='password' name="user.passWord"/>
   <input type="submit" value="登录">   
    </form>    
  <a href='user!goA.action'>去A页面</a>
  <a href='user!goB.action'>去B页面</a>
  <a href='user!goC.action'>去C页面</a>
Struts配置:
<package name="user" namespace="/" extends="struts-default">
		<!-- 定义权限拦截器 -->
		<interceptors>
			<interceptor name="permission"
				class="com.test.user.PermissionInterceptor"></interceptor>
			<interceptor-stack name="permissionStack">
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="permission" />
			</interceptor-stack>
		</interceptors>
		<!-- 定义全局结果 -->
		<global-results>
			<result name="success">/success.jsp</result>
			<result name="error">/err.jsp</result>
			<result name="noPermission">/noPermission.jsp</result>
		</global-results>
		<action name="user" class="com.test.user.action.UserAction">
		  <result name="a">/a.jsp</result>
		  <result name="b">/b.jsp</result>
		  <result name="c">/c.jsp</result>
		  <!-- 引用权限拦截器-->
		  <interceptor-ref name="permissionStack" />
		  </action>
	</package>

拦截器方法:

@Override
	public String intercept(ActionInvocation invocation) throws Exception {
        System.out.println("进入拦截器");
		HttpSession session=ServletActionContext.getRequest().getSession();
        User user =(User) session.getAttribute("user");
        //获取当前请求的url
        String actionname=invocation.getProxy().getActionName();
        if(user==null||"".equals(user.getUserName())){
        	return "noPermission";
        }else if("zhangsan".equals(user.getUserName())&&"c".equals(actionname)){
        	return "noPermission";
        }else if("lisi".equals(user.getUserName())&&"b".equals(actionname)){
        	return "noPermission";
        }else{
        	return invocation.invoke();
        }
	}

后台action:

public String login() {
		// 获取session
		HttpSession session = ServletActionContext.getRequest().getSession();
		// 存入session
		if (!"".equals(user.getUserName())) {
			session.setAttribute("user", user);
			return SUCCESS;
		} else {
			return "error";
		}
	}

	public String goA() {
		return "a";
	}

	public String goB() {
		return "b";

	}

	public String goC() {
		return "c";

	}

这样就可以简单的实现,登录用户不同、访问页面也不同。







猜你喜欢

转载自blog.csdn.net/zlsuperjj/article/details/80152989