好久没用过Struts2了,现在Struts2慢慢退出舞台了,但是很多项目还需要用Struts2进行开发和维护,最近有人问我这个,我闲来无事。就给整理下吧。
Struts2学习整理(一)
Apache Struts2与Struts1完全不同,它的核心功能都是使用拦截实现“值栈”的概念,OGNL表达式和Struts2标签来解决应用程序数据,很多注解和约定,使这个框架更加易于使用。
回顾Struts2的使用过程,Struts2是在WebWork2基础发展而来的。值得注意的一点是,struts 2和struts 1在代码风格上几乎不一样。他们只是名字差不多而已,其实根本就不是一回事。
Struts 2 基本结构流程 :
1、web浏览器请求一个URL资源。
2、过滤器Dispatcher查找方法,确定适当的Action。
3、拦截器自动对请求应用通用功能,如验证和文件上传操作。
4、Action的execute方法通常用来存储和重新获得信息。
5、结果被返回到浏览器。
搭建Struts 2 开发环境
1、找到开发Struts 2的应用需要用到的jar包。
2、编写Struts 2的配置文件。
3、在web.xml中加入Struts 2 MVC启动框架配置
开发Struts 2 最少用到的jar文件
Struts-core-2.x.x.jar : Struts 2 框架的核心类库
xwork-2.x.x.jar : XWork类库,Struts 2 在其上构建
ognl-2.6.x.jar : Object Graph Navigation Language , Struts 2 框架通过其读写对象的属性。
freemarker-2.3.x.jar : Struts 2 的UI标签的模版使用 Freemarker编写。
commons-logging-1.1.x.jar : ASF出品的日志包。
commons-fileupload-1.2.1.jar : 文件上传组件。
Struts2的相关配置文件
* default.properties -- 在org/apache/struts2/目录下,代表的是配置的是Struts2的常量的值
* struts-default.xml -- 在Struts2的核心包下,代表的是Struts2核心功能的配置(Bean、拦截器、结果类型等)
* struts-plugin.xml -- 配置插件的信息
* struts.xml -- 重点中的重点配置,代表WEB应用的默认配置,可以配置常量,基本就配置它就可以
* struts.properties -- 该文件是Struts的默认配置文件 (可以配置常量 )
* web.xml -- 配置前端控制器(可以配置常量)
注意:后加载的配置文件会覆盖掉之前加载的配置文件(在这些配置文件中可以配置常量)
Struts2核心配置文件Struts2.xml的配置入门
<package>
标签
如果要配置的标签,那么必须要先配置标签,代表的包的概念。
包含的属性
name 包的名称,要求是唯一的,管理action配置。
extends 继承,可以继承其他的包,只要继承了,那么该包就包含了其他包的功能,一般都是继承struts-default
namespace 名称空间,一般与标签中的name属性共同决定访问路径,常见的配置如下:
* namespace="" -- 默认的名称空间(访问的方式和 namespace="/"是一样的)
* namespace="/" -- 根名称空间
* namespace="/aaa" -- 带有名称的名称空间
* abstract -- 抽象的。这个属性基本很少使用,值如果是true,那么编写的包是被继承的。
<action>
标签
代表配置action类,包含的属性
name 和<”package>标签的namespace属性一起来决定访问路径的。
class 配置Action类的全路径(默认值是ActionSupport类)
method Action类中执行的方法,如果不指定,默认值是execute
<result>
标签
action 类中方法执行,返回的结果跳转的页面
name 结果页面逻辑视图名称
type 结果类型(默认值是转发,也可以设置其他的值)
默认的Action和Action默认的处理类
默认的Action
在地址栏上输入一个不存在的action请求,程序会报404的异常。
但是在< package>标签中通过< default-action-ref name=”指定action标签name属性”>来该请求。
Action默认处理类
在地址栏上输入一个正确的action请求,但是< action>标签中的class属性没有写具体的Action类
*在<’package>标签中通过< default-class-ref class=”指定action类的全路径”>< /default-class-ref>
Struts2配置常用的常量
可以在Struts2框架中的哪些配置文件中配置常量
struts.xml
< constant name=”key” value=”value”>< /constant>
web.xml
在StrutsPrepareAndExecuteFilter配置文件中配置初始化参数
struts.i18n.encoding=UTF-8 指定默认编码集,作用于 HttpServletRequest的setCharacterEncoding方法
struts.action.extension=action,, 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开
struts.serve.static.browserCache=true 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
struts.configuration.xml.reload=false 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
struts.devMode = false 开发模式下使用,这样可以打印出更详细的错误信息
struts.enable.DynamicMethodInvocation = true 开启对Action的动态方法访问
指定多个struts的配置文件
在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。
为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。
可以在< package>标签中,使用< include>标签来引入其他的struts_xx.xml的配置文件。例如:
< struts>
< include file=”struts-part1.xml”/>
< include file=”struts-part2.xml”/>
< /struts>
**查看上一章节 https://blog.csdn.net/qq_25814003/article/details/53738837
查看下一章节 https://blog.csdn.net/qq_25814003/article/details/53502778**