Struts 2框架的下载与安装:
Struts 2下载地址: http://struts.apache.org/download.cgi
截止笔者准备开始着手写[Struts 2]系列博客时,Struts 2的最新版本为: Struts 2.3.24.1
下载Struts 2.3.24.1时包含如下下载项:
Full Distribution: Struts 2的完整版
Example Applications: Struts 2的示例应用 (Struts 2的完整版包含该选项下的全部应用)
Essential Dependencies Only: Struts 2的核心库(Struts 2的完整版包含该选项下的全部内容)
Documentation: Struts2的相关文档(Struts 2的完整版包含该选项下的全部内容)
Source: Struts 2的全部源代码(Struts 2的完整版包含该选项下的全部内容)
这里我们只需下载 Full Distribution(Struts 2的完整版)即可。
Struts 2框架目录结构:
apps: 该文件夹下包含了基于Struts 2的示例应用,包含了5个WAR文件;
docs: 该文件夹下包含了Struts 2的相关文档,包含Struts 2的快速入门、Struts 2的文档以及API文档等内容(该文件夹包含了docs、struts2-core-apidocs<Struts 2核心文档>、struts2-plugins<Struts 2官方插件的API文档>、xwork-apidocs<XWork的文档>);
lib: 该文件夹下包含了Struts 2框架的核心类库,以及Struts 2的第三方类库;
src: 该文件夹下包含了Struts 2框架的全部源代码;
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- HELLO WORLD -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
下面我们一步步手动编写第一个Hello World程序:
(1) MyEclipse中新建一个Web Project;
(2) 解压apps目录下struts2-blank.war示例,将解压目录的WEB-INF/lib下的jar包拷贝到上述项目的WEB-INF/lib下
(3) 编辑Web应用的web.xml配置文件,配置Struts 2的核心Filter,如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>BestEU</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 定义Struts 2的核心控制器: StrutsPrepareAndExecuteFilter -->
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- StrutsPrepareAndExecuteFilter用来处理所有的HTTP请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在做好上述准备,我们就可以使用Struts 2来为我们做一些事情了。下面将通过Struts 2来实现接受请求与返回结果。
(1) struts 2配置文件,配置Action
将Struts 2的配置文件struts.xml文件放在classes路径下,该文件主要放置Struts 2的Action定义。定义Struts 2 Action时,处理需要指定该Action的实现类外,还需要定义Action处理结果和资源之间的映射关系。
下面为本示例应用的struts.xml文件代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- 配置Struts 2配置文件的根元素 -->
<struts>
<!-- 指定Struts 2开发模式devMode(开发模式下修改struts.xml后无需重启服务,可实现热部署) -->
<constant name="struts.devMode" value="true" />
<!-- Struts 2的Action必须放在指定的包空间下定义 -->
<package name="default" namespace="/" extends="struts-default">
<action name="*">
<result>/WEB-INF/content/what/{1}.jsp</result>
</action>
</package>
</struts>
注: 在配置文件中我们指定了请求路径中包含namespace为"/"的均被拦截,且该action可处理所有的请求,并返回结果/WEB-INF/content/what/{1}.jsp ({1}与*号内容相同)
(2) 启动Web服务,输入请求地址。
请求地址例如: http://localhost:7996/ZLv_Struts/HelloWorld , 返回结果截图:
报错中我们可以看到Struts 2已经起作用,但是指定目录下我们没有创建HelloWorld.jsp,所以报错找不到HelloWorld.jsp。
到这里,我们完成了Java Web引用Struts 2的环境搭建,并以HelloWorld小程序测试了Struts 2.
在下一节内容中我们将通过使用Struts 2实现简单的登录功能,使读者可以更好的掌握Struts 2的配置文件及处理流程.