SSM的简介
简介
1. 什么是springmvc?
Springmvc是⼀个基于mvc的web框架,它是spring框架的⼀个模块,两者⽆需通过中间整合进⾏整合。
2. Springmvc框架的执⾏步骤
第⼀步:⽤户发起请求到前端控制器(DispatcherServlet)
第⼆步:前端控制器请求处理器映射器查Handler
第三步:处理器映射器向前端控制器返回Handler
第四步:前端控制器调⽤处理器适配器去执⾏Handler
第五步:处理器适配器去执⾏Handler
第六步:Handler执⾏完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的⼀个底层对象,包括Model和View
第⼋步:前端控制器请求视图解析器去进⾏视图解析,根据逻辑图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第⼗步:前端控制器进⾏视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
第⼗⼀步:前端控制器向⽤户响应结果
3. Springmvc框架常⽤注解
@Controller
@Controller⽤于标记在⼀个类上,使⽤它标记的类就是⼀个springmvc Controller对象。分发处理器将会扫描使⽤了该注解的⽅法,并检测该⽅法是否使⽤了@RequestMapping注解。
@RequestMapping
该注解是⼀个⽤来处理请求地址映射的注解,可⽤于类或⽅法上。⽤于类上,表⽰类中的所有响应请求的⽅法都是以该地址作为⽗路径。
@Resource和@Autowired
@Resource和@Autowired都是做bean的注⼊时使⽤,其实@Resource并不是Spring的注解,它的包是
javax.annotation.Resource,需要导⼊,但是spring⽀持该注解的注⼊。
共同点:
两者都可以写在字段和setter⽅法上。两者如果都写在字段上,那么就不需要再写setter⽅法。
不同点:
@Autowired是spring提供的注解。@Autowired注解是按照类型(byType)装配依赖对象,默认情况下他要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。
@Resource默认按照byName⾃动注⼊,@Resource有两个重要的属性:name和type,⽽spring将@
Resource注解的name属性解析为bean的名字,⽽type属性则解析为bean的类型。所以,如果使⽤name属性,则使⽤byName的⾃动注⼊策略,⽽使⽤type属性时则使⽤bytype⾃动注⼊策略。如果既不制定name也不制定type属性,这时将通过反射机制使⽤byName⾃动注⼊策略。
@ModelAttribute和@SessionAttributes
代表的是:该Controller的所有⽅法在调⽤前,先执⾏此@ModelAttribute⽅法,可⽤于注解和⽅法参数中,可以把这个
@ModelAttribute特性,应⽤在BaseController当中,所有的Controller继承BaseController,即可实现在调⽤
@PathVariable
⽤于将请求URL中的模板变量映射到功能处理⽅法的参数上,即取出uri模板中的变量作为参数,。
@RequestParam
主要⽤于在springmvc后台控制层获取参数,类似⼀种是Parameter(“name”),他有三个常⽤参数:
defaultValue=”0”,required=false,value=“isApp”;defaultValue表⽰设置默认值
@ResponseBody
该注解⽤于将Controller的⽅法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写⼊到Response对象的body 数据区
使⽤时机:返回的数据不是html标签的页⾯,⽽是其他某种格式的数据时(如json、xml等)使⽤;
@Component
相当于通⽤的注解,当不知道⼀些类归到那个层时使⽤,但是不建议。
@Repository
⽤于注解dao层,在daoImpl类上⾯注解
4.
5. Springmvc中的控制器的注解⼀般⽤哪个,有没有别的注解可以替代?
6. ⼀般⽤@Controller注解,表⽰是控制层,不能⽤别的注解替代。
7. Springmvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
是单例模式,所以在多线程访问的时候⼜线程安全问题,不要⽤同步,会影响性能的,解决⽅案是在控制器⾥⾯不能写字段。
8. @RequestMapping注解⽤在类上⾯有什么作⽤?
是⼀个⽤来处理请求地址映射的注解,可以⽤于类或⽅法上。⽤于类上,表⽰类中所有响应请求的⽅法都是以该地址作为⽗路径。
9. 如果前台有很多参数传⼊,并且这些参数都是⼀个对象的,那么怎么样快速得到这个对象?
直接在⽅法中声明这个对象,springmvc就⾃动会把属性赋值到这个对象⾥⾯。
0. Springmvc中有个类把视图和数据都合并的⼀起的,叫什么?叫做ModelAndView。
1. 当⼀个⽅法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?
要加上@ResponseBody注解。
2. Sprigmvc的异常处理
可以将异常抛给Spring框架,有Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器添视图页⾯即可。
SpringMVC的好处
Springmvc的优点
(1)Spring MVC中提供⼀个DispatcherServlet, ⽆需额外开发。
(2)springMVC中使⽤基于xml的配置⽂件,可以编辑,⽆需重新编译应⽤程序。
(3)springMVC实例化控制器,并根据⽤户输⼊来构造bean.
(4)springMVC可以⾃动绑定⽤户输⼊,并正确的转换数据类型。例如,springMVC能⾃动解析字 符串,并设置float或decimal类型的属性。
(5)springMVC可以检验⽤户输⼊,若校验不通过,则重定向回输⼊表单。输⼊校验是可选的, ⽀持编码⽅式以及声明。关于这⼀
点,springMVC内置了常见的校验器。
(6)springMVC是spring框架的⼀部分。可以利⽤spring提供的其它能⼒。
(7)springMVC⽀持国际化和本地化,⽀持根据⽤户区域显⽰多国语⾔。
(8)springMVC⽀持多种视图技术,最常见的JSP技术以及其它技术包括Velocity和FreeMarker
详解:
1. 清晰的⾓⾊划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象
(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每⼀个⾓⾊都可以由⼀个专门的对象来实现。
2. 强⼤⽽直接的配置⽅式:将框架类和应⽤程序类都能作为JavaBean配置,⽀持跨多个context的引⽤,例如,在web控制器中对业务
对象和验证器validator)的引⽤。
3. 可适配、⾮侵⼊:可以根据不同的应⽤场景,选择何事的控制器⼦类(simple型、command型、from型、wizard型、multi-action
型或者⾃定义),⽽不是⼀个单⼀控制器(⽐如Action/ActionForm)继承。
4. 可重⽤的业务代码:可以使⽤现有的业务对象作为命令或表单对象,⽽不需要去扩展某个特定框架的基类。
5. 可定制的绑定(binding)和验证(validation):⽐如将类型不匹配作为应⽤级的验证错误,这可以保证错误的值。再⽐如本地化的⽇期和
数字绑定等等。在其他某些框架中,你只能使⽤字符串表单对象,需要⼿动解析它并转换到业务对象。
6. 可定制的handler mapping和view resolution:Spring提供从最简单的URL映射,到复杂的、专⽤的定制策略。与某些web MVC框
架强制开发⼈员使⽤单⼀特定技术相⽐,Spring显得更加灵活。
7. 灵活的model转换:在Springweb框架中,使⽤基于Map的键/值对来达到轻易的与各种视图技术集成。
8. 可定制的本地化和主题(theme)解析:⽀持在JSP中可选择地使⽤Spring标签库、⽀持JSTL、⽀持Velocity(不需要额外的中间层)等
resource和autowired注解的区别等。
9. 简单⽽强⼤的JSP标签库(Spring Tag Library):⽀持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记⽅⾯的最⼤灵
活性。
10. JSP表单标签库:在Spring2.0中引⼊的表单标签库,使⽤在JSP编写表单更加容易。
11. Spring Bean的⽣命周期可以被限制在当前的HTTp Request或者HTTp Session。准确的说,这并⾮Spring MVC框架本⾝特性,
⽽应归属于Spring MVC使⽤的WebApplicationContext容器。
SSM的具体分析
SSM三个框架的优点。
⼀、mybatis的优缺点:
优点:a、sql写在xml⽂件中,便于统⼀管理和优化,解除sql和程序代码的耦合。
b、提供映射标签,⽀持对象和和数据库orm字段关系的映射,⽀持对象关系映射标签,⽀持对象关系的组建
c、提供xml标签,⽀持编写动态sql。
缺点:a、⼯作量较⼤,特别是在表的字段多,关联表多的情况下
b、sql语句的编写依赖于数据库,移植性差。
c、不⽀持级联删除,级联更新,需要⾃⼰对表进⾏删除。
⼆、spring的优点:
A、通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,⽅便解耦,简化了开发。
B、通过Spring的AOP特性,很容易实现事务,⽇志,权限的控制。
C、提供了对其他优秀开源框架的集成⽀持。
D、低侵⼊式。
三、SpringMVC的优点
A、springMVC是使⽤了MVC设计思想的轻量级web框架,对web层进⾏解耦,是的我们开发更简洁。
B、与Spring⽆缝衔接。
C、灵活的数据验证,格式化,数据绑定机制。
四、整合分析
A、spring MVC + spring +mybatis,是标准的MVC设计模式,将整个系统划分为显⽰层,Controller层,Service层,DAO 层四层
使⽤Spring MVC负责请求的转发和视图管理
spring实现业务对象管理,mybatis作为数据对象的持久化引擎。
B、Spring是⼀个开源框架,Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架,还能更好的让其他框架整合。
C、Spring MVC框架是有⼀个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进⾏分离。
D、MyBatis 是⼀个基于Java的持久层框架
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论