Struts2基础学习(一)—初识Struts2

时间:2022-10-17 11:28:44

 

目录

一、什么是Struts2

二、搭建Struts2的开发环境

三、Struts2的配置文件

四、MVC模式

一、什么是Struts2

     Struts2是一个非常优秀的MVC框架,由传统的Struts1和WebWork两个经典框架发展而来。

     Struts2有以下几个核心功能:

     (1) 允许POJO(Plain Old Java Objects)对象作为Action。

     (2) Action的execute方法不再与Servlet API耦合,更易测试。

     (3) 支持更多的视图技术(JSP、FreeMarker、Velocity)。

     (4)基于Spring AOP思想的拦截器机制,更易扩展。

     (5)更强大、更易用输入校验功能。

 

二、搭建Struts2的开发环境

1.下载最新的包

     它的目录结构如下。

     Struts2基础学习(一)—初识Struts2

     apps: 包含了基于Struts2的示例应用。

     docs: 包含了Struts2相关文档及API文档。

       libs: 包含了Struts2框架和核心类库,及第三方插件类库。

       src: 包含了Struts2框架的全部源码。

 

2.复制核心jar包到工程中

     Struts2基础学习(一)—初识Struts2

 

3.配置核心过滤器

	<!-- Struts2核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

4.创建struts.xml的配置文件放到src目录下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 开启开发模式 -->
<constant name="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default"> <!-- 配置一个动作 -->
<action name="sayHello" class="com.kiwi.action.HelloAction" method="sayHello">
<!-- 配置结果视图 -->
<result name="success">/success.jsp</result>
</action> </package> </struts>

 

注意:

       配置struts.xml无提示问题的解决

      (1)在struts2-core-2.3.7.jar中含有 struts-2.3.dtd,将其复制到硬盘任意位置 例如:G:\\struts-2.3.dtd。

      (2)myeclipse - window - preferences - 搜索xml catalog - Add,注意key的类型要选用url。

 

三、Struts2的配置文件

1.配置文件的加载顺序

Struts2框架按照如下顺序加载struts2配置

     default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面。

     struts-default.xml 该文件保存在 struts2-core-2.3.7.jar。

     struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar。

      struts.xml 该文件是web应用默认的struts配置文件。

      struts.properties 该文件是Struts的默认配置文件。

      web.xml 该文件是Web应用的配置文件。

如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值。

 

2.配置文件的内容标签

(1)package

     作用: 分模块开发。

     属性:

           name:  包的名称,唯一的。

           extends: 一般都需要直接或间接的一个叫做struts-default的包名,因为struts2的一些核心功能配置都在这里。

           abstract: 如果为true,说明是一个抽象包,让别人去继承,没有任何action子元素的包就可以定义为抽象包。

           namespace: 名称空间,一般以"/"开头,和action一起构成了用户的访问路径。

           Struts2基础学习(一)—初识Struts2

           Struts2基础学习(一)—初识Struts2

 

Action名称的搜索顺序

Struts2基础学习(一)—初识Struts2

 

(2)action

     作用: 配置动作。

     属性:

           name: 动作的名称,要唯一。

           class: 动作的全类名,可以不指定,默认是 com.opensymphony.xwork2.ActionSupport。

           method: 执行的动作类的动作方法。可以不指定,默认值是execute。

 

(3)constant

     default.properties定义了struts2 框架的大量常量,开发者可以通过改变这些常量来满足应用的需求,修改struts2 的配置常量,可以通过以下三种方式配置。

     a: 配置src/struts.xml

        <constant name="struts.devMode" value="true"></constant>

     b: 配置src/struts.propertis

         struts.devMode=false

     c: 配置web.xml

	<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param>
<param-name>struts.devMode</param-name>
<param-value>false</param-value>
</init-param> </filter>

 

常见的constant

指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出

     <constant name="struts.i18n.encoding" value="UTF-8"/>

该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开

     <constant name="struts.action.extension" value="action"/>

设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭

     <constant name="struts.serve.static.browserCache" value="false"/>

当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开

     <constant name="struts.configuration.xml.reload" value="true"/>

开发模式下使用,这样可以打印出更详细的错误信息

     <constant name="struts.devMode" value="true" />

默认的视图主题

     <constant name="struts.ui.theme" value="simple" />

与spring集成时,指定由spring负责action对象的创建

     <constant name="struts.objectFactory" value="spring" />

该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false

    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

上传文件的大小限制

     <constant name="struts.multipart.maxSize" value=“10701096"/>

 

3.指定多个Struts配置文件

     在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:

<struts>
<include file="struts-part1.xml"/>
<include file="struts-part2.xml"/>
</struts>

 

四、MVC模式

1.概述

     MVC是一种架构型模式,它本是并不引入新的功能,只是指导我们改善应用程序的架构,使得应用程序的模型和视图相分离,从而得到更好的开发和维护效率。

     MVC模式中,应用程序被划分成模型、视图、控制器三个部分。其中模型部分包含了应用程序的业务逻辑和业务数据。视图部分封装了应用程序的输出形式,也就是页面。而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。

     MVC模式的这三个部分职责明确,而且相互分离,因此每个部分都可以独立改变而不影响其他部分,从而大大提高了应用的灵活性和重用性。

 

2.MVC各个部分的作用

模型(Model): 负责封装应用的状态,并实现应用的功能。通常又分为数据模型和业务逻辑模型。数据模型负责存放业务数据,比如订单信息、用户信息。业务逻辑模型包含了应用的业务操作,比如订单的添加或者修改。

视图(View): 将模型的内容展现给用户,用户可以通过视图请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户,提供页面与用户进行交互。

控制器(Controller): 用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求时,会调用相应模型来实现用户请求的功能,然后选择相应的视图把模型更新后的数据展示给用户。

 

3.Struts2与MVC

     Struts2是一种基于MVC的Web应用框架。

     Struts2基础学习(一)—初识Struts2

 

1.控制器—FilterDispatcher

     用户请求首先会到达前端控制器FilterDiapatcher,FilterDiapatcher会根据用户提交的请求和struts.xml中的配置,选择合适的Action,然后让这个Action处理这个请求。

 

2.模型—Action

     在用户请求经过FilterDiapatcher之后,被分发到相应的Action,Action负责把用户请求中的参数组成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,然后获取下一个视图展示所需要的数据。

 

3.视图—Result

     视图结果把Action中获取到的数据展现给用户。