Spring MVC的配置与DispatcherServlet的分析
Spring MVC是一款Web MVC框架,是目前主流的Web MVC框架之一。
Spring MVC工作原理简单来看如下图所示:

接下来进行Spring MVC的配置
首先我们配置Spring MVC先要引进相关的jar包
我们需要有一个处理器,即Controller层,并将它配置到ioc中,当用户访问一个路径是,前端控制器拦截后会产生一个handler映射到ioc容器中,如果有匹配的RequestMapping就会访问这个方法,否则产生404异常。
@Controller
public class helloworld { @RequestMapping("hello1.action")
public ModelAndView hello(){
ModelAndView mav = new ModelAndView();
mav.addObject("data", "你好");
mav.setViewName("hello");
return mav;
}
}
并将它扫描到ioc容器中
<context:component-scan base-package="package com.xt.crud"></context:component-scan>
<mvc:default-servlet-handler/> <mvc:annotation-driven ></mvc:annotation-driven>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:default-servlet-handler/>表示将没有匹配到Controller的静态资源的处理交给web容器,例如css,js等
但是当我们把静态资源的处理交给web容器时,你会发现我们写的RequestMapping中的路径无法访问,这是因为当我们没有添加这个标签时,框架默认注册有
AnnotationMethodHandlerAdapter这个类,他会对spring MVC中的注解进行处理,匹配RequestMapping中的路径,但是当我们加了<mvc:default-servlet-handler/>,
前端控制器拦截后会将拦截路径和资源型请求交给默认的处理器处理,而这个处理器无法处理Controller中的路径,而<mvc:annotation-driven >会注册一个RequestMappingHandlerAdapter,
并在默认处理器处理完静态资源后处理RequestMapping中的路径。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean> 可以简化我们返回视图层的路径,比如我们要返回view/success.jsp,配置了以上内容后,我们只需要写success就可以了。
接下来配置前端控制器(DispatcherServlet),打开web.xml
找到spring-webmvc包下的Dispatcher.class并把它配置到servlet标签

<servlet>
<servlet-name>Dispatchar</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/crud.xml</param-value>
</init-param>
</servlet>
在配置前端控制器时,我们需要初始化org.springframework.web.servlet.DispatcherServlet中的contextConfigLocation属性,将他赋值为我们刚才写的ioc容器的路径,
这样他才能将我们的请求与ioc中Controller中的RequestMapping作对比。在servlet标签中还有一个<load-on-startup></load-on-startup>标签,它是用来设置多个servlet
拦截的优先级的,数字越小优先级越高,例如<load-on-startup>0</load-on-startup>的servlet会比<load-on-startup>1</load-on-startup>的优先执行。
接下来配置前端控制器的拦截路径
<servlet-mapping>
<servlet-name>Dispatchar</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/表示拦截所有路径,包括静态资源
以上就是前端控制器(DispatcherServlet)的配置过程,下一周会分享spring MVC中的Restful,自动装箱和重定向
Spring MVC的配置与DispatcherServlet的分析的更多相关文章
- spring mvc之启动过程源码分析
简介 这两个星期都在看spring mvc源码,看来看去还是还是很多细节没了解清楚,在这里把看明白的记录下,欢迎在评论中一起讨论. 一.铺垫 spring mvc是基于servlet的,在正式分析之前 ...
- Spring MVC 事务配置
Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法: 一. XML,使用tx标签配置拦截器实现事务 一. ...
- spring mvc+myBatis配置详解
一.spring mvc Spring框架(框架即:编程注解+xml配置的方式)MVC是Spring框架的一大特征,Spring框架有三大特征(IOC(依赖注入),AOP(面向切面),MVC(建模M- ...
- Maven 工程下 Spring MVC 站点配置 (一)
最近,查找一些具体资料时,虽然会有很多,但是系统的却很少,尤其是对maven 下 spring mvc 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...
- Spring mvc系列一之 Spring mvc简单配置
Spring mvc系列一之 Spring mvc简单配置-引用 Spring MVC做为SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 ...
- Spring学习日志之Spring MVC启动配置
对DispatcherServlet进行配置 Spring MVC的配置实际上就是对DispatcherServlet的配置 public class DispatcherServletConfig ...
- Spring MVC的配置和使用
Spring MVC的配置和使用 笔记仓库:https://github.com/nnngu/LearningNotes Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 ...
- Spring MVC 零配置 / Spring MVC JavaConfig
1. Spring MVC的核心就是DispatcherServlet类,Spring MVC处理请求的流程如下图所示: 2. Spring MVC中典型的上下文层次 当我们初始化一个Dispatch ...
- [转]Spring MVC 事务配置
Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法: <tx:advice/>就是告诉事务管理器:怎么做 ...
随机推荐
- HDU 1754 I Hate It(线段树区间求最值)
很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有 ...
- HIVE---基于Hadoop的数据仓库工具讲解
Hadoop: Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用来开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Dist ...
- MyBatis Generator代码自动生成工具的使用
MyBatis Generator MyBatis Generator有三种使用方式,分别是maven插件形式.命令行形式以及eclipse插件形式.我在这里使用的是命令行的形式(主要是命令行形式比较 ...
- 详解m4文件
最近在分析speex代码,发现编译过程中需要的一个speex.m4文件不知道是何方神圣,怀着对未知知识的渴望,跑到 某哥和某基问了一下,算是认识了,为了方便以后经常见面,这里就做个记录吧. M4实际上 ...
- 扩展javascript扩展(类,对象,原型)
扩展javascript扩展(类,对象,原型)
- Kettle文本文件输出和输入控件使用中,换行符导致的问题处理
1.如下图通过输入控件从数据库读取数据然后生成TXT文本文件,TXT文件生成原则是每一条数据生成一行数据,第二条数据换行保存 2.如下图所示,使用文本文件输入控件读入上图生成的文件,文件读入原则是按行 ...
- DOM 节点 课程表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- DevOps之唠叨话
唠叨话 教学:人类培养态度.传授知识.训练技能的活动. 教学手册(Teaching Manual) 教学形式:教材与课程,师生(一对一.一对多).教学内容:系统框架和问答机制,结构(前言.目录.正文. ...
- 我的three.js学习记录(二)
通过上一篇文章我的three.js学习记录(一)基本上是入门了three.js,但是这不够3D,这次我希望能把之前做的demo弄出来,然后通过例子来分析操作步骤. 1. 示例 上图是之前做的一个dem ...
- 最美时光第三方UWP源码公开
自己大概写了一个星期的成果.. 使用了官方最美时光app的UI和图片资源,并没有调用官方接口 https://files.cnblogs.com/files/loyieking/NiceCountDo ...