struts2基础——请求与响应、获取web资源
2016-07-06 10:55
429 查看
一、请求与响应
Action
1.含义:
(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求。
(2) 用于处理 Struts2 请求的 Action 类
2.Action 类
(1) 使用 setXxx() 方法和 getXxx() 方法定义属性,使用 setXxx() 属性方法接受请求参数值,使用 getXxx() 方法来在页面显示数据。
(2) 有无参构造器
(3) 至少有一个供 Struts2 在执行这个 action 时调用的方法
(4) 同一个 Action 来可以包含多个 action 方法
(5) Action 类不是单例的,Struts2 为每一个请求创建一个 Action 实例
3.ActionSupport 类
(1) ActionSupport 是默认的 Action 类
(2) ActionSupport 实现的接口
Action:提供了 SUCCESS、INPUT 等字符串常量可以直接使用,提供 execute() 抽象方法供实现
Validateable:用于编程式输入验证
ValidationAware:用于获取和显示错误消息,错误消息有两个级别:一个是类级别,另一个是字段级别
TextProvider:从资源文件中读取属性值,用于国际化
LocaleProvider:获取 Locale 对象,用于国际化
Serializable:序列化 Action 类
4.请求扩展名
(1) 请求路径中 ServletPath 部分包含的后缀,例如:.action/.do
(2) Struts2 根据扩展名来区分哪些请求需要 Struts2 处理,哪些不需要。
(3) 默认支持的扩展名: .action 和 没有
5.default.properties
在 default.properties 定义了许多常量,如默认支持的请求扩展名
修改 default.properties 定义的常量:
在 struts 根标签下加入元素:
<constant name="" value=""/>
如修改默认支持的请求扩展名:
<constant name="struts.action.extension" value=".action,,.do"/>
Result:
1.含义:
(1) 代表 Struts2 请求的响应,每个 action 标签可以包含多个 result 元素
(2) result 标签:name 属性:对应 action 方法的 String 类型方法返回值,type 属性:执行结果类型,以什么方式跳转。
2.结果类型:
(1) Struts2 在 struts-default.xml 中定义了 10 结果类型
redirectAction
stream:
以输出流的形式返回响应结果,用于文件的下载和 Ajax
通配符映射规则:
1.精确匹配优先。
2.在不符合精确匹配优先的情况下,则先声明的有效(如果一个请求能够与多个带有通配符的ActionName匹配,则先声明的有效)。
动态方法调用:
在URL地址中动态调用 Action 中的方法。
Struts2 默认是禁止动态方法调用的,可以通过修改常量的方式修改。
正常访问:http://localhost:8989/Web应用虚拟路径/dynamicAction.action
动态方法调用:http://localhost:8989/Web应用虚拟路径/dynamicAction!dynamicMethod.action
二、web 资源
Struts2 针对常用数据进行了封装,封装为一系列 Map 对象: RequestMap HashMap SessionMap ApplicationMap
获取方式:
1.与 Servlet 解耦
(1) 使用 ActionContext 类,通过 ActionContext 对象可以获取到 appMap、sessionMap、paramMap对象
(2) 实现 XxxAware 接口,RequestAware,ParameterAware,SessionAware,ApplicationAware
2.与 Servlet 耦合
(1) 使用 ServletActionContext 类,通过它获取到 HttpServletRequest、HttpServletResponse、ServletContext
(2) 实现 ServletXxxAware 接口:ServletRequestAware、ServletResponseAware、ServletContextAware
Action
1.含义:
(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求。
(2) 用于处理 Struts2 请求的 Action 类
2.Action 类
(1) 使用 setXxx() 方法和 getXxx() 方法定义属性,使用 setXxx() 属性方法接受请求参数值,使用 getXxx() 方法来在页面显示数据。
(2) 有无参构造器
(3) 至少有一个供 Struts2 在执行这个 action 时调用的方法
(4) 同一个 Action 来可以包含多个 action 方法
(5) Action 类不是单例的,Struts2 为每一个请求创建一个 Action 实例
3.ActionSupport 类
(1) ActionSupport 是默认的 Action 类
(2) ActionSupport 实现的接口
Action:提供了 SUCCESS、INPUT 等字符串常量可以直接使用,提供 execute() 抽象方法供实现
Validateable:用于编程式输入验证
ValidationAware:用于获取和显示错误消息,错误消息有两个级别:一个是类级别,另一个是字段级别
TextProvider:从资源文件中读取属性值,用于国际化
LocaleProvider:获取 Locale 对象,用于国际化
Serializable:序列化 Action 类
4.请求扩展名
(1) 请求路径中 ServletPath 部分包含的后缀,例如:.action/.do
(2) Struts2 根据扩展名来区分哪些请求需要 Struts2 处理,哪些不需要。
(3) 默认支持的扩展名: .action 和 没有
5.default.properties
在 default.properties 定义了许多常量,如默认支持的请求扩展名
修改 default.properties 定义的常量:
在 struts 根标签下加入元素:
<constant name="" value=""/>
如修改默认支持的请求扩展名:
<constant name="struts.action.extension" value=".action,,.do"/>
Result:
1.含义:
(1) 代表 Struts2 请求的响应,每个 action 标签可以包含多个 result 元素
(2) result 标签:name 属性:对应 action 方法的 String 类型方法返回值,type 属性:执行结果类型,以什么方式跳转。
2.结果类型:
(1) Struts2 在 struts-default.xml 中定义了 10 结果类型
<action name="helloworld_*" class="com.nucsoft.struts2.helloworld.HelloWorld" method="{1}"> <result>/success.jsp</result> <result type="redirectAction" name="redirectAction"> <param name="actionName">redirect2Action</param> </result> </action> <action name="redirect2Action" class="com.nucsoft.struts2.helloworld.HelloWorld" method="redirectAction"> <result>/success.jsp</result> </action>
redirectAction
stream:
以输出流的形式返回响应结果,用于文件的下载和 Ajax
通配符映射规则:
1.精确匹配优先。
2.在不符合精确匹配优先的情况下,则先声明的有效(如果一个请求能够与多个带有通配符的ActionName匹配,则先声明的有效)。
动态方法调用:
在URL地址中动态调用 Action 中的方法。
Struts2 默认是禁止动态方法调用的,可以通过修改常量的方式修改。
正常访问:http://localhost:8989/Web应用虚拟路径/dynamicAction.action
动态方法调用:http://localhost:8989/Web应用虚拟路径/dynamicAction!dynamicMethod.action
二、web 资源
Struts2 针对常用数据进行了封装,封装为一系列 Map 对象: RequestMap HashMap SessionMap ApplicationMap
获取方式:
1.与 Servlet 解耦
(1) 使用 ActionContext 类,通过 ActionContext 对象可以获取到 appMap、sessionMap、paramMap对象
(2) 实现 XxxAware 接口,RequestAware,ParameterAware,SessionAware,ApplicationAware
2.与 Servlet 耦合
(1) 使用 ServletActionContext 类,通过它获取到 HttpServletRequest、HttpServletResponse、ServletContext
(2) 实现 ServletXxxAware 接口:ServletRequestAware、ServletResponseAware、ServletContextAware
相关文章推荐
- 华为机试---完全数计算
- java中的异常
- 使用Spring整合Hibernate出现无法自动建立表的问题
- 三维装箱问题Java代码的简单实现过程
- 在WebService中使用Retrofit+RxJava
- org.springframework.beans.factory.BeanNotOfRequiredTypeException must be of type
- java协变类型返回
- SpringMVC参数传递方式
- 《Spring源码分析》——JDBC章节
- java 二叉树(三)递归遍历二叉树
- spring源码分析之<context:component-scan/>vs<annotation-config/>
- 一种c#深拷贝方式完胜java深拷贝(实现上的对比)
- springmvc mybatis集成
- Java持久层框架MyBatis简单实例
- Java 内部类种类及使用解析
- JavaEE第一天_html标签
- Eclipse使用技巧
- java封装
- 一种c#深拷贝方式完胜java深拷贝(实现上的对比分析)
- java 二叉树(二)递归方式创建二叉树