转自: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. 1.1 VMware简介

    VMware是真正“同时”运行,多个操作系统在主系统的平台上,像标准Windows应用程序那样切换.而且每个操作系统你都可以进行虚拟的分区.配置而不影响真实硬盘的数据,通过网卡将几台虚拟机用网卡连接为 ...

  2. OSS阿里云上传文件 前端js下载url跨域问题

    场景: 1.后端上传文件至阿里云OSS,返回得到一个URL. 2.前端用这个URL下载文件,ajax请求异常:No 'Access-Control-Allow-Origin' header is pr ...

  3. vscode, cmake编译多个C++文件

    目的是利用vscode及相关插件编译多个C++文件. 我已经装好cmake和mingw并且将它们的路径添加到系统变量path中了. vscode装上如下几个插件: 点击vscode左上角   文件-& ...

  4. WindowsServer2012R2开机进入CMD,关闭后黑屏问题

    原因分析: 因为自己在卸载IIS的时候,不小心卸载了.net framework,系统没有了图形界面(由完整模式Full变为了核心模式core),需要重新恢复.net framework4.5. 解决 ...

  5. beef + msf 实现内网渗透

    在内网渗透方面,最为大众所知道的就是xp系统的ms08067漏洞,通过这个漏洞可以对未打上补丁的xp系统实现getshell, 但是经过笔者发现,这种漏洞攻击在被攻击机开上windows防火墙的时候是 ...

  6. SAS 评分卡开发模型变量统计及输出

    以下代码实现功能: 1.获取10个模型分别使用哪些变量 2.变量所模型使用的次数 3.把上表格输出到EXCEL中 %INCLUDE '00@HEADER.SAS'; %let dir=..\04@Mo ...

  7. docker 学习(九) docker部署静态网站

    一:  dockerfile, 把Dockerfile和myfolder放在一个目录下: FROM httpd:2.4 COPY ./myfolder/ /usr/local/apache2/htdo ...

  8. 用kettle从mysql中使用存储过程读取数据写入到sqlserver数据库

    1.mysql存储过程,可以实现动态表读取,满足较为复杂的业务逻辑 DROP PROCEDURE if exists p_get_car_trace; delimiter // CREATE PROC ...

  9. go api json 输出尝试

    package main import ( "fmt" "net/http" //"net/url" "github.com/dr ...

  10. Java分割ID和姓名(String不能当输出参数)

    ID:包括数字和字母 姓名:汉字 package org.ah; import org.ah.utils.Utils; public class Test { public static void m ...