Struts2基础(三):Struts2的拦截器

1.拦截器的意义:

           (1).把重用性的内容写在拦截器中

           (2).复杂的逻辑若无拦截器全写在action中,结构不好

           (3).复杂逻辑的一个拦截器可能不够,需要多个拦截器构成一个拦截器栈

2.Servlet和Struts2通信的桥梁:ServletActionContext

3.拦截器例子

jsp:

           <form action="loginAction_login.action"></form>

LoginAction下的login()方法:

           ServletActionContext.getRequest().getSession().setAttribute("user",user);         

           return "indexAction";

IndexAction:

           public void IndexAction extends ActionSupport{

                      public String index(){

                                 return "index";

                      }

           }

拦截器LoginInterceptor(implements Interceptor):

           public String intercept(ActionInvocation invocation) throws Exception{

                      User user = (User)ServletActionContext.getRequest().getSession().getAttribute("user");

                      if(user == null){ 

                                 return "login";

                      }else{

                                 return invocation.invoke();

                      }

           }

xml:

           <struts>

                      <package name="userInterceptor" namespace="/" extends="struts-default">

                                 <interceptors>

                                            <interceptor name="loginInterceptor" class="LoginInterceptor"></interceptor>

                                            <interceptor-stack name="loginInter">

                                                       <interceptor-ref name="loginInterceptor"></interceptor-ref>

                                                       <interceptor-ref name="defaultStack"></interceptor-ref>

                                            </interceptor-stack>

                                 </interceptors>

                                 <default-interceptor-ref name="loginInter"></default-interceptor-ref>

                      </package>

                      <package name="login" namespace="/" extends="struts-default">

                                 <action name="loginAction_*" method="{1}" class="action.LoginAction">

                                            <result type="redirectAction" name="indexAction">indexAction_index.action</result>

                                 </action>

                      </package>

                      <package name="index" namespace="/" extends="userInterceptor">

                                 <action name="indexAction_*" method="{1}" class="IndexAction">

                                            <result name="index">index.jsp</result>

                                            <result name="login">login.jsp</result>

                                 </action>

                      </package>

           </struts>

           

猜你喜欢

转载自blog.csdn.net/qq_40594696/article/details/86578857