Struts2(二)核心思想及其工作原理
2017-07-09 12:48
661 查看
通过上一章节的开端,我们对Struts2框架有了整体的认识,已经能够布置一个简单的Struts2小应用,并让他跑起来,现在我们需要的是深入了解其实现的机制,下面我们从以下几方面开始做一个学习。
default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar
struts.xml 该文件是web应用默认的struts配置文件
struts.properties 该文件是Struts的默认配置文件
web.xml 该文件是Web应用的配置文件
如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值
struts-default是struts-default.xml定义的一个package,内含大量拦截器和结果集
每个package,可以定义一个namespace属性,默认值 “”
Action的访问路径 = 包名称空间 namespace + Action name属性 例如上图采用默认配置namespace “/”
所以客户端访问路径 ${pageContext.request.contextPath}/hello
如果namespace配置为/demo1, 客户端访问路径
${pageContext.request.contextPath}/demo1/hello
3.Struts2框架Action配置默认值
- struts2 的Action可以是POJO
- 为了让用户开发的Action更加规范struts2提供了一个Action接口
(2)
- Struts2为Action接口提供了一个实现类 ActionSupport,定义了 表单域校验、错误信息设置和获得国际化信息相关一些方法
(3)
用户编写Action 可以是 POJO
用户编写Action 可以实现Action接口
可以使用结果集常量字符串
用户编写Action 可以继承ActionSupport基类
对请求参数进行校验
设置错误信息
读取国际化信息
execute方法编写注意细节
public 修饰符
String 返回值
无参数
(4)
没有指定method属性,默认执行execute方法
通过method属性,指定调用Action相应方法处理请求
因为指定了method=”regist”,所以HelloAction的regist方法会被调用
(5)
在配置 action元素时,允许在指定name属性时,使用模式字符串(用(*)代表一个或多个任意字符)
在class、method属性及(result)子元素中通过 {N} 形式代表前面地N个* 匹配子串
ActionContext
getContext() 返回ActionContext实例对象
get(key) 相当于 HttpServletRequest的getAttribute(String name)方法
put(String,Object) 相当于HttpServletRequest的setAttribute方法
getApplication() 返回一个Map对象,存取ServletContext属性
getSession() 返回一个Map对象,存取HttpSession属性
getParameters() 类似调用HttpServletRequest的getParameterMap()方法
setApplication(Map) 将该Map实例里key-value保存为ServletContext的属性名、属性值
setSession(Map) 将该Map实例里key-value保持为HttpSession的属性名、属性值
方式一 :实现接口,访问Action时完成注入
方式二 使用ServletActionContext
该方案可避免Action类实现XxxAware接口,但Action依然与Servlet API直接耦合
开发中优先使用ActionContext 这样可以避免耦合
1. Struts2框架配置文件
Struts2框架按照如下顺序加载struts2配置default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar
struts.xml 该文件是web应用默认的struts配置文件
struts.properties 该文件是Struts的默认配置文件
web.xml 该文件是Web应用的配置文件
如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值
2.Struts2框架Action相关配置
struts2所有action都是通过package管理struts-default是struts-default.xml定义的一个package,内含大量拦截器和结果集
每个package,可以定义一个namespace属性,默认值 “”
Action的访问路径 = 包名称空间 namespace + Action name属性 例如上图采用默认配置namespace “/”
所以客户端访问路径 ${pageContext.request.contextPath}/hello
如果namespace配置为/demo1, 客户端访问路径
${pageContext.request.contextPath}/demo1/hello
3.Struts2框架Action配置默认值
4.访问Action
(1)- struts2 的Action可以是POJO
- 为了让用户开发的Action更加规范struts2提供了一个Action接口
(2)
- Struts2为Action接口提供了一个实现类 ActionSupport,定义了 表单域校验、错误信息设置和获得国际化信息相关一些方法
(3)
用户编写Action 可以是 POJO
用户编写Action 可以实现Action接口
可以使用结果集常量字符串
用户编写Action 可以继承ActionSupport基类
对请求参数进行校验
设置错误信息
读取国际化信息
execute方法编写注意细节
public 修饰符
String 返回值
无参数
(4)
没有指定method属性,默认执行execute方法
通过method属性,指定调用Action相应方法处理请求
因为指定了method=”regist”,所以HelloAction的regist方法会被调用
(5)
在配置 action元素时,允许在指定name属性时,使用模式字符串(用(*)代表一个或多个任意字符)
在class、method属性及(result)子元素中通过 {N} 形式代表前面地N个* 匹配子串
5.Action访问Servlet API
Struts2的Action没有与任何Servlet API耦合,便于测试ActionContext
getContext() 返回ActionContext实例对象
get(key) 相当于 HttpServletRequest的getAttribute(String name)方法
put(String,Object) 相当于HttpServletRequest的setAttribute方法
getApplication() 返回一个Map对象,存取ServletContext属性
getSession() 返回一个Map对象,存取HttpSession属性
getParameters() 类似调用HttpServletRequest的getParameterMap()方法
setApplication(Map) 将该Map实例里key-value保存为ServletContext的属性名、属性值
setSession(Map) 将该Map实例里key-value保持为HttpSession的属性名、属性值
方式一 :实现接口,访问Action时完成注入
ServletContextAware void setServletContext(javax.servlet.ServletContext context) ServletRequestAware void setServletRequest(javax.servlet.http.HttpServletRequest request) ServletResponseAware void setServletResponse(javax.servlet.http.HttpServletResponse response)
方式二 使用ServletActionContext
static PageContext getPageContext() static HttpServletRequest getRequest() static HttpServletResponse getResponse() static ServletContext getServletContext()
该方案可避免Action类实现XxxAware接口,但Action依然与Servlet API直接耦合
开发中优先使用ActionContext 这样可以避免耦合
相关文章推荐
- Struts2工作原理及其核心思想(二)
- Struts2工作原理以及核心思想
- Struts2工作原理以及核心思想
- struts2的核心和工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- struts2 核心与工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- Struts2的运行流程及其工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- struts2核心工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- struts2的核心和工作原理
- 定义 范围与核心思想 IT服务管理及其价值
- 机器学习十大算法的每个算法的核心思想、工作原理、适用情况及优缺点
- struts2的核心和工作原理