Struts2框架核心之拦截器&标签库

版权声明:翀版 https://blog.csdn.net/biggerchong/article/details/84633068

4、Struts2框架核心之拦截器&标签库


上接Struts2与页面间的数据交互(2)--OGNL表达式&ValueStackhttps://blog.csdn.net/biggerchong/article/details/84573784 

目录

4、Struts2框架核心之拦截器&标签库

4.1 什么是Struts2的拦截器?

4.2 为什么使用Struts2的拦截器?

4.3 怎样使用Struts2的拦截器?

4.3.1 编写拦截器类

4.3.2 对拦截器进行配置

4.4 Struts2的标签库

   4.4.1 通用标签库(常用)

4.4.2 UI标签库(有争议)


4.1 什么是Struts2的拦截器?

Filter

         过滤器,过滤客户端向服务器发送的所有请求。

Interceptor

         拦截器,起到拦截客户端对Action的访问;Interceptor是更加细粒度的拦截Action中的具体方法。Interceptor是Struts2中的核心功能,Struts2就是依赖于Interceptor来实现其核心功能的。

InterceptorStruts2中的执行流程:

         客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter方法);

         在doFilter方法中调用executeAction()方法;

         在executeAction()内部调用dispatcher.serviceAction()方法;

         在dispatcher.serviceAction()内部创建一个Action代理,最终执行的是Action代理中的execute();

         在execute()中调用ActionInvocation()的invoke()方法;

         在invoke()中来执行一组拦截器(完成部分功能),再递归遍历其他拦截器;

      当拦截器全部执行完毕,就会执行目标Action,根据Action的返回结果进行页面跳转。

以上整体示意图如下:

 

拦截器这里只有弄清了其真正原理才能得心应手来操作,这里先提供一个链接:https://blog.csdn.net/xwnxwn/article/details/7086567,之后等博主本人深入学习Struts2之后会附上详细解读Struts2框架的原理系列。 


4.2 为什么使用Struts2的拦截器?

         Struts2的拦截器是Struts2框架设计的核心所在,利用拦截器可以使我们更加方便的来控制访问权限,拦截器比过滤器更加的精确,能够允许我们直接过滤到指定的Action中的指定Method,使得权限管理更加合理高效且方便。


4.3 怎样使用Struts2的拦截器?

4.3.1 编写拦截器类

         编写一个类实现Interceptor接口,或者继承AbstractInterceptor类,或者继承MethodFilterInterceptor类等;一般我们不使用Interceptor接口的方法,应为这种方法让我们必须实现Interceptor中的init等无关的方法。

拦截器myInterceptor

拦截器myInteceptor2

4.3.2 对拦截器进行配置

定义拦截器来配置

说明:当配置中有global-result时要放在interceptors之后,在action中添加拦截器时不要忘记struts2的默认拦截器defaultStack,一旦我们在action中使用自定义拦截器后struts2默认拦截器就失效了,需要手动配置一下。

 

定义拦截器栈来配置

 

拦截效果图:


4.4 Struts2的标签库

   4.4.1 通用标签库(常用)

 

判断标签

    <s:if>、<s:elseif>、<s:else>

       

    <s:iterator>

 

其他常用的标签

  1. <s:property/>
  2. <s:debug/>
  3. <s:date />     ---在页面上进行日期格式化。

 

4.4.2 UI标签库(有争议)

传统表单标签:

 

 

UI表单标签:

 

 

         从传统表单与UI表单的效果图对比可知,UI表单布局更加工整、用户体验也更佳,编写较为方便,但是业界对UI标签的评价不一,UI标签的最大优点是支持数据回显,这是因为UI标签能自动读取值栈中相应的数据回显,而传统表单则需要自己来手动回显。


     如果您已经完成博主下的Struts2系列共4篇博客,恭喜您已经入门struts2框架了,接下来将会更新Struts2实战之J2EE网购整合,敬请期待!

                                                                                    ----谢谢阅读!                     ----知飞翀

猜你喜欢

转载自blog.csdn.net/biggerchong/article/details/84633068
今日推荐