浅谈 Spring MVC

Spring MVC

以下内容来自英语未过四级的官网翻译结果,酌情取舍
官网地址

Spring MVC

  • Spring MVC 框架围绕找 DispatcherServlet 来设计的,它能传递请求,并且可以配置映射控制器(Handler mappings)、视图解析(view resoution)、本地和主题模板解析(local and )以及支持文件上传。默认控制器基于@Controller 和 @RequestMapping注解,提供广范围的方法控制。在Spring 3.0中,@Controller 机制也允许你创建 Restful Web网站和应用,通过@PathVariable 注解和其他特性

  • 在Spring MVC 和Spring 中一个关键的设计准则是“对扩展开放,对修改关闭”
    在Spring MVC 的核心类的一些方法被设计成final,作为一个开发者你不能覆盖这些方法来提供你自己的行为。这个思想还没有武断的做完,但是要特别牢记这个准则
    当你使用Spring MVC,你不能去 AOP一个final方法;

  • 在Spring Web MVC中,你可以使用任何对象作为控制或者封装返回对象;你不需要实现框架特殊的接口或者基类。Spring 的数据绑定高度灵活,比如,通过应用程序可以评估没有匹配的的类型,看作是验证错误,而不是系统错误。因此你不需要在简单表单对象复制你的业务对象属性为简单的、没有类型指定的字符类型,只是为了无效提交,或是转为适当的字符串。它可以经常更好的直接绑定你的业务对象。

  • Spring 的视图解析非常灵活,一个Controller通常负责一个数据的Map模型和选择视图的名字,但是它也可以向相应流直接写入完成请求。视图名字解析高度可配,通过文件拓展,接受请求头Content type转让,通过bean的名字,一个适当的文件,或者甚至一个自定义的ViewResolver实现.MVC 中的 M 是一个 Map接口,允许完全的视图技术抽象。你可以基于绑定技术来直接完成,比如JSP、Veelcity和Freemarker,或者直接生成XML、JSON、Atom和其他内容的类型。M 只是简单的翻译成适当的格式,比如JSP的请求的attributes,一个Velocity模板模型

Spring MVC的特性

  • Spring 页面流
  • Spring Web Flow(SWF)目标成为在web应用页面流管理的最好解决。
  • SWF整合了在Servlet和portlet环境下存在的Spring MVC 框架,Struts,和JSF框架。如果你有一个业务过程,作为相反的转换模型到纯 request模型而获益,那么SWF可能是这种解决方案。
  • SWF允许您将逻辑页面流捕获为可在不同情况下重用的自包含模块,因此非常适合构建web应用程序模块,以引导用户通过驱动业务流程的受控导航

Spring meb 模型包括许多唯一的web支持特性

  • 1.清楚的角色分工

  • 2.强大的、简单的框架和应用配置类作为Java的Bean对象。

  • 3.适配能力,非侵入性,灵活型。

  • 4.可以重复利用的业务代码

  • 5.自定义绑定和校验

  • 6.自定义映射控制器和视图解析

  • 7.灵活的模型转换

  • 8.自定义的本地和主题解析,支持JSP、JSTL、Velocity等等

  • 9.写JSP页面就更简单

  • 10.在当前HTTP请求或者HTTPSession的Bean生命周期管理

3. DispatcherServlet

  • Spring的MVC框架,像其他Web MVC框架一样,请求驱动,设计围绕着一个主要的Servlet,传递请求到Controllers,提供其他促进Web应用程序开发功能。Spring 的 DispatcherServlet做的更多,它被Spring IOC完全整合,因此允许你使用每个其他Spring有的特性
    DispatcherServlet是一个真是的Servlet(从HttpServlet继承而来),因此定义在你的web.xml中。你需要映射你希望DispatcherServlet处理的请求,同样在web.xml通过使用URL mapping设置。这是Java EE Servlet 的配置,下面是一个例子展示DispathcerServlet的声明和映射
    浅谈 Spring MVC
    编码

  • 改变maven项目为Spring mvc 项目
    1.选中项目F4,创建webapp目录
    浅谈 Spring MVC

  • 2.修改web.xml地址
    src\main\webapp\WEB-INF\web.xml
    浅谈 Spring MVC

  • 3.项目目录为:
    浅谈 Spring MVC

  • 4.添加webmvc依赖、在resource目录下创建
    applicationContext.xml
    springmvc-servlet.xml
    浅谈 Spring MVC
    浅谈 Spring MVC
    applicationContext.xml
    浅谈 Spring MVC
    springmvc-servlet.xml ,视图解析器和anotation-driven
    浅谈 Spring MVC
    至此一个 Web MVC项目创建完毕

  • 5.验证MVC
    创建hello.jsp,路径为:webapp/WEB-INF/jsps/hello.jsp
    浅谈 Spring MVC
    浅谈 Spring MVC

  • 6.创建HelloController验证mvc
    浅谈 Spring MVC
    7.配置本地tomcat
    浅谈 Spring MVC
    浅谈 Spring MVC
    浅谈 Spring MVC
    浅谈 Spring MVC
    浅谈 Spring MVC
    启动项目
    浅谈 Spring MVC
    访问hello接口,
    浅谈 Spring MVC
    经过了控制层、视图层

JSON增删改查

  • 1.引入fastjson
    浅谈 Spring MVC

  • 2.配置 fastjson 的转换器(converter)
    浅谈 Spring MVC

  • 3.controller类
    浅谈 Spring MVC

  • 4 service类
    浅谈 Spring MVC

  • 5.dao类
    浅谈 Spring MVC

  • 6.自定义返回封装类
    浅谈 Spring MVC

  • 7.模拟数据库类
    浅谈 Spring MVC

  • 8.重启项目,使用 Postman 请求测试
    查询:
    浅谈 Spring MVC
    新增
    浅谈 Spring MVC
    新增后再次查询
    浅谈 Spring MVC
    删除(用id删除关羽)
    浅谈 Spring MVC
    删除后再次查询
    浅谈 Spring MVC
    修改(修改刘备名字为刘备备)
    浅谈 Spring MVC
    修改后查询
    浅谈 Spring MVC

代码 github 下载地址

ioc aop mvc