Struts2是一个基于MVC的轻量级应用框架,由Apache开发且开源。我们可以从struts.apache.org网站上下载Struts2。
轻量级:轻便,小巧,宜用。EJB是一个重量级的框架。
框架:是一个半成品,提供了一些通用的模块,帮助我们更快地去开发应用程序。
Struts2与Struts1的区别:
Struts2是在Struts1的基础上,但是更多地引入了WebWork框架的思想。
Struts2相比Struts1多了以下内容:
(1)、Interceptor拦截器
(2)、配置文件不同,Struts2的配置文件为struts.xml。Struts1的配置文件为struts-config.xml。
(3)、引入namespace和package的概念
(4)、对标签进行了大范围的更改,比Struts1的标签易用,方便
(5)、国际化的解决方法也有所不同。
(6)在Struts2中的action与Servlet API的耦合降低了。
(7)增加了数据校验框架和自动类型转换等功能
(8)视图的映射不同。
二、搭建Struts2开发环境
(1)认识struts2的发布包目录结构
apps:Struts2提供了一些应用程序示例,我们通过这些示例,可以学习和认识Struts2。struts-blank.war是一个空白struts2开发环境。
lib:放置Struts2的API,即JAR文件;
src:放置Struts2的源代码;
docs:一些帮助文档和API文件。
(2)使用Eclipse搭建struts2开发环境的步骤
第一步:创建一个Dynamic Web Project
第二步:把struts2的JAR文件复制到项目的WEB-INF/lib目录下
commons-fileupload.x.jar
commons-io.x.jar
ognl.x.jar
freemarker.x.jar
x-work-core.x.jar
struts2-core.x.jar
javassist.x.jar(可以到Hibernate的发布包中找到)
commons-lang3-3.1.jar
第三步:修改web.xml文件,配置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>
第四步:在项目的src目录下新建一个struts2的配置文件struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
至此,Struts2的开发环境搭建完毕。
当遇到问题:
严重:Dispatcher initialization filed java.lang.RuntimeException:java.lang.reflect.Invocation时,
解决方法:
1、核对WEB-INF目录下的lib包,是否包含Struts2的8个核心jar包
文件名
struts2-core-2.3.4.1.jar
Xwork-core-2.3.4.1.jar
Ognl-3.0.5.jar
freemarker-2.3.19.jar
commons-fileupload-1.2.2.jar
javassist-3.11.0.GA.jar
commons-lang3-3.1.jar
commons-io-2.0.1.jar
注意2.1以前是没有commons-fileupload-1.2.1.jar, strut2的8个核心jar包是使用strut2必须导入的最少jar包
2、如果struts2版本是2.1以前
web.xml配置过滤器的时候应该是这样:
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
如果struts2 版本是2.1以上
web.xml配置
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteF
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>