|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
WEB使用一般会引进Session,用来在服务端和客户端之间保留一系列举措/动静的形态,好比网上购物保护user登录信息直到user加入。在user登录后,Session周期里有良多action都必要从Session中失掉user,再考证身份权限,大概举行其他的操纵。这个中就会触及到程序往会见Session属性的成绩。在java中,Servlet标准供应了HttpSession对象来满意这类需求。开辟职员能够从HttpServletRquest对象失掉HttpSession,再从HttpSession中失掉形态信息。
仍是回到购物车的例子,假定在controller某个办法(本文简称为action)中我们要从HttpSession中取到user对象。假如基于Servlet,尺度的代码会是如许的:
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
Useruser=(User)req.getSession().getAttribute("currentUser");
//
}如许的代码在传统的Servlet程序中是很罕见的:由于利用了ServletAPI,从而对ServletAPI发生依附。如许假如我们要测试action,我们就必需针对HttpServletRequest、HttpServletResponse和HttpSession类供应mock大概stub完成。固然如今已有良多开源的Servlet测试框架匡助我们加重这个疾苦,包含Spring就自带了对了这些类的stub完成,但那仍是太冗烦琐碎了。那有无对照好的举措来让我们的controller更POJO,让我们的action离开ServletAPI依附,更无益于测试和复用呢?我们来看看在Spring2.5中会见Session属性的几种战略,并将在本博的后续文章持续探求办理计划选择前面的深层寄义。
(一)经由过程办法参数传进HttpServletRequest对象大概HttpSession对象
笔者的前一篇文章已复杂先容了Spring2.5的annotation使得controller挣脱了ServletAPI对办法参数的限定,这里就不赘述了。有乐趣的同砚能够参考这里。Spring对annotationed的action的参数供应主动绑定撑持的参数范例包含ServletAPI内里的Request/Response/HttpSession(包括Request、Response在ServletAPI中声明的详细子类)。因而开辟职员能够经由过程在action参数中声明Request对象大概HttpSession对象,来让容器注进响应的对象。
action的代码以下:
@RequestMapping
publicvoidhello(HttpSessionsession){
Useruser=(User)session.getAttribute("currentUser");
//
}长处:
1.程序中间接失掉底层的Request/HttpSession对象,间接利用ServletAPI标准中界说的办法操纵这些对象中的属性,间接而复杂。
2.action必要会见哪些详细的Session属性,是由本人把持的,真正准确到Session中的每一个特定属性。
不敷:
1.程序对ServletAPI发生依附。固然controller类已不必要从HttpServlet承继,但仍必要ServletAPI才干完成编译运转,以致测试。
2.表露了底层ServletAPI,表露了良多其实不必要的底层办法和类,开辟职员简单滥用这些API。
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, |
|