一、Struts框架的概述
1. 什么是struts2
2. 常见的web框架
-
struts2框架应用javaee三层结构中web层框架
-
struts2 框架在struts1和webwork基础上发展全新的框架
-
struts 解决的问题
-
struts2版本
-
web层常见框架
struts1 webwork spring MVC
3. WEB层的框架都会基于前端控制器的模式:
二、Struts框架入门案例
建立web项目,因为用在web层的框架
1. 导入jar包
struts2 安装包结构
在lib中有100多个jar包,不能把这些jar包都导入到项目中去
我们到apps里面去,找到示例程序,从实例程序中复制相关jar包
这是一个war包(创建一个web工程引入相应 jar包)
2. 创建action包、类
3. 配置action类的访问路径(.xml文件)
3.1 创建struts核心配置文件(struts.xml)
-
配置文件名称和位置是固定的
位置:必须在src下面 名称:struts.xml
-
引入dtd约束
-
action基本配置
3.2 进行访问路径
http://127.0.0.1:8080/struts2_day01/hello.action
直接访问会报错
- 问题一:服务器没有正常启动
- 问题二:没有配置过滤器
4. 配置struts2过滤器(web.xml文件)
4.1 查看源代码
导入struts的src文件夹(也可以直接导入struts的zip安装包)方便直接查看源代码。
过滤器在服务器启动时候创建,创建过滤器时候会执行init方法
- 在init方法中主要加载配置文件,包含自己创建的配置文件和struts自带的配置文件
4.2 在web.xml里面配置过滤器
可以正常访问了
三、Struts2底层执行过程
1. struts2的执行流程
四、Struts2相关配置
1. Struts2的配置文件的加载顺序
2. struts的核心配置文件介绍(struts.xml)
- 名称和位置是固定的
- 在配置文件中主要三个标签package、action、result,标签里面的属性
1.1 标签package
类似于代码包,区别不同的action,要配置action,必须首先写package标签
package标签属性
-
name属性
name属性值和功能本身没有关系的,在一个配置文件中可以写多个package标签,但是name属性值是不能相同的
-
extends属性
属性值是固定的:struts-default
写了这个属性之后,在package里面配置的类具有action功能 -
namespace属性
namespace属性值和action标签里面的name属性值构成访问路径 /hello.action
1.2 标签action
action标签配置action访问路径
action标签里面的属性
-
name属性
和namespace属性值构成访问路径 /hello
在package标签里面写多个action标签,但是action的name属性值不能相同
-
class属性
action类的全路径
-
method属性
比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
让action里面多个方法执行,使用method进行配置
1.3 标签result
根据action的方法返回值,配置到不同的路径里面
result标签属性
-
name属性
和方法返回值一样
-
type属性
配置如何到路径中(转发或者重定向)
type属性默认值 做转发操作
3. Action的配置
4. 修改struts默认常量配置
Struts2的这些常量大多在默认的配置文件中已经配置好,但根据用户需求的不同,开发的要求也不同,可能需要修改这些常量值,修改的方法就是在配置文件对常量进行重新配置。
方式一:在struts.xml文件中通过<constant》元素配置常量(重点)
-
表单提交数据到action里面,在action里面可以获取表单提交数据
-
表单提交数据有中文,有乱码
解决方式: post提交直接设置编码 get提交做编码转换
-
如果在action获取表单通过post方式提交中文,中文乱码问题帮解决,不需要自己处理问题
-
之前我们就已经介绍过了Struts2的配置文件的加载顺序,后加载的配置文件的常量的值会覆盖先加载的配置文件中常量的值。
方式二:在struts.properties文件中配置常量
在src下面常见struts.properties
方式三:在 web.xml文件中通过初始化参数配置常量
5. 分模块开发配置
五、Struts2的action编写方式
在 Struts2的应用开发中,Action作为框架的核心类,实现对用户请求的处理,Action类被称为业务逻辑控制器。一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。也就是说,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理。简而言之,Action就是用来处理一次用户请求的对象。
action编写有三种方式
1. 创建普通类(POJO),这个不继承任何类,不实现任何接口
2. 创建一个类,实现Action接口
3. 创建一个类,继承ActionSupport(最常用)
六、Struts2的action方法访问
Action 的访问不是难题,因为之前已经访问过了,但是出现一个问题一次请求现在对应一个Action,那么如果请求很多对应很多个Action.现在要处理的问题就是要让一个模块的操作提交到一个Action 中。
解决action访问问题有三种方式:
1. 通过action标签的method属性,在这属性里面写执行的action方法
步骤一:创建action,在action里面创建多个方法
步骤二:在Struts.xml配置action的访问
缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action
2. 使用通配符方式实现(最常用)
在action标签里面name属性,name属性值里面写符号*
- *理解:表示匹配到任意内容
3. 动态访问实现(不用)
4. 常见错误
-
如果action方法有返回值,在配置文件中没有配置,出现错误
-
在action里面的方法有返回值,如果有返回值时候类型必须是String
-
action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
把返回值设为void 返回none
六、Struts2的国际化
Struts2的国际化参考:https://www.cnblogs.com/huguodong/p/6054600.html