欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts2拦截器简单实例

程序员文章站 2022-05-28 16:45:34
...

利用拦截器实现权限控制  用户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";

	}

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







相关标签: Struts2