一 * 创建web工程
二 * 引入struts2需要的jar包 (最少依赖包)
struts2-core-2.1.8.1.jar :Struts 2框架的核心类库
xwork-core-2.1.6.jar :XWork类库,Struts 2在其上构建
ognl-2.7.3.jar :对象图导航语言(Object Graph Navigation Language),
struts2框架通过其读写对象的属性
freemarker-2.3.15.jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后需要加入此文件
commons-io-1.3.2.jar,上传文件依赖的jar包
三 * 定义jsp页面
<ahref="${pageContext.request.contextPath}/primer/helloWorldAction.action">helloWorld</a><br>
四* 创建action
public class HelloWorldAction implements Action{
public String execute() throws Exception {
System.out.println("HelloWorldAction action");
return "success";
}
}
五* 创建struts.xml文件
* 该文件放置在src下
* 该文件的规范在struts2-core-2.1.8.1.jar包下/struts-2.1.7.dtd文件中
* 配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 客户端的请求路径 /primer/helloWorldAction.action-->
<!-- package标签:类似于java中的包,规范化管理
* name:包的唯一名称, 主要作用用于继承
* namespace:命名空间,包的唯一标识,根据该属性,来查找具体是哪一个包
* extends:该属性用于继承其他的包,在struts2中必须继承struts-default包,该包在struts2-core-2.1.8.1.jar/struts-default.xml文件中代码如下
<package name="struts-default" abstract="true">
action标签:请求的action的配置
* name:action的唯一标识,代表的是请求的action的名称
* class:对应的action的完整的类路径
result:标签:表示返回的结果
* name:属性:该标签的唯一名称.该属性的值必须和execute方法的返回值相同
public String execute() throws Exception {
System.out.println("HelloWorldAction action");
return "success";
}
* result中文本:要转向的路径
-->
<!-- 注意/不能丢,否则找不到Action-->
<package name="primer" namespace="/primer" extends="struts-default">
<action name="helloWorldAction" class="cn.itcast.primer.HelloWorldAction">
<result name="success">/primer/success.jsp</result>
<result name="error">/primer/error.jsp</result>
</action>
</package>
</struts>
为什么要继承struts-default.xml
原因:在struts-default.xml文件中,定义了拦截器和拦截器栈,而struts2中很多工作是由拦截器完成的,如果不继承struts-default包,则struts2什么都不能干
六* 在web.xml文件中配置过滤器,加载struts.xml文件
<filter>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
七* 测试:
http://localhost:808/itcast1021struts2/primer/test.jsp
struts2 配置文件加载顺序:struts-default.xml àstruts-plugin.xml--à struts.xml