- 导入jar包
- 第二步,创建action
第三步,配置action类 访问路径
(1) 创建Struts2核心配置文件
--核心配置文件名称和位置是固定的
--位置必须在src下面,名称:struts.xml
(2) 引入dtd约束
(3)action 基本配置<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
- 第四步,配置Struts2过滤器
<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执行过程的原理
查看源代码
1.过滤器在服务器启动的时候创建,创建过滤器时候执行init方法
(1)在init方法中主要加载配置文件包含自己创建的配置文件和Struts2自带配置文件
*** struts.xml
*** web.xml
Struts2配置
1.struts2的核心配置文件
2、名称和位置是固定的
3、在配置文件中主要的三个标签package/、action /result/标签里的属性
标签 package
1.类似与代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能配置action
2.package标签属性
(1) name属性
-name属性跟功能本身没有关系的 -在一个配置文件中可以写多个package标签,name属性值就不能相同
(2) extends属性
extends="struts-defaut" 属性值是固定的,struts-default extends 继承
写了这个属性之后,在package里面配置的类具有action功能
(3)namespace属性
namespace属性值和action标签里面的name属性值构造成访问路径
标签 action
1. action标签配置 action访问路径
2. action标签属性
(1)name 属性
* namespace属性值和action标签里面的name属性值构成访问路径
* 在package标签里面可以写多个action标签,但是action的name属性值不能相同
(2) class属性
-action 全路径
(3) method属性
-比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
-让action里面多个方法执行,使用method进行配置
12. 标签 result
1.根据action的方法的返回值,配置到不同的路径里面
2.result 标签属性
(1) name 属性
<!-- 配置方法的返回值到页面 -->
<result name="ok"> /hello.jsp</result>
(2) type 属性
-配置如何到路径中(转向或重定向)
-type 属性默认值 * 做转发操作
3. 修改struts2 默认常量
(1)常用的方式
在 struts.xml 中进行配置
<constant name="struts.i18n.encoding" value="UTF-8"> </constant>
(2) 还有两种方式(了解)
在src下面创建struts.properties ,进行修改
在web.xml进行配置
13. 介绍最常用的常量
struts.i18n.encoding=UTF-8
解析:(1)表单提交数据到action里面,在action可以获取表单提交的数据
(2)表单提交数据有中文,有乱码问题,解决
- post 提交直接设置编码
- get 提交做编码转换
(3) 如果在action 获取表单时通过post 方式提交中文,中文乱码问题解决帮忙解决了,不需要自己处理问题
14 分模块开发
单独写配置文件,把配置文件引入到核心配置文件中
<!-- 引入hello.xml文件 -->
<include file="cn/itcast/action/hello.xml"></include>
15 Action 编写方式
1. action 编写三种方式
第一种 创建普通类,这个类不继承任何类,不实现任何接口
public class HelloAction {
第二种 创建类,实现接口action //不是常用
第三种 创建类,继承类 ActionSupportpublic class UserAction implements Action {
@Override
public String execute() throws Exception {
return null;
}
}
public class UserAction implements Action {
@Override
public String execute() throws Exception {
//return null;
return Action.SUCCESS; //实现接口的所有的类
}
}
public class PersonAction extends ActionSupport {
}
public class ActionSupport implements Action,
public class PersonAction extends ActionSupport {
@Override
public String execute() throws Exception {
return SUCCESS }
}
16 访问 Action 的方法 (重点)
1.有三种方式实现
第一种 使用action标签的method 属性,在这个属性里面写执行的action 方法
第二种 使用通配符方式实现
第三种 动态访问实现(不用)
2. 演示错误
(1) 如果action的方法里有返回值,在配置文件中没有配置或返回值不相同,会出错
(2)在action里面的方法有返回值,如果有返回值时候类型必须是String
(3)在action里面的方法可以没有返回值,没有返回值的时候,在result 标签不需要配置
- 把方法写成void
- 让返回值,返回“none”
public String execute(){
return NONE ;
}
17. 使用 action 标签 method 属性
1. 创建action,创建多个方法
2. 使用method 配置
缺陷:action 每个方法都需要配置,如果action里面有多个方法,配置很多的action
18. 使用通配符实现(重点)
1、在action 标签里面name 属性,name 属性值里面写符号 * 星号
(1) * 理解:表示匹配任意内容
-比如访问hello, * 可以匹配到
-比如访问 add,* 可以匹配到