文章目录
1、概念
1.1 是什么
web层框架,封装web层功能。
1.2 原理(感觉执行流程那边更好看)
1.3、入门案例,环境搭建
这里我使用的idea+maven 搭建环境,创建web项目,引入依赖,完善项目结构。
参考微博:https://blog.youkuaiyun.com/gaofengyan/article/details/84633223
功能实现了
1.4、配置文件分析
1、struts.xml文件
1、package:
类似代码的包,区分action,在此标签内配置action。
1)name属性:没什么功能,就是区分不同package,随便叫但不能重复。
2)extends属性:固定这么写,表明package内类具有action功能。
3)namespace属性:其值与action标签内的name属性值构成访问路径。不写默认就是/。
2、action标签:
1)name属性:见上,一个package中可以写多个action标签,但是此name不能重复。(废话不然路径不都重了)
2)class属性:action类全类名
3)method属性:action类中默认执行execute方法,显然实际开发中不可能只写一个execute方法,这个属性配置不同的方法。
3、result标签: 根据action中方法返回值,配置到不同的路径里边。(页面或者action都可以)
1)name属性:同action中方法返回值
2)type属性:配置如何到路径中去(转发或重定向),默认转发。dispatcher,redirect
如果是配置页面:
2、常量配置:
最常见的常量配置:
3、include
分块开发的一种思想:实际开发中,我们所有人都修改一个struts.xml文件显然是很不方便的。不同模块分别写一个struts相关噢诶之文件,最后在struts.xml中将其引入即可。

1.5、执行流程
该框架最重要的要就是过滤器。
补充:
servlet在访问的时候初始化,过滤器在服务器启动时即初始化。
过滤器在服务器启动时创建,并执行init方法
1)init方法主要是加载配置文件(包含手动创建的(struts.xml、web.xml)和Struts2默认的文件)
1.6、关于Action
1、Action的三种编写方式(第三种比较常用)
2、Action 方法的返回值
1、 可以没有返回值,那么result可以不配置
可以返回void,也可以返回none。
2、 如果有返回值,返回值必须是String。
3、Action 方法的访问
1、method属性普通配置,如果action中有多个方法会导致写的配置文件太多。
2、使用通配符(最常用)
!!!多个方法时,测试错误,需要再更正一下。
2、动态访问,说是不常用,我项目里也遇到了。
4、全局结果页面
局部优先级高于全局
5、获取表单数据
1)ActionContext:(2.5前后的获取内容都不一致)
struts 2.5之后应该获取的是HttpParameters,之前版本获取的应该是个Map
2)ServletActionContext:
先获取HttpServletRequest对象,之后与servlet那一套一样。
3)使用接口注入(了解即可)
6、Struts2获取表单数据
1)属性封装,实际开发应用不太现实,太麻烦。
2)模型驱动封装(重点)
3)表达式封装(可归类属性封装,不常用)
7、封装数据到list、map
p34 p35案例没看
1.7、OGNL表达式
1、概念
2、举个栗子
1.8、值栈
42-53没看
1.9、拦截器
自定义拦截器: