Struts的下载和安装
Struts2是以WebWork为核心的,它采用拦截器的机制来处理用户的请求。
访问官网http://struts.apache.org/。点击Download
- Full Distribution:下载Struct2的完整版,通常建议下载该选项,该选项包括Struct2的示例应用、空示例应用、核心库、源代码和文档等。
- Example Applications:仅下载Struct2的示例应用。
- Essential Dependencies Only:核心库。
- Documenttation:相关文档。
- Source:源码
我用的是struts-2.3.15.1-all.zip,解压完之后,目录结构
- apps:自带的案例
- docs:开发文档
- lib:所有的jar包(用哪个拷贝哪个)
- src:源码
例子
1.创建web项目struts2
2.导入jar包,13个。参考给的例子struts-2.3.15.1-all\struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib,将里边的jar包都添加上。添加到项目的WEB-INF的lib文件中。(把war文件改成jar文件,然后解压)
- asm-3.3.jar:操作Java字节码的类库
- asm-commons-3.3.jar:提供了基于事件的表现形式
- asm-tree-3.3.jar:提供了基于对象的表现形式
- commons-fileupload-1.3.jar:Struts2文件上传组件依赖包
- commons-io-2.0.1.jar:Struts2的输入输出,传文件依赖的JAR
- commons-lang3-3.1.jar:包含一些数据类型工具,是对java.lang包的增强
- commons-logging-1.1.3.jar:对日志的扩展
- freemarker-2.3.19.jar:Struts2标签模板使用的类库
- javassist-3.11.0.GA.jar:Javascript字节码解释器
- log4j-1.2.17.jar:日志开源组件
- ognl-3.0.6.jar:OGNL表达式
- struts2-core-2.3.15.1.jar:Struts框架的核心类库
- xwork-core-2.3.15.1.jar:WebWork核心库,Struts2的构建基础。
3.在web.xml配置文件中,配置Struts2的核心过滤器。(去给的例子里去找怎么配)
<!-- 配置Struts2核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.定义处理用户请求的Action类
package com.eaglezsx.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport{
public String execute() throws Exception{
return SUCCESS;
}
}
返回值为SUCCESS,该常量字段是从父类中继承的。execute()方法的返回值对应着struts.xml文件中<result>
标签中name属性的值,会执行对应处理结果下的资源视图。
5.配置Struts2的配置文件。(去那个例子里边去找怎么配)
在src目录下新建一个名称为struts.xml文件,这个文件必须在classes的根目录下。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--Struts2的Action必须放在指定的包空间下定义 -->
<package name="hello" namespace="/" extends="struts-default">
<!-- 定义action -->
<action name="helloWorld" class="com.eaglezsx.action.HelloWorldAction">
<!--定义处理结果和视图资源之间的映射关系-->
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
对于struts.xml的dtd约束可以在struts2-core-2.3.15.1.jar中的struts-2.3.dtd中找到。
使用dtd来获得本地struts.xml提示:开发过程中国如果可以上网,struts.xml会自动缓存dtd,提供提示功能。如果不能够上网,则需要手动配置本地dtd,这样才能够使struts.xml产生提示。
找到struts-2.3.dtd这个文件,在WEB-INF下建个文件夹dtd,把他放进去。Window–Preferences,搜索xml,找到XML Catalog,User Specified Entries,点击Add,在Location中找到刚才添加的文件,Key type选择URI,Key填写http://struts.apache.org/dtds/struts-2.3.dtd
6.创建视图文件
在WebRoot目录下创建一个index.jap,在其中编写一个超链接,用于访问Action对象
<body>
<a href="${pageContext.request.contextPath }/helloWorld.action">Hello Struts2</a>
</body>
然后再在WebRoot目录下创建一个success.jsp,作为Action对象处理成功后的返回页面
<body>
欢迎学习第一个Struts2程序
</body>
7.执行流程的分析
在客户端浏览器上单击index.jsp中的超链接,会发送一个helloWorld.action请求,该请求被核心控制器拦截到,通过匹配struts.xml文件中的配置,找到请求对应的HelloWorldAction,并默认调用HelloWorldAction中的execute()方法,返回逻辑视图名。然后再通过匹配找到并转发到对应的视图页面success.jsp中,最后响应并输出返回结果。