Struts2第一节

2017-07-29  本文已影响0人  莫要戏言

什么是Struts2?

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

什么是MVC?

模型(Model)-视图(View)-控制器(Controller),通常简称MVC,是一种开发web应用程序的软件设计模式。该软件设计模式由以下三部分组成:

模型——属于软件设计模式的底层基础,主要负责数据维护。

视图——这部分是负责向用户呈现全部或部分数据。

控制器——通过软件代码控制模型和视图之间的交互。

Struts下载

地址:http://struts.apache.org/download.cgi

文件:struts-2.x.x all.zip

Struts2 的mvc通过五个核心部分进行实现

操作(Actions)

拦截器(Interceptors)

值栈(Value Stack)/OGNL

结果(Result)/结果类型

视图技术

Struts2 高级系统架构下的模型、视图及控制器

请求生命周期

通过上述图片的描述,我们可以依照下面几点解释在Struts2 中用户的请求生命周期:

用户发送一个资源需求的请求到服务器(例如:页面)。

核心控制器查看请求后确定适当的动作。

使用验证、文件上传等配置拦截器功能。

执行选择的动作来完成请求的操作。

另外,如果需要的话,配置的拦截器可做任何后期处理。

最后,由视图显示结果并返回给用户。

Struts2 Hello World示例

1、创建一个动态Web项目

2、加入 jar 包:Struts2 的lib文件夹C:\struts-2.2.3\lib中拷贝以下文件到项目的WEB-INF\lib文件夹里。你可以直接拖拽以下所有文件到 WEB-INF\lib 文件夹。

commons-fileupload-x.y.z.jar

commons-io-x.y.z.jar

commons-lang-x.y.jar

commons-logging-x.y.z.jar

commons-logging-api-x.y.jar

freemarker-x.y.z.jar

javassist-x.y.z.GA

ognl-x.y.z.jar

struts2-core-x.y.z.jar

xwork-core.x.y.z.jar

3、 在 web.xml 文件中配置 struts2: 复制 struts\apps\struts2-blank1\WEB-INF\web.xml 文件中的过滤器的配置到当前 web 应用的 web.xml 文件中

4、在当前 web 应用的 classpath 下添加 struts2 的配置文件 struts.xml: 复制 struts1\apps\struts2-blank\WEB-INF\classes 下的 struts.xml 文件到当前 web 应用的 src 目录下.

5、创建Aciton类

当用户点击一个URL时,由Action类来响应用户操作。一个或多个Action类的方法被执行,并返回一个字符串结果。基于结果的值,会呈现一个特定的JSP页面

Aciton类

这是一个非常简单的具有“name”属性的类。对于“name”属性,我们用标准的getter和setter方法,以及一个返回“success”字符串的执行方法。

Struts2 框架将创建一个“HelloWorldAction”类的对象,并调用execute方法来响应用户的动作。你把你的业务逻辑放进execute方法里,最后会返回字符串常量。简单的描述每个URL,你需要实现一个Action类,你也可以用类名直接作为你的动作名,或者如下面内容所示使用 struts.xml 文件映射到其他name上。

6、创建视图

我们需要一个JSP来呈现最终的信息,当一个预定义动作发生时这个页面将被Struts2 框架调用,并且这个映像会定义到 struts.xml 文件里。那么让我们在你的Eclipse项目的WebContent文件夹里创建以下JSP文

视图

Taglib指令告知Servlet容器这个页面将使用Struts2 标签,并且这些标签会被s放在前面。s:property 标签显示Action类“name”属性的值,这个值是使用HelloWorldAction类的getName()方法返回的。

7、创建主页

在WebContent文件夹里,我们还需要创建index.jsp文件,这个文件是用作初始的action URL。用户可以通过点击它命令Struts2框架去调用HelloWorldAction类的定义方法并呈现HelloWorld.jsp视图。

主页

上面视图文件里定义的helloaction将通过struts.xml文件影射到HelloWorldAction类及其execute方法。当用户点击提交按钮时,将使得Struts2框架运行HelloWorldAction类中的execute方法,并基于该方法的返回值,选择一个适当的视图作为响应进行呈现。

8、配置文件

我们需要一个映像把URL、HelloWorldAction类(模型)以及 HelloWorld.jsp(视图)联系在一起。映像告知Struts2 框架哪个类将响应用户的动作(URL),类里的哪个方法将要执行,以及基于方法所返回的字符串结果,会呈现怎样的视图。

那么接下来让我们创建一个名为struts.xml的文件。因为Struts2 要求 strust.xml 文件显示在classes的文件夹里,所以我们要在WebContent/WEB-INF/classes 的文件夹下创建 struts.xml 文件。Eclipse并没有默认创建“classes”文件夹,因此你需要自己创建。在project explorer里右键点击WEB-INF文件夹并选择“New”>“Folder”,你的 struts.xml 文件应该如下:

struts.xml

这里说几句关于上述的配置文件。这里我们设定常数struts.devMode的值为,因为我们是在开发环境下工作,需要查看一些有用的日志消息。然后,我们定义一个名为helloworld的数据包。当你想要把你的Actions集合在一起时,创建一个数据包是非常有用的。在我们的示例中,我们命名我们的动作为“hello”,与URL/hello.action保持一致,由HelloWorldAction.class进行备份。HelloWorldAction.classexecute方法就是当URL/hello.action被调用时运行。如果execute方法返回的结果为“success”,那么我们带用户进入HelloWorld.jsp

下一步是创建一个web.xml文件,这是一个适用于Struts2 任何请求的接入点。在部署描述符(web.xml)中,Struts2 应用程序的接入点将会定义为一个过滤器。因此我们将在web.xml里定义一个 oforg.apache.struts2.dispatcher.FilterDispatcher 类的接入点,而web.xml文件需要在WebContent的WEB-INF文件夹下创建。Eclipse已经创建了一个基础的web.xml文件,你在创建项目的时候可以使用。那么,让我们参照以下内容做修改:

web.xml

我们指定了index.jsp作为我们的欢迎文件,那么我们已经配置好了在所有的URL(列如:所有匹配/*模式的URL)上运行Struts2 过滤器。

9、执行程序

1 2
上一篇下一篇

猜你喜欢

热点阅读