美文网首页
Struts2第一节

Struts2第一节

作者: 莫要戏言 | 来源:发表于2017-07-29 19:52 被阅读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

    相关文章

      网友评论

          本文标题:Struts2第一节

          本文链接:https://www.haomeiwen.com/subject/lfpclxtx.html