Struts2的Action中获得request、session和application的几种方法
来源:互联网 发布:linux mail命令 编辑:程序博客网 时间:2024/04/29 19:45
在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为:
Servlet API解藕方式:
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts2对HttpServletRequest、 HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象。可以通过com.opensymphony.xwork2.ActionContext类来得到这三个对象。ActionContext是 Act
这种方法先取得ActionContext,然后获取Map类型的request等对象
Action文件:
01
package
struts2.login;
02
03
import
java.util.Map;
04
05
import
com.opensymphony.xwork2.ActionContext;
06
import
com.opensymphony.xwork2.ActionSupport;
07
08
public
class
LoginAction
extends
ActionSupport{
09
private
ActionContext context;
10
private
Map request;
11
private
Map session;
12
private
Map application;
13
14
@Override
15
public
String execute()
throws
Exception {
16
// TODO Auto-generated method stub
17
this
.context = ActionContext.getContext();
18
this
.request = (Map)
this
.context.get(
"request"
);
19
this
.session =
this
.context.getSession();
20
this
.application =
this
.context.getApplication();
21
this
.request.put(
"attribute"
,
"request value servlet 不相关的 非IoC "
);
22
this
.session.put(
"attribute"
,
"session value servlet 不相关的 非IoC "
);
23
this
.application.put(
"attribute"
,
"application value servlet 不相关的非IoC "
);
24
return
SUCCESS;
25
}
26
}
2,servlet 不相关的 IoC 取得Request等对象的方式 (最常用 和重要的一种)
除了利用ActionContext来获取request、session和application对象这种方式外,Act
01
package
struts2.login;
02
03
import
java.util.Map;
04
05
import
org.apache.struts2.interceptor.ApplicationAware;
06
import
org.apache.struts2.interceptor.RequestAware;
07
import
org.apache.struts2.interceptor.SessionAware;
08
09
import
com.opensymphony.xwork2.ActionSupport;
10
11
public
class
Login2Action
extends
ActionSupport
12
implements
RequestAware , SessionAware, ApplicationAware{
13
private
Map request;
14
private
Map session;
15
private
Map application;
16
17
@Override
18
public
String execute()
throws
Exception {
19
// TODO Auto-generated method stub
20
this
.request.put(
"attribute"
,
"request value servlet 不相关的 IoC "
);
21
this
.session.put(
"attribute"
,
"session value servlet 不相关的 IoC "
);
22
this
.application.put(
"attribute"
,
"application value servlet 不相关的 IoC "
);
23
return
SUCCESS;
24
}
25
26
@Override
27
public
void
setRequest(Map<String, Object> arg0) {
28
// TODO Auto-generated method stub
29
this
.request = arg0;
30
}
31
32
@Override
33
public
void
setSession(Map<String, Object> arg0) {
34
// TODO Auto-generated method stub
35
this
.session = arg0;
36
}
37
38
@Override
39
public
void
setApplication(Map<String, Object> arg0) {
40
// TODO Auto-generated method stub
41
this
.application = arg0;
42
}
43
}
Servlet API耦合方式:
直接访问Servlet API将使你的Act
这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。
取出方法,请参看代码中的蓝字部分。
Action文件:
01
package
struts2.login;
02
03
import
javax.servlet.ServletContext;
04
import
javax.servlet.http.HttpServletRequest;
05
import
javax.servlet.http.HttpSession;
06
07
import
org.apache.struts2.ServletActionContext;
08
09
import
com.opensymphony.xwork2.ActionSupport;
10
11
public
class
Login3Action
extends
ActionSupport{
12
private
HttpServletRequest request;
13
private
HttpSession session;
14
private
ServletContext application;
15
16
@Override
17
public
String execute()
throws
Exception {
18
// TODO Auto-generated method stub
19
this
.request = ServletActionContext.getRequest();
20
this
.session =
this
.request.getSession();
21
this
.application = ServletActionContext.getServletContext();
22
this
.request.setAttribute(
"attribute"
,
"request value servlet 相关的非IoC "
);
23
this
.session.setAttribute(
"attribute"
,
"session value servlet 相关的非IoC "
);
24
this
.application.setAttribute(
"attribute"
,
"application value servlet 相关的 非IoC "
);
25
return
SUCCESS;
26
}
27
28
}
4,servlet 相关的 IoC 取得Request等对象的方式
这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。
但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。
Action文件:
01
package
struts2.login;
02
03
import
javax.servlet.ServletContext;
04
import
javax.servlet.http.HttpServletRequest;
05
import
javax.servlet.http.HttpSession;
06
07
import
org.apache.struts2.interceptor.ServletRequestAware;
08
import
org.apache.struts2.util.ServletContextAware;
09
10
import
com.opensymphony.xwork2.ActionSupport;
11
12
public
class
Login4Action
extends
ActionSupport
13
implements
ServletRequestAware , ServletContextAware{
14
private
HttpServletRequest request;
15
private
HttpSession session;
16
private
ServletContext application;
17
18
@Override
19
public
String execute()
throws
Exception {
20
// TODO Auto-generated method stub
21
this
.request.setAttribute(
"attribute"
,
"request value servlet 相关的 IoC "
);
22
this
.session =
this
.request.getSession();
23
this
.session.setAttribute(
"attribute"
,
"session value servlet 相关的 IoC "
);
24
this
.application.setAttribute(
"attribute"
,
"application value servlet 相关的 IoC "
);
25
return
SUCCESS;
26
}
27
28
@Override
29
public
void
setServletRequest(HttpServletRequest arg0) {
30
// TODO Auto-generated method stub
31
this
.request = arg0;
32
}
33
34
@Override
35
public
void
setServletContext(ServletContext arg0) {
36
// TODO Auto-generated method stub
37
this
.application = arg0;
38
}
39
}
- Struts2的Action中获得request、session和application的几种方法
- Struts2的Action中获得request、session和application的几种方法
- struts2中获得request,session.application的四种方法 在Struts2的Action中获得request response session几种方法
- struts2中Action获得request、session、application进行设值和取值的方法
- struts2中Action获得request、session、application进行设值和取值的方法
- struts2的action中获得request response session几种方法
- 在Struts2的Action中获得request response session几种方法
- 在Struts2的Action中获得request response session几种方法
- 在Struts2的Action中获得request response session几种方法
- 在Struts2的Action中获得request response session几种方法
- [转]struts2的action中获得request response session几种方法【基础】
- Struts2 Action中获得Request,Response,Session对象的几种常用方法
- struts2 action中获取request session application的方法
- struts2 action中获取request session application的方法
- struts2 action中获取request session application的方法
- struts2 action中获取request session application的方法
- struts2 action中获取request session application的方法
- struts2 action中获取request session application的方法
- ubuntu快速搭建lamp
- ImageView常见属性
- 拔掉网线/WiFi/蓝牙后,还能继续扩散的电脑病毒?有这么牛,这么神奇?
- 记录:Android中StackOverflow的问题
- 符合国人习惯的多功能jsp编辑器(eclipse插件)
- Struts2的Action中获得request、session和application的几种方法
- jSP错误
- 随读笔记 算法导论 java 版
- Free函数的参数一定要是malloc返回的那个指针
- 常见的查找算法
- MFC/VC++中操作XML(MFC、SDK)解析
- C++成员函数的内存分配问题
- 商学院能学到什么
- Aptitude cache backup howto