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

Struts2学习____实现登录拦截器demo

程序员文章站 2022-05-28 15:38:35
...
  1. 拦截器组件编写----实现Interceptor接口及其约定方法。
    public class CheckLoginInterceptor implements Interceptor{
    
    	public void destroy() {
    		// TODO Auto-generated method stub	
    	}
    	public void init() {
    		// TODO Auto-generated method stub
    	}
            //方法执行了invoke返回值无效;未执行invoke返回值有效,要根据返回String调用Result
    	public String intercept(ActionInvocation invocation) throws Exception {
    		Map<String,Object> session = ActionContext.getContext().getSession();
    		if(session.get("user") != null){//session有用户信息
    			invocation.invoke();//继续执行Action+Result
    			return null;
    		}else{//session没有用户信息
    			return "nologin";
    		}
    	}
    }

  2. 拦截器组件配置----在struts.xml配置,配置格式
    <package name="basedemo" extends="struts-default">
         <interceptors>
             <interceptor name="check" class="cn.xdl.interceptor.LoginInterceptor"></interceptor>
             <interceptor-stack name="checkStack">
                 <interceptor-ref name="check" />
                 <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <global-results>
            <result name="nologin">/login.jsp</result>
        </global-results>
    </package>
  3. /* Struts2有默认的拦截器。为action指定了拦截器后,默认的defaultStack拦截器栈不会调用,必须用<interceptor-ref name="defaultStack">显式指定调用*/
  4. <package name="demo1" extends="basedemo">
        <action name="hello" class="cn.xdl.action.HelloAction" method="hell">
            <interceptor-ref name="checkStack" />
            <result name="ojbk">/hello.jsp</result>
        </action>
    </package>