您的位置:首页 > 编程语言 > Java开发

struts2_11_自定义拦截器的实现

2014-08-24 08:40 387 查看
1)登录界面的代码:
<%
//设置session的值关键字为user
request.getSession().setAttribute("user", "Enter");
%>
用户已登录

2)退出界面的代码:
<%
  //取消session中设定的值,即user为null	request.getSession().removeAttribute("user");
%>
用户已经退出登录

3)拦截器类PermissionInterceptor的代码:
public class PermissionInterceptor implements Interceptor {

public void destroy() {// 销毁时调用
}

public void init() {// 启用时调用
}

// 该方法返回视图名称
public String intercept(ActionInvocation invocation) throws Exception {

// 取得user的内容
Object user = ActionContext.getContext().getSession().get("user");

// 如果user不为null表示用户已经登录,允许执行Action
if (user != null) {
return invocation.invoke();// 调用Action
}

  // 如果user为空,不调用Action,并且向session中存入字符串"你没有权		限执行该操作"
ActionContext.getContext().put("message", "你没有权限执行该操作");
return "success";
}
}

3)struts.xml文件的配置:
<struts>
<package name="packageName" namespace="/test"
  extends="struts-default">

<!--定义拦截器群 -->
<interceptors>
<interceptor name="permission" class="permissionInterceptor.PermissionInterceptor" />
<!-- 自定义拦截器栈 -->
<interceptor-stack name="permissionStack">
<!--系统自定义拦截器栈,先于自定义拦截器引入 -->
<interceptor-ref name="defaultStack" />
<!--引入自定义拦截器 -->
<interceptor-ref name="permission" />
</interceptor-stack>
</interceptors>

<!-- 定义默认全局拦截器
  <default-interceptor-ref name="permissionStack" />
  -->

<!--定义全局视图 -->
<global-results>
<result name="success">/index.jsp</result>
</global-results>

<action name="hello*"
  class="interceptor.interceptorAction" method="{1}">
<!-- 手动调用系统拦截器,当使用手动调用时该拦截器时,定义的					系统默认拦截器不会使用 -->
<interceptor-ref name="permissionStack" />
<!-- 当调用自定义拦截器时,只有将系统拦截器,先调用 采用同
  时使用自定义拦截器和系统拦截器 -->
<interceptor-ref name="interceptorName" />
</action>

</package>
</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: