深入理解springMVC

什么是spring MVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2(一般老项目使用)等。

spring mvc简介

springmvc是spring的一个模块,提供web层解决方案(基于mvc设计架构)

采用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。

使用springMVC的优势

1、清晰的角色分配: 前段控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver),

处理器和页面控制器(Controller),验证器(Validator),命令对象(Command),

表单对象(FromObject)

2、分工明细

3、和Spring框架无缝结合

spring mvc框架流程图

SpringMvc整个的执行流程:

1、发起请求到前端控制器(DispatcherServlet )
2、前端控制器请求HandlerMapping查找Handler(可以根据xml、注解进行查找)
3、处理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler
4、前端控制器DispatcherServlet 调用处理器适配器HandlerAdapter 执行Handler
5、处理器适配器HandlerAdapter 执行Handler
6、Handler执行完给处理器适配器返回ModelAndView
7、处理器适配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底层对象 包括model和view)
8、前端控制器请求视图解析器去解析视图
  根据逻辑视图名解析成真正的视图(jsp)
9、视图解析器向前端控制器返回view
10、前端控制器进行视图渲染
  视图渲染将模型数据(模型数据在ModelAndView对象中)填充到request域
11、前端控制器向用户响应结果

组件:

1、前端控制器DispatcherServlet(不需要程序员开发)
作用接收请求,响应结果,相当于转发器,中央处理器。
有了DispatcherServlet减少了其它组件之间的耦合度。
2、处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
4、处理器Handler(需要程序员开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
5、视图解析器View resolver(不需要程序员开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6、视图View(需要程序员开发jsp)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

springMVC常用注解

1. 在 struts-config.xml 文件中加入

<!--用于声明GetPersonList。do请求委托Spring处理--><action path="/GetPersonList" scope="request"type="org.springframework.web.struts.DelegatingActionProxy"></action>

2.在 applicationContext.xml 文件中加入

<!-- 指定GetPersonList处理的代码,和注入实现业务的代码 --><bean name="/GetPersonList" class="cn.base.GetPersonListAction"><property name="getPersonList" ref=" getPersonListServices"></property></bean>

3.cn.base.GetPersonListAction 实现请求响应代码

可以看出一次请求需求如此多的步骤,在加上一个项目下来有很多这样的请求响应,将给配置文件管理带来很大的麻烦。

经过对 Spring 的深入应用, Spring 本身提供的 URL 请求控制,对其天然支持可以让我们不需要 applicationContext.xml 再次声明一次 URL 请求 Bean ,即减少了 Struts 的声明 URL ,达到减少些繁琐的配置。但只是少了一些而已,同样也会面临着配置文件的管理问题。

Spring 注解将给我们的工作带来些轻松,利用反射机制原理出现的注解就是为了解决配置大量的配置问题。请看下处理一次简单的请求响应代码

@Controller --声明控制器

@RequestMapping("/person") –声明URL

public class PersonControl extends BaseController {

@Autowired –业务接口注入

private personServices personServices;/*** 获得人员列表*@param request* @param response* @throws Exception*/

@RequestMapping(params = "method=geList") --即处理/person.do? method=geList方法

public void getnodeList(HttpServletRequest request,HttpServletResponse response) throws Exception { //处理请求//处理响应}}

可以看出,在代码上加入注解可以省去我们上面说的多个配置文件的工作,达到简便的 MVC 处理请求响应。

再配上简单的配置文件声明,即可轻松处理项目的全部请求控制工作。

如果大家想学习以下路线内容,在此我向大家推荐一个架构学习交流群。交流学习群号:478030634 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

注:关注作者微信公众号,了解更多分布式架构、微服务、netty、MySQL、spring、、性能优化、等知识点。公众号:《Java烂猪皮》


注:原文连接:https://segmentfault.com/a/1190000015468759


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值