一 * 创建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