您的位置:首页 > 编程语言 > Java开发

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

2015-11-27 15:52 225 查看
今天开始接触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工作单元的一部分。如果细分的话,他应该时域高层系统管理的范畴。因此在这里使用拦截器,同时分离和重用这些横切关注点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: