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/>就是告诉事务管理器:怎么做 ...
随机推荐
- Lowbit Sum 规律
Lowbit Sum Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitSt ...
- activemq的安装与使用
一.activemq的安装 环境:CentOS 6.JDK8 1. 确保系统已安装了可用的jdk版本2. 从网上下载 Linux 版的 ActiveMQ( apache-activemq-5.11.1 ...
- Linux CentOS 7 防火墙/端口设置
CentOS升级到7之后用firewall代替了iptables来设置Linux端口, 下面是具体的设置方法: []:选填 <>:必填 [<zone>]:作用域(block.d ...
- Yii 2.0 数据库操作总结
1. 概述 操作数据库有2种方式: DAO(data access object),不安全 ORM(onject relational mapping) 2. DAO Yii::app()->d ...
- ubuntu中运行python脚本
1. 运行方式一 新建test.py文件: touch test.py 然后vim test.py打开并编辑: print 'Hello World' 打开终端,输入命令: python test.p ...
- Python学习手册 :Python 学习笔记第一天
获取当前目录路径: import os os.getcwd() 在输入python程序时,尽量让不是嵌套结构的语句处于最左侧,要不然系统或许会出现"SyntaxError"错误 获 ...
- webpack 的使用1
进入指定文件夹 npm init 安装 npm install webapck --save-dev 根目录下新建hello.js 将文件打包到指定文件 Asset :打包成的文件名称 Chunk ...
- 项目常见函数封装,基于Jquery
/// <reference path="jquery-1.8.0.min.js" /> /* * DIV或元素居中 * @return */ jQuery.fn.mC ...
- css笔记-文本样式
聊聊text-decoration.text-indent.text-transform.letter-spacing.word-spacing.vertical-align.下面是一些常用设置文本样 ...
- PHP常用表达式用法
1.匹配正整数:/^[1-9]\d*$/ 2.匹配非负整数(正整数+0):/^\d+$/ 3.匹配中文:/^[\x{4e00}-\x{9fa5}]+$/u 4.匹配Email:/^\w+([-+.]\ ...