zoukankan      html  css  js  c++  java
  • Spring Web MVC 基础

    一、Spring Web MVC简介

    1.1、MVC模式简介

    *M-Model模型

    模型(Model)的职责是负责业务逻辑。包含两层:业务数据和业务处理逻辑。比如实体类、DAO、Service都属于模型层。

    *V-View视图

    视图(View)的职责是负责显示界面和用户交互(收集用户信息)。属于视图的组件是不包含业务逻辑和控制逻辑的JSP。

    *C-Controller控制器

    控制器是模型层M和视图层V之间的桥梁,用于控制流程比如:在Servlet项目中的单一控制器ActionServlet。

    1.2、什么是Spring Web MVC

      Spring Web MVC是spring框架一个非常重要的功能模块。实现了MVC结构,便于简单、快速开发MVC结构的web程序。Spring Web MVC提供的API封装了web开发中常用的功能,简化了web过程。

    1.3、Spring Web MVC的核心组件

      Spring Web MVC提供了M、V和C相关的主要实现组件,具体如下

    *DispatcherServlet(控制器,请求入口)

    *HandlerMapping(控制器,请求派发)

    *Controller(控制器,请求处理流程)

    *ModelAndView(模型,封装业务处理结果和视图)

    *VeiwResolver(视图,视图显示处理器)

    1.4、Spring Web MVC的处理流程

    Spring Web MVC的主要处理流程如下

    *浏览器向Spring发出请求,请求交给前段控制器DispatcherServlet处理。

    *控制器通过HandlerMapping找到相应的Controller组件处理请求。

    *执行Controller组件约定方法处理请求,在约定方法调用模型组件完成业务处理。约定方法可以返回一个ModelAndView对象,封装了处理结果数据和视图名称信息。

    *控制器接收ModelAndView之后,调用V诶我Resolve让自己,定位View(JSP)并传递数据信息,生成响应界面结果。

    二、基于XML配置的MVC应用

    2.1、搭建Spring Web MVC环境

    搭建Spring Web MVC开发环境的主要步骤如下

    *创建Web工程,导入Spring Web MVC相关开发包

      例如 Spring API、Web、webmvc等开发包

    *在src下添加Spring的XML配置文件

      名称可以自定义,例如spring-mvc.xml

    *在web.xml中配置DispatcherServlet前段控制器组件

      DispatcherServlet组件在spring mvc中已提供,只需要配置即可。

      配置DispatcherServlet时,同时指定xml配置文件。

    2.2、DispatcherServlet控制器配置

    2.3、HandlerMapping组件

      通过HandlerMapping组件,DispatcherServlet控制器可以将客户HTTP请求映射到Controller组件上。

    *SimpleURLHandlerMapping

      维护一个HTTP请求和Controller映射关系列表(map),根据列表对应关系调用Controller。

    *RequestMappingHandlerMapping

      RequestMappingHandlerAdapter

      在Controller类和方法使用@RequestMapping注解指定对应的客户HTTP请求(后续注解配置部分将信息介绍)。

    2.4、Controller组件

      Controller组件负责执行具体的业务处理,可调用DAO等组件,编写时需要Controller借口及约定方法。

    2.5、ModelAndView组件

      Controller组件约定的HandlerMapping方法执行后返回一个ModelAndView对象,该对象可封装模型数据和视图名响应信息。ModelAndView构造器如下

      ModelAndView(string viewName)

      ModelAndView(String viewName,Map model)

      viewName是jsp页面的名字

      model的数据存储到request的attribute中

    2.6、ViewResolver组件

      所有Controller组件都返回一个ModelAndView实例,封装了视图名。Spring中的视图一名字为标识,视图解析器ViewResolver通过名字来解析视图。

      Spring提供了多种视图解析器,具体如下

    InternalResourceViewResolver使用实例如下

    如:视图名hello通过以上配置可以映射到/WEB-INF/jsp/hello.jsp

    三、基于注解配置的MVC应用

    3.1、@RequestMapping注解应用

      @RequestMapping可以用在类定义和方法定义上。

      @RequestMapping标记这个类或方法与哪一个客户请求对应

      

    @Controller
    @RequestMapping("day01"public class HelloController{
      
      @RequestMapping("/hello.form")
      public String execute() threws Exeception{
            return "hello";          
        }              
    }

    *开启@RequestMapping注解映射,需要在Spring的XML配置文件中定义RequestMappingHandlerMapping(类定义前)和RequestMappingHandlerMapping(方法定义前)两个bean组件。

    RequestMappingHandlerMapping和RequestMappingHandlerAdapter两个bean组件定义示例

    从spring3.2版本开始可以使用下面xml配置简化

    RequestMappingHandlerMapping和RequestMappingHandlerAdapter定义

    <mvc:annotation-driven/>

    3.2、@Controller注解应用

      推荐使用@Controller注解声明Controller组件,这样可以使得Controller定义更加灵活,可以不用实现Controller接口,请求处理的方法也可以灵活定义。

    @Controller
    @RequestMapping("/day01")
    public class HelloController{
      
      @RequestMapping("/hello.form")
      public String execute() throws Exception{
           return "hello";
        }    
    }

      为了使@Controller注解生效,需要在Spring的xml配置文件中开启组件扫描定义,并指定Controller组件所在的包。

    <context:component-scan base-package="com.tarena.controller"/>
  • 相关阅读:
    大屏设计
    ES6课程---11、promise对象实例
    ES6课程---10、promise对象
    心得体悟帖---200502(读西游记之修心)
    ES6参考---promise对象结构分析
    javascript疑难问题---18、回调函数做异步操作
    javascript疑难问题---17、js中in关键字使用总结
    javascript疑难问题---16、类数组对象转换成数组
    javascript疑难问题---15、类数组对象
    心得体悟帖---200501(情感回馈,一般你怎么对待别人,别人也会怎么对待你)
  • 原文地址:https://www.cnblogs.com/liujie-e2/p/7490998.html
Copyright © 2011-2022 走看看