1. 搭建Struts2开发环境--开发Struts2应用依赖的jar文件
参考:
F:\Jsp\workspace\Struts2Demo\WebRoot\WEB-INF\lib
2. 搭建Struts2开发环境--Struts2应用的配置文件
Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/classes下,该文件的配置模版如下:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPEstruts PUBLIC
"-//Apache Software Foundation//DTDStruts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
注意:此文件在开发的时候是放到src目录下,程序编译后会自动拷贝到WEB-INF/classes目录下。此文件我们可以不 用自己手写直接到Struts框架的例子程序中拷贝过来稍稍修改一下即可
3. 搭建Struts2开发环境--Struts2在web中的启动配置
在struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的 配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
注意:struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用 内存中的数据,而不是每次都读取struts.xml文件
4. Action的路径
在struts2中,情况就不是这样了,访问struts2中action的URL路径由两部份组成:包的命名空间+action的名称,例 如访问本例子HelloWorldAction的URL路径为:/test/helloworld (注意:完整路径为:http://localhost:端口/内容路径 /test/helloworld)。另外我们也可以加上.action后缀访问此Action。
<package name="itcast"namespace="/test" extends="struts-default">
<action name="helloworld"class="cn.itcast.action.HelloWorldAction" method="execute">
<resultname="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
5. Action名称的搜索顺序
1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package, 则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的 package里面去寻找action(默认的命名空间为空字符串“” ) ,如果在默认namaspace的package里面还寻找不到该 action,页面提示找不到action
3.寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤4;如果存在这个package,则 在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的 package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action
4.寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个 package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package 里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action
5.寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package 中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到, 页面提示找不到action。
6. Action配置中的各项默认值
<package name="itcast" namespace="/test"extends="struts-default">
<action name="helloworld" class="cn.itcast.action.HelloWorldAction"method="execute" >
<resultname="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method,默认执行action中的execute() 方法。
3>如果没有指定result的name属性,默认值为success。