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登录超时拦截器个人总结