小女巫 发表于 2015-1-18 11:06:08

来看Spring 2.5会见Session属性的四种战略

比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过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技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,

简单生活 发表于 2015-1-20 14:24:32

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

不帅 发表于 2015-1-29 09:07:31

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

再见西城 发表于 2015-1-30 17:33:21

是一种语言,用以产生「小应用程序(Applet(s))

透明 发表于 2015-2-3 12:03:30

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

仓酷云 发表于 2015-2-8 20:50:32

是一种为 Internet发展的计算机语言

爱飞 发表于 2015-2-26 10:11:11

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

只想知道 发表于 2015-3-8 13:23:21

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

因胸联盟 发表于 2015-3-15 23:58:25

是一种突破用户端机器环境和CPU

飘灵儿 发表于 2015-3-22 18:08:21

是一种为 Internet发展的计算机语言
页: [1]
查看完整版本: 来看Spring 2.5会见Session属性的四种战略