SpringMVC

Servlet+JSP模式的弊端

  • 如果使用多个servlet

    • web.xml文件巨大
    • 各个servlet处理流程分散,难以维护、修改
  • 如果使用单个servlet

    • 采用合适的设计模式,可以避免servlet的可维护性
    • URL分析和业务代码混杂
    • 业务逻辑硬编码在servlet中,难以重用
  • Springmvc使用请求驱动的框架,提供了一套可复用的基础设施

  • 一个前端控制器——提供可复用的功能

    • 前端控制器抽取出流程控制逻辑,将对应具体请求的业务逻辑交给次级控制器
    • 可以读取统一的配置文件,避免配置信息的硬编码
  • 多个次级控制器

    • HandlerMapping,用于搜索handler,并返回执行链
    • HandlerAdapter,用于执行不同的handler,执行完成后返回model和view视图名
    • ViewResolver,根据view的种类和名称,找到view文件,调用不同的解析器将文件解析成view视图
    • View,将model中的数据插入视图中,完成最后的视图渲染
SpringMVC执行流程时序图

controller的输入参数

  • 请求参数名称对应的实参,name、password等,从表单返回的数据会自动绑定到同名参数中,也可以用@RequestParam("name")标注参数名称
  • 用@CookieValue绑定请求中的cookie值
  • 直接获取HttpServletRequest

controller的返回参数

  • ModelAndView
    • 包含addObject、setViewName等方法
    • ModelAndView必须在controller中new获得
  • String,会被直接当做逻辑视图名
    • 入参中如果标注@ModelAttribute("名称"),就会被直接放入model中

你可能感兴趣的:(SpringMVC)