Actioncontext跟ServletActionContext的区别---未完待续
//
public class BaseAction extends ActionSupport{
public static HttpServletRequest getRequest(){
return ServletActionContext.getRequest();
}
public static HttpServletResponse getResponse(){
return ServletActionContext.getResponse();
}
public static HttpSession getSession(){
return ServletActionContext.getRequest().getSession();
}
public static ServletContext getApplication(){
return ServletActionContext.getServletContext();
}
}
////一个博客看到的想法
Map request=(Map)ActionContext.getContext().get("request");
Map request=(Map)ActionContext.getContext().get("session");
ActionContext().getContext().get("request");//
ActionContext().getContext().getSession()//获取的是session,然后用put存入相应的值,只要在session有效状态下,这个值一直可用
ActionContext().getContext().getSession().put("x",x);//对象默认的放入map中
ActionContext().getContext().getValueStack().push(x);//在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack,可以把一个对象直接压入到valuestack中
//关于ActionContext.getContext()的用法心得
ActionContext context=ActionContext.getContext();
Map request=context.get("request");
Map session=context.getSession();
Map application=context.getApplication();
request.put("greeting","欢迎访问曾志伟的空间");//在请求中保存信息
session.put("user",user);//在session中保存user对象
application("counter",count);
在jsp页面中直接使用
<body>
<h3>${sessionScope.user.username},${requestScope.greeting}。<br>本站的访问量是:${applicationScope.counter}</h3>
</body>
当然也可以直接使用
ActionContext.getContext().put("greeting","欢迎你来访问我的网站");
${requestScope.greeting}或者<%=request.getAttribute("greeting")%>
//百度百科:actioncontext和servletContext有什么区别
ServletActionContext和ActionContext有着一些重复的功能,在我们的Action中,
该如何去抉择呢?我们遵循的原则是:如果ActionContext能够实现我们的功能,
那最好就不要使用ServletActionContext,让我们的Action尽量不要直接去访问Servlet的相关对象.
注意:在使用ActionContext时有一点要注意:
不要在Action的构造函数里使用ActionContext.getContext(),
因为这个时候ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null;
同样,HttpServletRequest req = ServletActionContext.getRequest()也不要放在构造函数中,
也不要直接将req作为类变量给其赋值。至于原因,我想是因为前面讲到的static ThreadLocal actionContext = new ActionContextThreadLocal(),
从这里我们可以看出ActionContext是线程安全的,而ServletActionContext继承自ActionContext,所以ServletActionContext也线程安全,
而线程安全要求每个线程都独立进行,所以req的创建也要求独立进行,所以ServletActionContext.getRequest()这句话不要放在构造函数中,
也不要直接放在类中,而应该放在每个具体的方法体中(eg:login()、queryAll()、insert()等),这样才能保证每次产生对象时独立的建立
了一个req。
//http://www.cnblogs.com/ningvsban/p/3740717.html
http://www.cnblogs.com/xwdreamer/archive/2010/09/26/2297083.html
Actioncontext跟ServletActionContext的区别---未完待续的更多相关文章
- Java枚举类型getClass和getDeclaringClass区别(未完待续)
Java中的枚举类型有getClass()和getDeclaringClass()两个方法,在通常情况下这两个方法返回的类型一样,在某些场景下会有不同的表现 参照 http://stackoverfl ...
- Avro和Thrift区别(未完待续)
两者都是优秀的序列化框架: Avro创造之初是Hadoop之父Doug为了创造一种更加快捷的序列化方案(此时已经有了thrift),用于Hadoop的HDFS的文件序列化问题. Thrift一个成熟的 ...
- 我的SQL总结---未完待续
我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...
- MVC丶 (未完待续······)
希望你看了此小随 可以实现自己的MVC框架 也祝所有的程序员身体健康一切安好 ...
- 一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- IOS之KVC和KVO(未完待续)
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)
计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...
- 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))
Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...
- Go web编程学习笔记——未完待续
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
随机推荐
- bzoj1079
50%的数据很好考虑,基本的dp了 关键到了100%,如果用每种颜色有ci种这种常规的写法,显然5^15会爆空间 考虑到反过来,ci<=5, 15^5是不会爆空间的 又想到,每一种颜色,如果数量 ...
- POJ_3662_Telephone_Lines_(二分+最短路)
描述 http://poj.org/problem?id=3662 给一张图,要将1与n连起来.可以有k条边免费,其他边自费,付费的值为所有自费边中最大的值.求最小付费. Telephone Line ...
- 约瑟夫环的java实现
转自:http://www.cnblogs.com/timeng/p/3335162.html 约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...
- (转载)SQL联合查询中的关键语法
(转载)http://www.cnblogs.com/zhangliyu/archive/2009/03/21/1418215.html 联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用 ...
- Suse系统用户不能登录报错
Linux系统用户创建了user用户,使用putty登陆系统,用户为user,系统登陆报 错: Could not chdir to home directory /home/user: Permis ...
- java NIO 资料总结
1.http://developer.51cto.com/art/201204/328340.htm 2.http://ifeve.com/file-channel/并发编程网系列 3 http:// ...
- 哈希(2) hash索引
首先复习: 索引:快速查找的数据结构 1.可以读以下mysql中索引的使用方法,图文并茂.很好理解. http://www.it165.net/database/html/201310/4 ...
- MVC Model Binder 规则
http://www.cnblogs.com/mszhangxuefei/archive/2012/05/15/mvcnotes_30.html 使用默认的Model Binder(Using the ...
- UVA 10256 The Great Divide (凸包,多边形的位置关系)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34148 [思路] 凸包 求出红蓝点的凸包,剩下的问题就是判断两个凸 ...
- vijosP1629 八
vijosP1629 八 链接:https://vijos.org/p/1629 [思路] 暴力容斥(看他们都这么叫=_=)+精度选择. 总体思路是先统计LR区间内满足是8倍数的数目ans,再从ans ...