转自:http://elf8848.iteye.com/blog/875830很棒的一篇博客,想了解SpringMvc的入门选手可以去看看。

一,核心类与接口:

DispatcherServlet - 前端控制器

HandlerMapping接口 - 处理请求的映射

HandleMapping接口的实现类:

SimpleUrlHandlerMapping通过配置文件将一个URL映射到Controller

DefaultAnnotationHandleMapping通过注解,将一个URL映射到Controller类上

HandlerAdapter接口 - 处理请求的映射

AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上

Controller接口 - 控制器

由于使用了@controller注解,添加了@Controller注解的类就可以担任控制器(Action)的职责

HandlerInterceptor 接口 - 拦截器

ViewResolver接口的实现类

UrlBasedViewResolver类通过配置文件,把一个视图名交给到一个View来处理

InternalResourceViewResolver类,比上面的类,加入了JSTL的支持。

View接口

JstlView类

LocalResolver接口

HandlerExceptionResolver接口 - 异常处理

SimpleMappingExceptionResolver实现类

ModelAndView类

二,核心流程

三,DispacherServlet说明

使用SpringMvc配置Dispatch而Servlet是第一步。

DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet

DispatcherServlet是前置控制器,配置在web.xml中。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依靠某某规则分发到目标Controller我们写的(Action)来处理。

分发到Controller的某某规则根据你使用了哪个HandlerMapping接口的实现类的不同而不同。

  1. <web-app>
  2. <servlet>
  3. <servlet-name>example</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <load-on-startup>1</load-on-startup>  //是启动顺序,让这个Servlet随Servlettp容器一起启动
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>example</servlet-name>  //servlet的名字,可以有多个DispatcherServlet,是通过名字来区分的,每个DispatcherServlet都有自己的WebAppliContext上下文对象。同时保存在ServletContext中和Request对象中。
  9. <url-pattern>*.form</url-pattern>  //拦截所有以.form结尾的请求。
  10. </servlet-mapping>
  11. </web-app>

在DispatcherServlet的初始化过程中,框架会在web应用的WEB-INF文件夹下寻找名为【servlet-name】-servlet.xml的配置文件,生成文件中定义的bean。

  1. <servlet>
  2. <servlet-name>springMVC</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>classpath*:/springMVC.xml</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>springMVC</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>

指明了配置文件的文件名,不使用默认配置文件名,而是用springMvc.xml配置文件。

其中<param-value>**.xml</param-value>这里可以使用多种写法

1,不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml   比如说你的servlet-name是example那么找的那个文件就是example-servlet.xml

2,<param-value>/WEB-INF/classes/springMvc.xml<param-value>

3,<param-vlue>classpath*.springMvc-mvc.xml</param-value>

4,多个值用都好分隔。

初始Spring mvc的更多相关文章

  1. 初始Spring MVC——练手小项目

    初始Spring MVC 前几天开始了我的spring学习之旅,由于之前使用过MVC模式来做项目,所以我先下手的是 Spring MVC,做个练手项目,非常简单 项目介绍: 用户输入信息 -> ...

  2. java之spring mvc之初始spring mvc

    1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...

  3. spring mvc 初始

    今天带领大家开始第一天的spring  mvc学习 首先我们要下载maven然后配置IDE 然后选择new 新建项目 然后选择maven,然后选择maven的webapp 然后创建springmvc ...

  4. Maven+Spring MVC Spring Mybatis配置

    环境: Eclipse Neon JDK1.8.0 Tomcat8.0 先决条件: Eclipse先用maven向导创建web工程.参见本站之前随笔. 本机安装完成mysql5:新建用户xuxy03设 ...

  5. [Spring MVC] - JSON

    Spring MVC中使用JSON,先必需引用两个包:jackson-core-asl-1.9.13.jar.jackson-mapper-asl-1.9.13.jar 因为需要使用到jquery测试 ...

  6. Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

    1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...

  7. Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成

    与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...

  8. 用Spring MVC开发简单的Web应用

    这个例子是来自于Gary Mak等人写的Spring攻略(第二版)第八章Spring @MVC中的一个例子,在此以学习为目的进行记录. 问题:想用Spring MVC开发一个简单的Web应用, 学习这 ...

  9. Spring MVC 解读——<context:component-scan/>

    转自:http://my.oschina.net/HeliosFly/blog/203149 作者:GoodLoser. Spring MVC 解读---<context:component-s ...

随机推荐

  1. PCLVisualizer可视化类

    PCLVisualizer可视化类 转载自 http://www.cnblogs.com/li-yao7758258/p/6445127.html 如有疑问,请转至该网址留言询问 PCLVisuali ...

  2. SpringCloud和Springboot

    SpringBoot+SpringCloud+SpringMVC+SpringData 我们把这种架构也称之为spring全家桶 什么是SpringCloudSpring Cloud是一系列框架的有序 ...

  3. How to identify safari in Mac?

    How to identify safari in Mac?in userAgent, find keywords below1) and: Macintosh, Mac OS X, AppleWeb ...

  4. Flask-在Flask中跨请求传递数据资源

    利用 Flask的底层Werkzeug是有缓存支持的,不用使用redis等第三方. 原文地址如下: https://blog.csdn.net/yannanxiu/article/details/52 ...

  5. Linux下Memcached安装与启用

    http://www.linuxidc.com/Linux/2016-07/133423.htm

  6. SpringBoot 出现Whitelabel Error Page 解决办法

    这是咋了,咋的就404了 我路径也挺对的啊 注解也都写上了啊 咋就找不到了呢? debug吧它不进方法 看日志吧,他还不报错 这家伙给我急的 百度一下午也没解决,最后还是看官网才知道错在了那里,程序只 ...

  7. JAVA 类的三大特性,封装,继承,多态 的一些发现总结

    < 一 > 封装 < 二 > 继承 1,关于父类中的私有属性和方法,子类能不能访问的问题 1.1,子类不能通过继承拥有父类的私有属性和方法 1.2,子类可以从父类继承下来的 方 ...

  8. leetcode169

    public class Solution { public int MajorityElement(int[] nums) { Dictionary<int, int> dic = ne ...

  9. Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块

    Auth模板 1. 什么是Auth模块,有什么用? django的auth的模块的使用: auth 是集合注册,登录,注销,session 多个功能集合在一起的模块 2. 使用Auth组件的默认aut ...

  10. 如何学习DeepLearning

    多年来,科学家们为了搞清楚神经网络的运行机制,进行了无数次实验.但关于神经网络的内在运行方式,目前还没有系统性的理论,没有具体的路线可以指引你获得更好的性能.简单地下载开源工具包直接使用并不能跑出很棒 ...