文章目录
1. Struts 2的资源获取
- Struts官方地址:http://struts.apache.org
- Struts 2 目录结构
apps目录:Struts2示例应用程序
docs目录:Struts2指南、向导、API文档
lib目录:Struts 2的发行包及其依赖包
src目录:Struts 2项目源代码
2. 使用Struts 2 开发程序
2.1 加载Struts2 类库
- 将空项目中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下
2.2 配置web.xml文件
- 将全部请求定位到指定的Struts 2过滤器中
<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>
【说明】Struts2 的核心控制器
-
Before 2.1.3 :
org.apache.struts2.dispatcher.FilterDispatcher
-
After 2.1.3 :
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2.3 开发视图层页面
<div>
<h1>
<!--显示Struts Action中message的属性内容-->
<s:property value="message"/>
</h1>
</div>
<div>
<form action="helloWorld.action" method="post">
请输入您的姓名:
<input name="name" type="text" />
<input type="submit" value="提交" />
</form>
</div>
== 补充:JSP获得项目根目录==
<img src="<%=basePath%>/images/pic1.jpg"/>
<img src="Struts201/images/pic1.jpg"/>
<img src="${pageContext.request.contextPath }/images/pic1.jpg"/>
2.4 开发控制层Action
- 编写 HelloWorldAction
public class HelloWorldAction implements Action {
// 用户输入的姓名
private String name = "";
// 向用户显示的信息
private String message = "";
public String execute() {
// 根据用户输入的姓名,进行"Hello,XXXX!"的封装
this.setMessage("Hello,"+this.getName()+"!");
// 处理完毕,返回导航结果的逻辑名
return "success";
}
… //省略setter、getter方法
}
2.5 配置struts.xml文件
将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。
<?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.devMode : 是否设置为开发模式 true:是开发模式,否则不是
注:在开发模式下,修改Struts的配置文件后不需要重新启动Tomcat服务器即生效。否则修改Struts配置文件后需要重新启动Tomcat服务器才生效。
-->
<constant name="struts.devMode" value="true" />
<!--
namespace :对应与项目名称后面的"/"(例如Struts2_0100_Introduction后面的"/")
(http://localhost:8080/Struts2_0100_Introduction/)
-->
<package name="default" namespace="/" extends="struts-default">
<action name="helloWorld" class="cn.jbit.strutsdemo.HelloWorldAction">
<result name="success">helloWorld.jsp</result>
</action>
</package>
</struts>
【说明】
- namespace:基于当前应用 , / 标识应用的根目录
- action 的 name属性值与namespace中的 / 进行组合。