源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 392|回复: 14

[JSP编程] 详解Struts2中Action访问Servlet API的几种方法

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2017-8-2 08:55:30 | 显示全部楼层 |阅读模式
这篇文章主要介绍了详解Struts2中Action访问Servlet API的几种方法的相关资料,这里提供三种方法,一般推荐使用,IOC方式,需要的朋友可以参考下

详解Struts2中Action访问Servlet API的几种方法

在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到这两个对象,也有解决方法

Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问? 

Web应用中通常需要访问的Servlet API就是HttpServletRequest、HttpSession、ServletContext这3个类,分别代表JSP内置对象中的request、session、application。 

方法一:(一般推荐使用,IOC方式,只能获得request,而response则得不到)

Struts2提供了ActionContext类,通过ActionContext类访问Servlet API。 

下面是ActionContext类中包含的几个常用方法。 

1、public Object get(Object key):取得HttpServletRequest中key的值;
2、void put(String key,Object value):设置HttpServletRequest中key的值为value;
3、public Map getApplication():获取封装了ServletContext的Map对象;
4、void setApplication(Map application):设置ServletContext实例;
5、static ActionContext getContext():静态方法,获取系统的ActionContext实例;
6、Map getParameters():类似于HttpServletRequest中的getParametersMap方法;
7、public Map getSession():获取封装了HttpSession的Map对象;
8、void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换为session的属性名和属性值;

方法二:(不推荐,麻烦,非IOC方式,与Servlet API耦合大)

虽然Struts2提供了ActionContext来访问Servlet API,但这种访问不能直接获得Servlet API,为了在Action中直接访问Servlet API,Struts2还提供了以下接口。 

1、ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例;
2、ServletRequestAware:实现该接口的Action可以直接访问用户请求对象的HttpServletRequest的实例;
3、ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse的实例; 

方法三:(非IOC方式,强烈推荐使用)

Struts2还提供了一个ServletActionContext,其静态方法有:getPageContext()、getRequest() 、getResponse()、getServletContext()。 

1、HttpServletRequest request=ServletActionContext.getRequest();
2、HttpServletResponse response=ServletActionContext.getResponse();
3、request.getSession().setAttribute("username","admin");
4、request.setAttribute("password","123456");

以上就是Struts2中Action访问Servlet API的几种方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

回复

使用道具 举报

3

主题

1万

回帖

156

积分

注册会员

Rank: 2

积分
156
发表于 2022-8-18 09:06:46 | 显示全部楼层
谢谢小Y分享
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

194

积分

注册会员

Rank: 2

积分
194
发表于 2022-9-7 02:26:37 | 显示全部楼层
儿童服务绯闻绯闻绯闻
回复 支持 反对

使用道具 举报

2

主题

1万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2022-9-7 17:55:43 | 显示全部楼层
还有什么好东西没
回复 支持 反对

使用道具 举报

匿名  发表于 2022-9-7 19:37:37

Услуги электрика

На сайте <a href=https://electrician-perm.ru/>https://electrician-perm.ru/</a> можно заказать услуги электрика, а также профессиональные электромонтажные работы, которые выполняются точно в срок и на должном уровне. Ознакомьтесь с тем, какие услуги оказывают специалисты. Они берутся даже за выполнение сложных заказов, требующих особого внимания, усидчивости. При этом цены остаются на доступном уровне, электрик сам закупит все нужные материалы. Оплата производится только после выполнения всех работ. На них предоставляется гарантия в 1 год.
回复 支持 反对

使用道具

匿名  发表于 2022-9-7 21:51:25

cialis american pharmacy


NBC White Racism causes tumors in black people <a href=http://cheapcialiss.com/>can you buy cialis online</a>
回复 支持 反对

使用道具

8

主题

1万

回帖

52

积分

注册会员

Rank: 2

积分
52
发表于 2022-11-25 12:58:18 | 显示全部楼层
来看看!!!
回复 支持 反对

使用道具 举报

2

主题

1万

回帖

221

积分

中级会员

Rank: 3Rank: 3

积分
221
发表于 2023-3-1 22:50:07 | 显示全部楼层
撒房产税陈飞飞
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

68

积分

注册会员

Rank: 2

积分
68
发表于 2023-6-24 00:06:16 | 显示全部楼层
看看怎么样再说
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-11-12 08:23:30 | 显示全部楼层
66666666666
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-9-20 22:34 , Processed in 0.237152 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表