struts-2.5.20
Struts2入门
本文章采用当前Struts2最新版本struts-2.5.20,读者应挑选对应的版本进行开发。
Struts2的体系结构介绍
Struts2是基于WebWork技术开发的全新Web框架,结构体系如下。
Struts2通过过滤器拦截要处理的请求,当客户端发送一个HTTP请求时,需要经过一个过滤器链。这个过滤器包括ActionContextClearUp过滤器、其它Web应用过滤器及StrutsPrepareAndExecuteFilter过滤器,其中StrutsPrepareAndExecuteFilter过滤器是必须配置的。
1、当StrutsPrepareAndExecuteFilter过滤器被调用时,Action映射器将查找需要调用的Action对象,并反回代理对象。
2、Action代理从配置管理器中读取Struts2的相关配置(struts.xml)。
3、Action容器调用指定的Action对象,在调用之前经过一系列的拦截器。(拦截器与过滤器相似,并且两次执行顺序相反)
4、当Action处理请求后,将反回相应的结果视图(JSP和FreeMarker等),在这些视图之中可以使用Struts标签显示数据并控制数据逻辑。
5、HTTP回应给浏览器,在回应的过程中同样经过过滤器链。
Struts体系结果图:
获取和配置Struts2
Struts官方地址:http://struts.apache.org
在项目开发时需要添加的基本类库支持
名称 | 说明 |
---|---|
struts2-core-2.5.20.jar | Struts2核心类库 |
ognl-3.1.21.jar | OGNL表达式语言类库 |
freemarker-2.3.28.jar | Freemarker模板语言支持类库 |
javassist-3.20.0-GA.jar | 分析、编辑和创建Java字节码类库 |
log4j-api-2.11.1.jar | 日志支持类库 |
commons-lang3-3.8.1.jar | 包含了一些数据类型工具类,是java.lang.*的扩展 |
commons-io-2.6.jar | 处理I/O操作的工具类库 |
commons-fileupload-1.4.jar | 文件上下传支持类库 |
在实际开发中可能还需要更多类库支持,其相关类库在lib目录中查找添加即可。
创建一个简单的Struts2程序
本实例应用Struts2框架处理HTTP请求。
(1)创建struts2.01的Web项目,并将Struts2支持的类库添加到WEB-INF目录下的lib文件夹中。
(2)配置web.xml文件。文件声明Struts2提供的过滤器,类名为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter。关键代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Struts2.01</display-name>
<!--配置Struts2过滤器-->
<filter>
<filter-name>struts2</filter-name><!--过滤器名称-->
<!--过滤器类-->
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name><!--过滤器名称-->
<url-pattern>/*</url-pattern><!--过滤器映射-->
</filter-mapping>
</web-app>
(3)在原码文件夹(src)中创建struts.xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<!-- 声明包 -->
<package name="basicstruts2" extends="struts-default">
<!-- 定义action -->
<action name="welcome">
<!-- 定义处理成功后映射的页面 -->
<result>/welcome.jsp</result>
</action>
</package>
</struts>
上面代码中,标签用于声明一个包,通过name属性指定包名为basicstruts2,并通extends指定此包继承struts-default包;标签用来定义Action对象,name属性用于指定访问此Action的URL;子元素用于定义处理结果和资源之间的映射关系,实现子元素的配置处理成功后跳转到welcome.jsp页面
(4)创建welcome.jsp页面,该页面为访问Action后跳转的结果页面。
<body>
Welcome To Struts2!
</body>
(5)编写主页面index.jsp,在其中编写一个超链接用于访问Action。
<body>
<a href="welcome.action">Struts2</a>
</body>
(6)实例运行结果如下:打开主页面,单击Struts2后,请求将交给Action对象welcome来处理,在处理成功后反回welcome.jsp页面。
index.jsp页面:
welcome.jsp页面: