Spring学习笔记之五----Spring MVC

  1. Spring MVC通常的执行流程是:当一个Web请求被发送给Spring MVC Application,Dispatcher Servlet接收到这个请求,通过HandlerMapping找到Controller,将这个请求委派给Controller的某个Handler Method处理,这个Handler Method处理完这个请求,返回一个ModelAndView给Dispatcher Servlet,Dispatcher Servlet利用View Name,请求View Resolver,View Resolver返回相应的view;Dispatcher Servlet拿到View后,将Model传递给View,然后将Response返回;
  2. 对于每一个Controller里面的Handler Method,它可以接收以下的参数:
    • HttpServletRequest或HttpServletResponse类型的对象;
    • 任意类型的请求参数,使用@RequestParam标注,这些请求参数的值来自于Url中的request parameter;
    • 任意类型的Path Variable,使用@PathVariable来标注,这些参数的值来自于请求Path中的一部分,在使用这个的前提是你必须在这个Handler Method标注的@RequestMapping里面使用占位符;
    • Model类型的对象;你可以向这个对象里面添加attributes;
    • 任意类型的Cookie属性值,使用@CookieValue标注;
    • Map或者ModelMap类型的对象,Handler Method可以用来向Model里面添加属性;
    • Errors或者BindingResult类型的对象,Handler Method用来访问Model对象的验证结果;
    • SessionStatus类型的对象,Handler Method可以用来设置一个Session的完成;

    Handler Method可以有两种类型的返回值:

    • 一种是String,表示视图名;
    • 另外一种是void,这要取决于Handler Method接收的参数,如果其接收了ModelAndView类型的参数,并在这个参数中设置了视图名,那么这个视图名将被以后的View Resolver所使用,否则Spring会根据在@RequestMapping中配置的URL,将URL最后那部分默认的视图名,如果@RequestMapping中配置的URL最后那部分是一个通配符(*),则会将当前Handler Method的方法名作为View Name;
  3. 在一个基于SpringMVC的Web应用程序里面,一般有两种配置文件:
    • 一个是Web Application的配置文件(web.xml),你需要在里面指定一个或者多个servlet实例以及url到servlet的映射关系:

      <servlet>
          <servlet-name>servlet name</servlet-name>
          <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
          </servlet-class>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>servlet name</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>

      在比较大的应用程序里,指定多个DispatcherServlet实例尤其重要,这样可以让每个DispatcherServlet服务于不同的功能,拥有不同的并完全隔离的Spring Container;

    • 另外一个是Spring MVC配置文件,在没指定的情况下,每一个DispatcherServlet都会去WEB-INF目录下加载一个名为{servlet name}-servlet.xml的Spring配置文件;你也可以通过一个名为contextConfigLocation的servlet parameter来指定;
      你还可以指定一个Root Application的配置文件,这个配置文件中的bean会被每一个DispatcherServlet的配置文件中的bean访问或者复写,这个配置文件必须通过一个ContextLoaderListener类型的Listener来加载,你可以通过一个名为contextConfigLocation的context parameter来指定这个配置文件名,默认情况下这个文件是/WEB-INF/applicationContext.xml。
  4. 在你在创建Web Application的Controller之前,你需要在Application Context配置文件中添加<context:component-scan base-package="…" />去Scan所有的标记有@Controller和@RequestMapping annotations的类;或者在你的配置类上加上@ComponentScan annotation,并设置basePackages属性;
    除此之外,我们需要让Spring MVC能预注册一些Bean,所以我们需要在Application Context配置文件中加上<mvc:annotation-driven />;你也可以在你的配置类上加上@EnableWebMvc annotation达到相同的效果;
  5. 在Handler Method返回视图名之后,你需要在Application Context配置文件中添加一个ViewResolver的Bean,这个Bean负责将一个View name解析为一个View的实现;
  6. 如果我们要将一个请求映射到Controller中的一个方法,我们必须要将这个方法用@RequestMapping annotation来标注,并在这个annotation中指定映射的路径,这个路径可以是一个明确的路径,也可以包含通配符,也可以包含一些Path Variable的占位符;如果在@RequestMapping annotation中没有指定路径,则默认这个Handler Method将使用其所在Controller上配置的@RequestMapping annotation中指定的路径,你也可以在@RequestMapping中限定Request Type;
时间: 2024-10-05 02:32:08

Spring学习笔记之五----Spring MVC的相关文章

spring学习笔记(一) Spring概述

博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring的优势在哪里?怎么系统的学习Spring? 一.什么是Spring? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 那有人就会问了,Spring是如何简化开发的? 在传统开发中,一个应用是需

Spring学习笔记——关于Spring注解扫描不能注入new对象问题

这几天Leader让我用工厂模式对部分业务逻辑代码进行重构,过程是痛苦的(这里就不详细说了),结果很甜蜜.下面记录一下我在重构过程中遇到一个问题. 部分代码如下: @service(orderFactory) public class OrderFactory implements IOrderFactory{ public OrderCreate factory(String type){ if(type != null && type.indexOf("1")! =

Spring学习笔记1——spring搭建

1.新建一个java工程 2.添加spring相关的jar包并添加到引用 3.添加spring依赖的相关jar包并添加到引用 4.编写spring配置文件applicationcontext.xml 新建applicationContext.xml文件,然后编写头文件.关于spring头文件的写法可以参考spring提供的guide. 解压下载的spring文件,找到docs\spring-framework-reference\html\index.html并打开,然后找到 在打开的页面中会有

spring学习笔记:spring事务管理 (转)

关于事物隔离级别, 脏读, 不可重复读, 幻读的理解, 另有一篇文章比较生动的介绍:http://blog.csdn.net/sunxing007/article/details/6427290 spring事务管理相关的接口: TransactionDefinition:代表一个事物,描述了事务的隔离级别, 超时时间,事务是否只读, 传播规则等等; TransactionStatus:描述事物的状态; PlatformTransactionManager:事务管理器接口, 只定义了3个方法:g

Spring学习笔记--使用Spring基于Java的配置

我们需要使用@Component注解来定义一个配置类,在配置类中我们定义Bean: package com.moonlit.myspring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MoonlitConfig { @Bean public Weapon h

【Spring学习笔记-MVC-15.1】Spring MVC之异常处理=404界面

作者:ssslinppp       异常处理请参考前篇博客:<[Spring学习笔记-MVC-15]Spring MVC之异常处理>http://www.cnblogs.com/ssslinppp/p/4610043.html : 在遇到404错误时,如何跳转到404界面?下面将介绍之. 404.jsp 在web.xml中定义 <error-page> <exception-type>java.lang.Throwable</exception-type>

【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.com/ssslinppp/p/4607043.html (请参考).本文主要讲多文件上传的过程. 主要区别在于控制层代码不同,同时,jsp代码也有相应修改. 2. 添加jar包 commons-fileupload-1.2.2.jar: commons-io-2.0.1.jar: 3. 配置CommonsMul

【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MVC与json参考文章:[spring学习笔记-mvc-3]返回json数据-方式1  和 [spring学习笔记-mvc-4]返回json数据-方式2. 使用到的技术主要如下: Ajax:使用JQuery 提供的ajax:==>需要引入jquery.min.js文件: Spring MVC: Jso

mybatis学习笔记(14)-spring和mybatis整合

mybatis学习笔记(14)-spring和mybatis整合 mybatis学习笔记14-spring和mybatis整合 整合思路 整合环境 sqlSessionFactory 原始dao开发和spring整合后 mapper代理开发 遇到的问题 本文主要将如何将spring和mybatis整合,只是作简单的示例,没有使用Maven构建.并展示mybatis与spring整合后如何进行原始dao开发和mapper代理开发. 整合思路 需要spring通过单例方式管理SqlSessionFa