struts2 使用拦截器 实现用户权限的验证

1、编写实现拦截验证的类

        

     package iterceptor;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthorityInterceptor extends AbstractInterceptor {
 private static final long serialVersionUID = 1L;

 // 拦截Action处理的拦截方法
 public String intercept(ActionInvocation invocation) throws Exception {
  // 取得请求相关的ActionContext实例
  ActionContext ctx = invocation.getInvocationContext();
  Map session = ctx.getSession();
  // 取出名为user的Session属性
  String user = (String) session.get("username");
  
//  try{
//  System.out.println("得到的用户名是:  "+user);
//  }catch(Exception ex){
//   System.out.println("异常: "+ex.toString());
//  }
  
  // 如果没有登陆,或者登陆所用的用户名不是scott,都返回重新登陆
  if (user != null && user.equals("weiqingli")) {
   return invocation.invoke();
  }
  // 没有登陆,将服务器提示设置成一个HttpServletRequest属性
  ctx.put("tip", "您还没有登陆,请输入scott,tiger登陆系统");
  // 直接返回login的逻辑视图
  return Action.LOGIN;
 }
}

 

2、在struts.xm 配置

    <!-- 用户拦截器定义在该元素下 -->
 <interceptors>
 <!-- 定义了一个名为checkUserLogin的拦截器 -->
 <interceptor name="checkUserLogin" class="iterceptor.AuthorityInterceptor"/>
 

<!--为了在action里面的方便引用,做成拦截器堆栈  -->
 <interceptor-stack name="checkUserLogin_stack">
  <!-- 应用默认拦截器堆栈    一定要有 -->
   <interceptor-ref name="defaultStack" />
   <!-- 应用自定义拦截器 -->
   <interceptor-ref name="checkUserLogin" />
 </interceptor-stack>
 </interceptors>

 

 

3、在需要验证身份的action里,使用拦截器

 

 <!-- 需要登录权限的页面 -->
  <action name="main" class="com.qili.Main" method="main">

   <!-- 使用自定义拦截器 -->
    <interceptor-ref name="checkUserLogin_stack"></interceptor-ref>
   <result name="success" type="freemarker">/ftl/main.html</result>
  </action>

 

4、配全局结果,结果为 login的转正,都指向登录页

 

  <global-results>
   <result name="login" type="redirect">login.jsp</result>
  </global-results>

 

 

5、实现下载   

    下载   http://download.csdn.net/source/2227130

你可能感兴趣的:(exception,freemarker,struts,Interceptor,action,login)