Struts2框架
- 什么是软件框架:
1、框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率。
2、框架已经实现了一些基础功能,这样就可以提高开发效率!
- struts2框架简述:
1、Struts 2是在 struts 1和webwork的技术基础上进行了合并的全新的Struts 2框架。
2、其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以webwork为核心
3、struts2=struts1+webwork;
4、struts2是一个标准的mvc框架。
- XWork—它是webwork核心,提供了很多核心功能:
1、前端拦截机(interceptor)
2、运行时表单属性验证
3、强大的表达式语言(OGNL – the Object Graph Navigation Language)
4、IoC(Inversion of Control反转控制)容器等
- struts2框架核心功能:
1、请求数据自动封装;
2、文件上传的功能;
3、对国际化功能的简化;
4、更强大、更易用输入校验功能;
…..
Struts2框架入门
- index.jsp——>HelloServlet——–>hello.jsp web开发流程
- index.jsp——>HelloAction———>hello.jsp struts2流程
接下来就是开发阶段
- 前往Apache Struts开源网站去下载Struts源码及Jar包:http://struts.apache.org/download.cgi
- 导入Struts运行必要jar包(8个):
- struts2-core-2.3.1.1.jar(Struts 2框架的核心类库)
- xwork-core-2.3.1.1.jar(Command模式框架,WebWork和Struts2都基于xwork )
- ognl-3.0.3.jar(对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性)
- freemarker-2.3.19.jar (struts的标签模板库jar文件)
- commons-logging-1.1.x.jar(Struts 2框架使用这个日志,包来支持Log4J和JDK 1.4+的日志记录)
- commons-fileupload-1.2.2.jar(文件上传组件,2.1.6版本后需要加入此文件)
- commons-io-2.0.1.jar(传文件依赖的jar包)
- commons-lang-2.5.jar:(对java.lang包的增强)
- 在web.xml中引入struts核心过滤器:
<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
注意:
1. action类,也叫做动作类; 一般继承ActionSupport类
即处理请求的类 (struts中的action类取代之前的servlet)
2. action中的业务方法,处理具体的请求
(1)必须返回String
(2)方法不能有参数
public class HelloAction extends ActionSupport {
// 处理请求
public String execute() throws Exception {
System.out.println("Hello Struts");
return "succeed";
}
}
.
5. 配置strurs.xml:
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="cn.itcast.action.HelloAction" method="say">
<result name="succeed">/hello.jsp</result>
</action>
</package>
strurs.xml配置说明:
package 定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)
name 包的名字; 包名不能重复;
extends 当前包继承自哪个包
在struts中,包一定要继承struts-default
struts-default在struts-default.xml中定的包
abstract 表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错,abstract=true 只有当当前的包被其他包继承时候才用!
如:
<package name="basePackage" extends="struts-default" abstract="true"></package>
<package name="user" extends="basePackage">
namespace 名称空间,默认为"/"
作为路径的一部分
访问路径= http://localhost:8080/项目/名称空间/ActionName
action 配置请求路径与Action类的映射关系
name 请求路径名称
class 请求处理的aciton类的全名
method 请求处理方法
result
name action处理方法返回值
type 跳转的结果类型
标签体中指定跳转的页面
6.在index.jsp中添加连接,测试
<a href="${pageContext.request.contextPath}/hello">第一次使用struts2</a>
注:hello 是strurs.xml中的action中的name的值
部署项目到tomcat,run起来。控制台就会输出‘Hello Struts’。
struts-default.xml, 详解
- 目录:struts2-core-2.3.4.1.jar/ struts-default.xml
- bean节点指定struts在运行的时候创建的对象类型
- 指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】package struts-default 包中定义了:
a. 跳转的结果类型
dispatcher 转发,不指定默认为转发
redirect 重定向
redirectAction 重定向到action资源
stream (文件下载的时候用)
b. 定义了所有的拦截器
定义了32个拦截器!
为了拦截器引用方便,可以通过定义栈的方式引用拦截器,
此时如果引用了栈,栈中的拦截器都会被引用!
defaultStack 默认的栈,其中定义默认要执行的18个拦截器!
c. 默认执行的拦截器栈、默认执行的action
<default-interceptor-ref name="defaultStack"/>
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />