STRUTS2 登录拦截器

来源:互联网 发布:java中this调用方法 编辑:程序博客网 时间:2024/05/17 17:59

作用检查用户是否登录,如果没有登录跳转到登录页面

struts.xml 配置

<package name="struts-shop" extends="struts-default,json-default">          <interceptors>                    //配置拦截器,param配置要传递的参数                   <interceptor name="LoginInterceptors"  class="com.bonc.Interceptor.LoginInterceptor">                            <param name="excludeName">login,index</param>                            <param name="sessionName">user_session</param>                   </interceptor>                    //定义拦截器链,拦截器就会按定义的顺序被调用                  <interceptor-stack name="myInterceptors">                            <interceptor-ref name="LoginInterceptors"></interceptor-ref>                            <interceptor-ref name="defaultStack"></interceptor-ref>                   </interceptor-stack>     </interceptors>    //这个必须有    <default-interceptor-ref name="myInterceptors" />    //定义错误是跳转的页面    <global-results>           <result name="exp">/view/error.jsp</result>           <result name="login">/view/login.jsp</result>    </global-results>    //定义catch到的错误    <global-exception-mappings>               <exception-mapping result="exp" exception="java.lang.Exception" />      </global-exception-mappings> </package>//在下面的package中要继承struts-shop<package name="login" extends="struts-shop"></package
拦截器代码实现
 package com.bonc.Interceptor;import java.util.ArrayList;import java.util.List;import java.util.Map;import com.bonc.entity.User;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginInterceptor  extends AbstractInterceptor { private static final long serialVersionUID = 1L; private String sessionName; private String excludeName;  private  List<String> list; public List<String> strList(String str) {   List<String> list = new ArrayList<String>();  if(str != null) {   String[] arr = str.split(",");   for(String s : arr) {    list.add(s);   }  }  return list;  }  public void init() {  list = strList(excludeName); }  @Override public String intercept(ActionInvocation invocation) throws Exception {  String actionName = invocation.getProxy().getActionName();  System.out.println("in intercept actionName is " + actionName);  if(list.contains(actionName)) {   return invocation.invoke();  }   Map<String,Object>  session = invocation.getInvocationContext().getSession();   User user = (User) session.get(sessionName);   if(user == null) {    return "login";   } else {    return invocation.invoke();   } } public String getSessionName() {  return sessionName; } public void setSessionName(String sessionName) {  this.sessionName = sessionName; } public String getExcludeName() {  return excludeName; } public void setExcludeName(String excludeName) {  this.excludeName = excludeName; } public List<String> getList() {  return list; } public void setList(List<String> list) {  this.list = list; }}



0 0
原创粉丝点击