首先说明一下 我的环境
java version "1.8.0_121"
Tomcat version 8.5.11
IDE IntelliJ IDEA
Struts2 version 2.5.10
下载Struts2
如果要下载请点击这里,我现在使用的版本是最新版Apache Struts 2.5.10 GA。当然你也可以使用Apache Struts 2.3.31 GA或者其他版本。
这里我们下载[基础的Struts2工程lib]和[Struts2 2.5.10的所有文件]
搭建基础工程
首先我们使用IntelliJ IDEA创建一个WEB工程
当然在创建的时候,也可以直接勾选Struts2,这样就会自动修改web.xml和添加struts.xml了。
然后在src目录下加入struts.xml并且配置web.xml文件,在web.xml中加入如下代码
<filter>
<filter-name>action2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>action2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
做完上面几个步骤,基础工程就搭建完成了,下面我来说一下为什么需要struts.xml和配置web.xml.
- struts.xml是Struts 2的核心配置文件。包含action、result等配置,主要负责管理Struts 2框架的业务控制器Action。
- web.xml是整个web工程的配置文件。用户的请求到达服务器以后,被配置在web.xml中的Struts2的核心Filter所拦截。拦截请求的规则是用过
<url-pattern>
元素进行配置的,/*
表示拦截所有请求。当然我们也可以写成/xxxx/*
这样就只会拦截xxxx
下的请求。
除此之外还有几个其它配置文件
-
struts-default.xml配置文件
从名字就能看出来,这是一个默认的配置文件,也是基本配置文件;在后续的学习过程中,你会发现很多配置项的默认值,很多框架最基本的配置都是在该文件中;但是,我们几乎不会直接和这个文件打交道,甚至有的人都不知道这个文件在哪里。现在你可以使用解压缩工具查看struts2-core-2.5.10.jar
这文件,在struts2-core-2.5.10.jar
文件中,可以发现struts-default.xml
配置文件的身影。
注意:此文件会被自动加载。 -
struts-plugin.xml配置文件
从名字也能看出,这个配置文件是Struts2框架插件的配置文件,由于Struts2框架有很多丰富的插件,所以很多在struts-default.xml配置文件中定义的默认值对于这些插件来说,已经不能胜任了,所以只好在插件的struts-plugin.xml配置文件中覆盖它们,就是这样,如果你亲自去写一个Struts2的插件,你就会明白这一切,就是这样,这个配置文件就是来干这个事情的。
你会从你下载的Struts2的安装包的lib/目录下,发现很多类似这样struts2-xxx-plugin-xxx.jar
命名的Jar包,就是这些插件,你可以使用解压缩工具查看这些Jar包,你就会发现struts-plugin.xml
配置文件。 -
struts.properties配置文件
该文件是常量配置文件,该配置文件定义了Struts2框架的大量常量,这些常量对于整个Struts2应用整体都起作用,我们可以通过改变这些常量来满足应用的需求。
struts.properties文件是一个标准的Properties文件,该文件包含了一系列的key-value对,每个key就是一个Struts2常量,该key对应的value就是一个Struts2的常量值,例如:
### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data
# struts.multipart.parser=cos
# struts.multipart.parser=pell
# struts.multipart.parser=jakarta-stream
struts.multipart.parser=jakarta
# uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=
struts.multipart.maxSize=2097152