Struts2的执行流程
请求—核心过滤器——执行一组拦截器——action——result
servlet是单例的,多个程序访问同一个servlet只会创建一个servlet;
action是多例的,一次请求会创建多个实例(不会出现线程安全的问题)
Struts2的配置文件加载顺序
- default.properties
- Struts-default.xml
- Struts-plugin.xml
- Struts.xml
- Struts.properties
- web.xml
PS:常量配置在红色字体的文件中;
后配置的常量会覆盖先配置的常量(文件加载顺序)
package相关配置
package标签名称为:包,(与java中的包概念不一样),此概念是为了更好的管理Struts2中的action;
package标签的属性:
- name :包的名称,在同一个项目中不重名即可;
- extend:继承包,通常继承(struts-default);
- namespace:名称空间,与action中的name共同决定action的访问路径;
名称空间有三种写法:(按访问顺序)
带名称:namespace="/aaa"
根名称:namespace="/"
默认名称:namespace=""
4.abstract:抽象的,用来允许被其他包继承;
action相关配置
action标签配置action类
action标签相关属性:
1.name:action的名称-与package标签共同决定action的访问路径
2.class:action目标类的全路径
3.method:代表执行action中的目标方法
4.converter:用于设置类型转换器
action的三种编写方法:
1.普通的pojo类
2.继承ActionSupport类,重写execute方法
3.实现action接口中的execute方法
action的访问:
1.通过method设置
2.通过通配符设置
访问路径:
高级通配符运用:
3.动态方法访问
开启动态方法访问(default.properties):
配置文件:
访问路径:
Struts2中的常量配置
Struts2在default.properties文件中提供了大量的常量;
struts.i18n.encoding=UTF-8 //字符集编码(post),get需要自己手动设置
struts.multipart.maxSize=2097152 //文件上传
......
有三个位置可以修改常量的默认配置:
1.struts.xml中修改(一般位于头部)
2.struts.properties中修改
3.web.xml中修改(在核心过滤器中配置初始化参数)
分模块开发的配置
include的配置
Struts2访问servlet API的方式
1.解耦合的方式:
//相当于request(map集合)
ActionContext.getContext();
//相当于session(map集合)
ActionContext.getContext().getSession();
//相当于application(map集合)
ActionContext.getContext().getApplication();
2.原生方式:
ServletActionContext.getPageContext();
ServletActionContext.getPageContext().getRequest();
ServletActionContext.getPageContext().getServletContext();
ServletActionContext.getPageContext().getSession();
3.接口注入的方式: