第14章Struts2基础
14.1 Struts2概述
14.1.1 理解MVC原理
14.1.2 Struts2框架的产生
14.1.3 Struts2的结构体系
14.2 Struts2入门
14.2.1 Struts2的获取与放置
开发struts项目必须添加的类库文件
名称 | 说明 |
---|---|
struts2-core-2.5.20.jar | Struts2 的核心类库 |
xwork-core-2.1.6.jar | Xworkd 的核心类库 |
ognl-3.1.21.jar | Ognl表达式语言类库 |
commons-logging-1.2.jar | Log4j日志支持类库 |
freemarker-2.3.28.jar | freemarker模板语言支持类库 |
commons-io-2.6.jar | 处理IO操作的工具类库 |
commons-fileupload-1.4.jar | 文件上传支持类库 |
14.2.2 第一个Struts程序
- 1.在web.xml中声明Struts2提供的过滤器
8.1
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
- 2.在源码文件夹中(Src)创建struts.xml的配置文件
/first.jsp
- 3.创建主程序index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
主页
请求Struts2
- 4.创建first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
第一个Struts2程序
第一个Struts2程序!
14.3 Action对象
14.3.1 认识Action对象
Actions是Struts2框架的核心,因为它们适用于任何MVC(Model View Controller)框架。 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑。
Action对象的方法说明
public interface Action {
public static final String SUCCESS = "success";//
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}
14.3.2 请求参数的注入原理
setter方法注入getter方法获取
public class UserAction extends ActionSupport{
private String username;
public void setUsername(String username){
this.username=username;
}
public String getUsername(){
return username;
}
public String execute(){
return SUCCESS;
}
}
14.3.3 Action的基本流程
14.3.4 什么的动态Action
配置方法为Action地址与请求字符串之间以"!"号隔开
示例代码
/userAction!add
14.3.5 动态Action的应用
- 1.创建UserAction.java ,并且分别编写add()方法与update()方法,用于处理添加用户信息的请求及更新用户信息
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
// 提示信息
private String info;
// 添加用户信息
public String add() throws Exception{
info = "添加用户信息";
return "add";
}
// 更新用户信息
public String update() throws Exception{
info = "更新用户信息";
return "update";
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
- 2.创建struts.xml(存放在源码文件夹即src文件夹)
user_add.jsp
user_update.jsp
- 3.创建user_add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
添加用户信息
- 4.创建user_update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
更新用户信息
- 5.创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
首页
添加用户
更新用户
14.4 Struts2的配置文件
14.4.1 Struts2的配置文件类型
Struts2的配置文件主要有4个
名称 | 说明 |
---|---|
struts-default.xml | 位于struts2-core-2.1.14.1.jar文件的org.apache.struts2包中 |
struts-plugin.xml | 位于struts2提供的各个插件的包中 |
struts.xml | web应用默认的struts2配置文件 |
struts.properties | Struts2框架中属性配置文件 |
web.xml | 在该文件中也可以设置Struts2框架的一些信息 |
14.4.2 Struts2的包配置
在struts.xml文件中使用包,不仅可以提高程序的可读性,还可以简化日后的维护工作,其使用方式如下
14.4.3 名称空间配置
将book的名称空间指定为“/bookmanager”
在
元素中指定名称空间属性,名称空间的值需要以"/"开头,否则找不到Action对象的访问地址。
14.4.4 Action相关配置
在struts.xml中,为action进行配置
user_add.jsp
user_update.jsp
属性 | 说明 |
---|---|
name | 用于配置Action对象被请求的URL映射 |
class | 指定Action对象的类名 |
method | 设置请求Action对象时,调用Action对象的哪一个方法 |
converter | 指定Action对象类型转换器的类 |
14.4.5 通配符实现简化配置
在struts.xml中,通配符主要有两个
- 1.通配符"*",匹配0个或多个字符
- 2.通配符"":是一个转义字符,如需要匹配"",则使用"/"进行匹配
user_add.jsp
user_update.jsp
元素的name属性值为"add*",它匹配的是以字符"add"开头的字符串,如"addUser"、"addBook"都可以匹配
14.4.6 返回结果配置
user_add.jsp
user_update.jsp
如果不设置
元素的name属性,默认情况下,它的值为success。
14.5 Struts2的开发模式
14.5.1 实现Servlet API交互
- 实例化ActionContext
public static ActionContext getContext()
- 获取Map类型request
public Object get(Object key)
- 获取Map类型的session
public Map getSession()
- 获取Map类型的application
public Map getApplication()
14.5.2 域模型DomainModel
14.5.3 驱动模型ModelDriven
14.6 典型应用
14.6.1 Struts2处理表单数据
- 1.创建GreetingAction.java
public class GreetingAction extends ActionSupport {
private static final long serialVersionUID = 1L;
// 用户名
private String username;
// 处理请求
@Override
public String execute() throws Exception{
// 判断用户名是否有效
if(username == null || "".equals(username)){
// 返回到错误页面
return ERROR;
}else{
// 返回到成功页面
return SUCCESS;
}
}
// username属性的getter方法
public String getUsername() {
return username;
}
// username属性的setter方法
public void setUsername(String username) {
this.username = username;
}
}
- 2.创建struts.xml(放在源码文件夹下,即src目录)
success.jsp
error.jsp
- 3.创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
主页
- 4.创建success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
欢迎
,您好!
欢迎使用来到本站。
在jsp页面中使用 Struts2提供的标签库,需要事先引入 Struts2的标签库,实例中通过
"<%@ taglib prefix="s" uri="/struts-tags" %>"
代码进行引入
- 6.创建error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
错误
错误:您没有输入姓名!