一,Spring中Bean的作用域
当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:
-
singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例
-
prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
-
request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
-
session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效
-
globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效
其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。
如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。
在SpringMVC中,SpringMVC返回json数据三种方式
第三种方式:
是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew
使用JSON工具将对象序列化成json,常用工具Jackson,fastjson,gson
利用spring mvc3的注解@ResponseBody 和 利用spring mvc3的注解@ResponseMapping
二,mvc处理的过程
原理图
模型
模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过程。模型一方面被控制器调用,完成问题处理的操作过程,另一方面为视图获取显示数据提供了访问数据的操作。
视图
视图是MVC模式下用户看到的并与之交互的界面。视图从模型处获得数据,其更新由控制器控制。视图不包含任何业务逻辑的处理,它只是作为一种输出数据的方式。
控制器
在MVC模式中,控制器主要起导航的作用,它根据用户的输入调用相应的模型和视图去完成用户的请求。
还可以3个职责:参数校验,异常捕获,业务封装(不是包括具体方业法的实现哈)--2012-2-22
总之,控制器一定要瘦。
MVC的处理过程
MVC的处理过程是:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。
三,InternalResouceViewResolve的父类是 “UrlBeanViewResolve”
四,自动装配默认情况下“on 不使用自动装配”
五,在Spring中,配置Hibernate事务管理器(Hibernate TransactionManager)时,需要注入的属性名称是“dataSource”
六,SpringMVC表单标签的设置
taglib指令的prefix属性是可以任意定义的,但SpringMVC表单标签的prefix属性值通常是form
七,Spring MVC局部异常处理,自定义两个异常:UserException,java和BaseExcption,java,下面异常处理方法handlerException()要处理这两个异常,请补全关键代码()
@ExceptionHandler(-----------------)
public String handlerException (UserException e1, request. setAttribute(" e1~, e1) {
request. setAttribute("e2" ,e2) ;
return" error ;
}
括号里应该填( value= {UserException. class, BaseException. class} {UserException. class, BaseException. class } )
八,在Spring中,配置Hibernate事务管理器(Hibernate Tr ansactionlManager)时,需要注入的属性名称只( dataSource )
九,使用InternalResourceViewResolver作为视图解析器,需要进行配置:
<bean class=" org. spr ingfr amework. web. servlet. view. InternalResour ceViewResolver >
<property name=' prefix" value=' /WEB-INF/jsp/*/>
<property name= ”suffix" value=".jsp ”/>
</bean>
若一个控制类的处理方法返回-一个字符串: return "user /userlist" ;那么通过已配置好的这个视图解析器,解析成真正的视图对象应该是( /WEB- INF/jsp/user /userlist. jsp )
十,在Spr ing中可以使用scope属性来管理be an的作用域,以下选项关于作用域的配置说法错误的是()。
session作用域:在一个HTTP Session中,一个bean定义对应一个实例global session作用域:在一个全局的HTTP Session中,一个bean定义对应一个实例