struts2:Action、interceptor继承的基类和获得作用域的方式
来源:互联网 发布:json格式化工具下载 编辑:程序博客网 时间:2024/05/17 08:21
一、Struts2
1、Action:
1)、实现struts2的Action类功能,需要继承ActionSupport类(ActionSupport实现了Action接口),可以重写excute()方法,实际开发中一般不用
2)、在Action中获得作用域的方式:有三种
A、方式一:纯粹的servlet api
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
request.setAttribute("name", this.getUsername());
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
B、方式二:通过Action上下文ActionContext
获取request session application
ActionContext request=ActionContext.getContext();
request.put("req_key", "req_value");
Map<String,Object> session=request.getSession();
session.put("ses_key", "ses_value");
Map<String,Object> application=request.getApplication();
application.put("app_key", "app_value");
C、方式三:通过接口实现,重写里面的方法,位置struts API包为:org。apache。struts2。interceptor
ServletRequestAware
ServletResponseAware
SessionAware
ApplicationAware
例如:
//实现下面三个接口,声明对应作用域的对象,生成对应的set方法,当struts2被加载时,会将对应的作用域参数注入到当前声明的对象中
publicclass TestAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
private Map session;
private HttpServletRequest request;
private HttpServletResponse response;
//重写接口中的方法,只提供set方法,并不需要get方法,可以自定义生成
publicvoid setSession(Map att) {
this.session = att;
}
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
publicvoid setServletResponse(HttpServletResponse response) {
this.response = response;
}
2、Interceptor:拦截器
1)、实现struts2的Interceptor类功能,需要继承AbstractInterceptor类,并重写intercept(ActionInvocation invocation)方法
2)、获得作用域的方法:通过拦截器方法里面的参数ActionInvocation invocation获得(注意:拦截器中任何参数的获得都通过invocation,其他方式都是非法的)
获取request session application
ActionContext request=invocation.getInvocationContext().getContext();
request.put("req_key", "req_value");
Map<String,Object> session=request.getSession();
session.put("ses_key", "ses_value");
Map<String,Object> application=request.getApplication();
application.put("app_key", "app_value");
3)、此处说一下invoke()方法和invokeActionOnly()方法的区别:
invocation.invoke()方法:请求被响应的过程:action-----result-----interceptor
invocation.invokeActionOnly()方法:请求被响应的过程:action-----interceptor-----result
1、Action:
1)、实现struts2的Action类功能,需要继承ActionSupport类(ActionSupport实现了Action接口),可以重写excute()方法,实际开发中一般不用
2)、在Action中获得作用域的方式:有三种
A、方式一:纯粹的servlet api
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
request.setAttribute("name", this.getUsername());
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
B、方式二:通过Action上下文ActionContext
获取request session application
ActionContext request=ActionContext.getContext();
request.put("req_key", "req_value");
Map<String,Object> session=request.getSession();
session.put("ses_key", "ses_value");
Map<String,Object> application=request.getApplication();
application.put("app_key", "app_value");
C、方式三:通过接口实现,重写里面的方法,位置struts API包为:org。apache。struts2。interceptor
ServletRequestAware
ServletResponseAware
SessionAware
ApplicationAware
例如:
//实现下面三个接口,声明对应作用域的对象,生成对应的set方法,当struts2被加载时,会将对应的作用域参数注入到当前声明的对象中
publicclass TestAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
private Map session;
private HttpServletRequest request;
private HttpServletResponse response;
//重写接口中的方法,只提供set方法,并不需要get方法,可以自定义生成
publicvoid setSession(Map att) {
this.session = att;
}
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
publicvoid setServletResponse(HttpServletResponse response) {
this.response = response;
}
2、Interceptor:拦截器
1)、实现struts2的Interceptor类功能,需要继承AbstractInterceptor类,并重写intercept(ActionInvocation invocation)方法
2)、获得作用域的方法:通过拦截器方法里面的参数ActionInvocation invocation获得(注意:拦截器中任何参数的获得都通过invocation,其他方式都是非法的)
获取request session application
ActionContext request=invocation.getInvocationContext().getContext();
request.put("req_key", "req_value");
Map<String,Object> session=request.getSession();
session.put("ses_key", "ses_value");
Map<String,Object> application=request.getApplication();
application.put("app_key", "app_value");
3)、此处说一下invoke()方法和invokeActionOnly()方法的区别:
invocation.invoke()方法:请求被响应的过程:action-----result-----interceptor
invocation.invokeActionOnly()方法:请求被响应的过程:action-----interceptor-----result
- struts2:Action、interceptor继承的基类和获得作用域的方式
- struts2:Action、interceptor继承的基类和获得作用域的方式
- struts2:Action、interceptor继承的基类和获得作用域的方式
- servlet、filter、listener继承的基类和获得作用域的方式
- Struts2源码阅读之Action和Interceptor的执行流程
- struts2 action的作用域
- struts中的action和Action类以及struts2中如何在Action类中获得servlet api的域对象
- struts2中Action类如何获得作用域对象
- struts2的继承ActionSuport类的作用
- Struts2 的Action里面如何获得request和response
- struts2中继承ActionSupport类的作用
- struts2的Action类中获得请求和响应对象的四种方法
- struts2中的Action接口和Actionsupport接口的作用
- 在action中获得作用域的方法
- Struts2教程6:Action类中获得HttpSession,HttpRequest和HttpServletResponse对象的四种方法
- struts2的action中获得HttpServletRequest对象
- Struts2的Interceptor和Listener以及Plugin
- Struts2的Interceptor和Listener以及Plugin
- 旧工程适配ios6和iphone5 之 适配ios6转屏
- solr4.0安装和简单导入mysql数据
- NYOJ - 次方求模
- 自己总结:java split 方法,js isNaN方法
- Linux scp命令用法
- struts2:Action、interceptor继承的基类和获得作用域的方式
- C语言实现标准PSO算法
- 日期自动补零程序
- 浅论ViewController的加载
- Linux时间函数及编程
- 检验你的代码---测量函数
- delegate和protocol
- 简单题 —— Crossing Rivers —— 2009 Asia Wuhan Regional Contest Hosted by Wuhan University
- 这一天是星期几