Struts2学习——(一)基本概念概述

        今天开始接触java web的框架部分。马克一记。

        为了简便开发的过程,在学习中我用Myeclipse10作为开发工具。新建一个web project,之后右键工程“Myeclipse”→“Add struts capabilities...”添加struts支持。在今后的学习中,我都是用struts2,所以在这里添加支持的时候我选择的是struts2.1。finish之后,可以看到在web.xml中已经对struts2的filter做了配置,以及在src文件夹下自动生成了struts.xml配置文件。现在我唯一知道的是,每配置一个action,都需要在struts.xml中配置。


        接下来,知道了如何配置,我就要开始继续学习里面的基本流程以及各种组成部件了。

提到框架,不得不提到的就是和MVC模式中的M模型、V视图、C控制器的对比了。在struts2中,他们分别通过动作(action)、结果(result)和过滤调度器(FilterDispatcher)来实现。



一、核心控制器FilterDispatcher

       在struts1中,采用的是简单的servlet(ActionServlet)来管理控制的,而在2中则是采用特殊servlet——过滤器来处理请求。

struts1.x 中
<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
。。。 
< /servlet>
Struts2.X 中
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern> </filter-mapping>
        
在后面整合s2sh的时候,发现struts2.3.24.1配置过滤器的时候用的是:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个
类。如果用上面讲的类会报奇怪的错误,马克。


该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求。如果请求以.action结尾,则请求转入框架处理。这里要注意配置的方式,如果url-pattern设置为/*,则表示对所有文件过滤,在提交表单时不必以.action结尾。


二、业务处理器Action
在配置中,最重要的就是配置action。其中包含了对用户请求的逻辑处理,因此Action也称为业务处理器。
Action类完全是一个普通的POJO(简单java对象)。为了简化Action开发,我们经常通过继承ActionSupport类来简化过程
Struts2的动作组件有两个作用。第一,一个action将业务逻辑调用封装到一个单独的工作单元中。第二,action是一个数据传输的场所。仅仅有数据,或者仅仅有业务逻辑,都不能获得最后的返回视图,也就是不能返回给用户正确的信息。

三、视图View
将应用程序的状态转换为一种用户可以与之交互的可视化的表示。根据action的不同返回值,可以获得不同的视图返回结果。

需要记住的是,Struts2框架中不仅仅包含MVC组件,为了实现整洁的MVC模式,同时依赖其他几个参与每一个请求处理的关键架构组件的帮助,包括:拦截器、OGLN、valuestack等。

四、拦截器
拦截器是一种可以在请求处理之前或者之后执行的struts2组件。(通常没有必要在之前和之后都执行,但是他们确实可以做到)它提供了一种在其中定义不同的工作流和横切任务的架构组件,以便能够简单的重用这些组件,并且能够与其他架构关注点分离。
什么样的任务应该放在拦截器中执行呢?比如说日志(log)。日志应该在每一个action被调用的时候记录,但通常来说不应该放在action内部,因为它通常不是action工作单元的一部分。如果细分的话,他应该时域高层系统管理的范畴。因此在这里使用拦截器,同时分离和重用这些横切关注点。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值