struts2开发环境搭建,主要分为如下几部:
1.下载struts2相关开发包 http://struts.apache.org/download.cgi#struts23161
2.创建一个struts2 web工程,copy相关jar包到此工程的lib文件中。
下载的struts2开发包中,有四个文件夹,其中app文件夹是一些例子。我们可以解压blank工程,将其中的lib中的jar包拷贝到所创建的lib文件中。
3.修改web.xml配置文件,指定所有请求都交由struts2来处理。主要是在web.xml配置文件中配置一个filter.此filter将会将所有请求都交由struts2来处理。配置内容如下:
<display-name>Struts2 test1</display-name>
<filter>
<filter-name>struts2</filter-name>
<!-- 指定处理的filter-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--指定所有请求都交由struts2来处理 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.添加struts.xml配置文件,此文件应放在classes目录下,但是在开发模式下,只需要将其放到src目录下即可。此配置文件的所有配置都放在一个package元素内,不同的package元素的配置相互独立。另外此package必须继承struts-default.可以从blank工程中copy一份struts.xml并对其进行修改。
<struts>
<!-- 指定devMode为开发模式,即每修改一处配置后,无须重新发布web应用,即可生效 -->
<constant name="struts.devMode" value="true" />
<!-- namespace指定命名空间 -->
<package name="default" namespace="/" extends="struts-default">
<!-- 它是一个通用的action,*为通配符,当从浏览器地址栏解析uri地址,并通过namespace解析
获取到了对应的action名称后,将在struts中查询对应的配置。找到后将调转到result指定的
显示页面。 -->
<action name="*Action">
<result>
/WEB-INF/jsp/{1}.jsp
</result>
</action>
</package>
<!-- Add packages here -->
</struts>
需注意的是上面配置了一个constant标签,其name是struts2中的value stack中指定的。上面通过通配符来指定一个通用的action配置,它将根据请求uri来调转到相应的显示页面。
下面是struts2处理请求的流程简单描述:
1.浏览器中输入请求访问的资源地址。http://localhost:8080/Struts2_001/TestAction
2.浏览器将此请求提交给tomcat服务器。
3.tomcat服务器根据url请求地址,找到对应的web应用Struts2_001
4.查找Struts2_001的web.xml配置文件,根据配置文件指定,交给struts2来处理
5.解析出url的命名空间,为"/",然后查找struts.xml配置文件,通过匹配namespace(配置文件中为"/"),来查找到匹配的package配置。
6.查找到了对应的package配置后,在根据url指定的action(此处为TestAction),来查找匹配的action(查到配置文件中为*Action), 其中*匹配的内容为Test,即{1}为Test.
7.根据result来调转的相应的jsp页面,其实此处result忽略了其name属性值,默认为success。而TestAction也没有指定特定的action来出去此action,struts2将会返回一个默认的success。
上面是一个简单的struts处理流程。下面是一个简单的流程图: