Struts2_day01
Struts2课程安排
第一天 struts2 入门 2017年10月27日
第二天 struts2 数据 2017年10月28日
第三天 struts2 值栈 2017年10月29日
第四天 struts2拦截器 2017年10月30日
Struts2概述
struts2框架应用javaee三层结构中web层框架
struts2框架在struts1和webwork基础之上发展全新的框架
-
struts2解决问题:
-
struts2版本
比较稳定版本
struts-2.3.24-all
-
web层常见框架
(1)struts2
(2)springMVC
Struts2框架入门
1. 导入jar包
(1)在lib中有jar包,不能把这些jar都导入到项目中
(2)到apps目录里面,找到示例程序,从示例程序复制jar包
2. 创建action
package com.ghw.action;
public class HelloAction {
/*
* (1)每次访问servlet时候,都会执行service方法
* - 写类集成HttpServlet,重写类里面的方法
* - 在web.xml中配置servlet访问路径
* (2)访问action,每次访问action时候,默认执行名称execute方法
*/
public String execute() {
return "ok";
}
}
3. 配置action类访问路径
(1)创建struts2核心配置文件
- 核心配置文件名称和位置是固定的
- 位置必须在src下面,名称 struts.xml
(2)引入dtd约束
(3)action配置
/hello.jsp
访问路径:http://127.0.0.1:8080/struts2_day01/hello.action
第四步 配置struts2过滤器
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
Struts2执行过程
画图分析过程
查看源代码
Struts2的核心配置文件
struts.xml
- 名称和位置固定的
- 在配置文件中主要三个标签package、action、result,还有标签里面的属性
一、标签package
类似于代码包,区别不同的action,要配置action必须先写package标签,在package标签里面才能配置action
-
package标签属性
(1)name属性
- name属性值和功能本身没有关系
- 在一个配置文件中可以有多个package标签,name的值不能相同
(2)extends属性
extends="struts-default
- 属性值固定的,struts-default
- 写了这个属性值,在package里面配置的类具有action功能
(3)namespace属性
- namespace属性值和action标签里面的name属性值构成访问路径
二、标签action
action标签配置action访问路径
-
action标签属性
- name属性
- namespace属性值和action标签里面的name属性值构成访问路径
- 在package标签里面写多个action标签,但是action的name属性值不能相同的
- class属性
- action全路径
- method属性
- 比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
- 让action里面多个方法执行,使用method进行配置
三、标签result
根据action的方法返回值,配置到不同的路径里面
-
result标签属性
(1)name属性
- 和方法返回值一样
(2)type属性
- 配置如何到路径中(转发或者重定向)
- type属性默认值,做转发操作
Struts2常量配置
struts2框架,帮我们实现一部分功能,struts2里面有常量,在常量里面封装一部分功能
struts2默认的常量位置(记住)
-
修改struts2默认常量值
(1)常用的方式
- 在struts.xml中进行配置
(2)还有两种方式(了解)
- 在src下面创建 struts.properties,进行修改
- 在web.xml进行配置
-
介绍最常用常量(明天演示)
(1)表单提交数据到action里面,在action可以获取表单提交数据,
(2)表单提交数据有中文,有乱码问题,解决:
- post提交直接设置编码
- get提交做编码转换
(3)如果在action获取表单通过post方式提交中文,中文乱码问题帮解决了,不需要自己处理问题
分模块开发
- 单独写配置文件,把配置文件引入到核心配置文件中
Action编写方式
-
action编写有三种方式
第一种 创建普通类,这个不继承任何类,不实现任何接口
public class HelloAction
第二种 创建类,实现接口 Action
public class HelloAction implements Action { public String execute() throws Exception { return "ok"; } }
第三种 创建类,继承类 ActionSupport(一般使用)
import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { public String execute() { return "ok"; } }
访问action的方法(重点)
- 有三种方式实现
1. 使用action标签的method属性
在这个属性里面写执行的action的方法
-
创建action,创建action方法
public class HelloAction implements Action { public String add() { System.out.println("add....."); return NONE; } public String update() { System.out.println("update....."); return NONE; } public String execute() throws Exception { return null; } }
使用method配置
2. 使用通配符方式实现
- 在action标签里面name属性,name属性值里面写 符号 * 星号
- {1}表示获取*号的内容
- 理解: 表示匹配任意内容
- 比如访问hello,* 可以匹配到
- 比如访问add,* 可以匹配到