第一个 struts2 程序
一、struts2 概述
- Struts2 是 Apache 软件组织推出的一个基于 MVC 模式的轻量级 Web 框架,以理解为 WebWork 的更新产品
struts2的特点
- 项目开源,使用及拓展方便。
- 通过简单、集中的配置调度业务类,使配置和修改都非常容易。
- 提供简单、统一的表达式语言访问所有可供访问的数据。
-提供标准、强大的验证框架和国际化框架。
-提供强大、可以有效减少页面代码的标签。 - 提供 Exception 处理机制,并且具有良好的 Ajax 支持。
- Result 方式的页面导航,通过 Result 标签很方便地实现重定向和页面跳转。
- 拥有智能的默认设置,不需要另外进行繁琐的设置。使用默认设置就可以完成大多数项目程序开发所需要的功能
二、Struts2目录结构和基础JAR包介绍
1、目录结构
- structs2 下载地址:

名称 | 作用 |
---|
apps | 用于存放官方提供的 Struts2 示例程序,这些程序可以作为学习者的参考资料。各示例均为 war 文件,可以通过 zip 方式进行解压。 |
docs | 用于存放官方提供的 Struts2 文档,包括 Struts2 的快速入门、Struts2 的文档,以及 API 文档等内容。 |
lib | 用于存放 Struts2 的核心类库,以及 Struts2 的第三方插件类库。 |
src | 用于存放该版本 Struts2 框架对应的源代码。 |
2、基础JAR包
- 最快速的开始方式就是解压官方提供的示例程序,可以提取里面的 jar 和 配置文件复制到自己的工程中开始使用
文件名 | 说 明 |
---|
asm-3.3.jar | 操作 Java 字节码的类库 |
asm-commons-3.3.jar | 提供了基于事件的表现形式 |
asm-tree-3.3.jar | 提供了基于对象的表现形式 |
struts2-core-2.3.37.jar | Struts2 框架的核心类库 |
xwork-core-2.3.37.jar | Web Work 核心库,Struts2 的构建基础 |
ognl-3.0.6.jar | 对象图导航语言(Object Graph Navigation Language),Struts2 框架通过其读/写对象的属性 |
freemarker-2.3.22.jar | Struts2 标签模板使用的类库 |
javassist-3.11.0.GA.jar | JavaScript 字节码解释器 |
commons-fileupload-1.4.jar | Struts2 文件上传组件依赖包 |
commons-io-2.2.jar | Struts2 的输入/输出,传文件依赖的 JAR |
commons-lang-2.4.jar | 包含一些数据类型工具,是对 java.lang 包的增强 |
log4j-api-2.2.jar | Struts2 的日志管理组件依赖包的 API |
log4j-core-2.2.jar | Struts2 的日志管理组件依赖包 |
三、第一个 struts2 程序
1、导入基础 jar
2、web xml 配置过滤器
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
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">
<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>
</web-app>
3、书写 Action 类
package com.stan.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
4、struts.xml配置action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="hello" namespace="/" extends="struts-default">
<action name="helloWorld" class="com.stan.action.HelloWorldAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
5、创建必须的 jsp 页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>首页</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/helloWorld.action">
第一个 Struts2 程序!
</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>成功页面</title>
</head>
<body>
您的第一个小程序执行成功,欢迎来到Struts2的世界!
</body>
</html>
6、开启 tomcat 显示
- 注意 idea 的 tomcat 配置
- 需要 jsp 的实时修改生效的话,需要如下配置
7、基本流程分析