SpringMVC是Spring 框架自带的一部分。

SpringMVC底层基于:Servlet

Struts2底层基于:filter

struts1底层基于:Servlet

spring 各模块

我们这里学的是MVC

spring mvc都做了些什么

1. Controller为中心完成对系统流程的控制管理 (相当于Struts的Action)

2. 从请求中搜集数据

3. 对传入的参数进行验证

4. 将结果返回给视图

5. 针对不同的视图提供不同的解决方案

6. 针对jsp视图技术提供标签库

7. 拦截器

8. 上传文件

spring-mvc结构、核心组件

1. DispatcherServlet:中央控制器,把请求给转发到具体的控制类

2. Controller:具体处理请求的控制器 (想当Struts2的Action)

3. handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略

4. ModelAndView:服务层返回的数据和视图层的封装类

5. ViewResolver  & View:视图解析器,解析具体的视图

6. Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作,可以做权限拦截

注:加粗要自己创建的,黑色的是springmvc提供的;

mvc模式



springmvc组件流程


spring-mvc的第一个例子

(使用配置文件,了解即可,现在主要都是使用注解方式开发)

1. 创建一个web工程 springmvc-1

2. 导入依赖包

3.创建springmvc的配置文件

 配置中央控制器 在web.xml下
  <!-- springmvc的中央控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>

创建springmvc的核心配置文件 

默认位置:WEB-INF下

文件的命名规则:中央控制器(servlet的名称)的名称+“-servlet.xml” :springmvc-servlet.xml


4. 创建controller:TestController继承AbstractController 在cn.edu.hqu.springmvc包下
package cn.edu.hqu.springmvc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class TestController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		System.out.println("hello springmvc");
		return new ModelAndView("jsp/index");
	}

}

配置:controller和视图 springmvc-servlet.xml 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
	<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->

	<!-- 使用默认的映射处理器来映射controller -->
	<bean id="testController" name="/hello.do" class="cn.edu.hqu.springmvc.TestController"></bean>
	<!--视图解析器 前缀+ viewName +后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- webroot到某一指定的文件夹的路径 -->
		<property name="prefix" value="/WEB-INF/"></property>
		<!-- 视图名称的后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>



新建index.jsp 在/WEB-INF/jsp/下





部署到tomcat启动,访问:http://localhost:8080/springmvc-1/hello.do
跳转到index.jsp ,控制台输出:hello springmvc

.三种handlerMapping

1.
BeanNameUrlHandlerMapping  (默认)


如果有配置下面两种那么就要配置默认的,不然hello.do就不能访问,这个有点像我们JAVASE学的的构造器;如果添加一个构造器那么就要把默认无参构造写上

按着controller的name来映射寻找controller,默认存在
		<!-- 映射处理器之间是独立的,不相互影响 -->
		<!-- 默认的映射处理器 -->
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

2.SimpleUrlHandlerMapping

		<!-- 简单url的映射处理器 -->
		<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
			<property name="mappings">
				<props>
					<prop key="/hello1.do">testController</prop>
				</props>
			</property>
		</bean>

重启tomcat,访问:http://localhost:8080/springmvc-1/hello1.do

成功;

3.ControllerClassNameHandlerMapping 

根据类名来访问,

<!-- 控制类的类名控制器,访问时类名首字母需要小写 -->

<!-- 控制器的类名映射处理器 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

重启tomcat,访问:http://localhost:8080/springmvc-1/testController.do

成功;

jar包下载:http://pan.baidu.com/s/1i3wuAdJ

项目:http://pan.baidu.com/s/1kTqkU27

springmvc的介绍和第一个例子的更多相关文章

  1. Spring MVC介绍和第一个例子

    1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一个设计理念.它不仅存在java世界中而且广泛在于各类语言和开发中,包括web的前端应用.对 ...

  2. spring boot入门 -- 介绍和第一个例子

    "越来越多的企业选择使用spring boot 开发系统,spring boot牛在什么地方?难不难学?心动不如行动,让我们一起开始学习吧!" 使用Spring boot ,可以轻 ...

  3. springmvc复习笔记----springmvc最简单的第一个例子:RequestMapping试水

    结构 用到的包 web.xml <url-pattern>/</url-pattern>中可以换成其他的后缀*.do ,*. sb  …… <?xml version=& ...

  4. OpenLayers介绍和第一个例子(转载)

    什么是OpenLayers? 作者:田念明出处:http://www.cnblogs.com/nianming/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位 ...

  5. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  6. SpringMVC Controller介绍

    SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理 ...

  7. SpringMVC Controller介绍(转)

    SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理 ...

  8. ElasticSearch 5学习(5)——第一个例子(很实用)

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

  9. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

随机推荐

  1. Log4j1.2配置详解

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等. 同时,在各大框架中也主要是使用log4j来进行日志的输出. 下面是log4j1.x版本的详细 ...

  2. [Luogu 3690]【模板】Link Cut Tree (动态树)

    Description 给定N个点以及每个点的权值,要你处理接下来的M个操作.操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. ...

  3. ●BZOJ 3545 [ONTAK2010]Peaks(离线)

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3545 http://www.lydsy.com/JudgeOnline/problem.ph ...

  4. 【Miller-Rabin随机判素数算法】

    实用性介绍: #include<bits/stdc++.h> #define go(i,a,b) for(int i=a;i<=b;i++) #define T 5 #define ...

  5. NFC Spy:基于Android 4.4及以上手机的非接智能卡跟踪仪

    NFC Spy 用来查看读卡器和智能卡之间的指令.数据的交互传输过程,以便 NFC/HCE 开发者分析研究底层通讯协议,定位错误指令. 本程序要使用两部带有 NFC 硬件的 Android 手机,并且 ...

  6. Linux之软链接与硬链接

    什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件. 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS ...

  7. LAN、WAN、WLAN、WiFi之间的区别

    感觉这几个概念让人傻傻分不清,下面以最常见的路由器来解释这几个概念. LAN   1 LAN,全称Local Area Network,中文名叫做局域网. 顾名思义,LAN是指在某一区域内由多台计算机 ...

  8. BI之SSIS入门最新版Visual Studio调试技巧

    简介 最近公司业务需要用到BI SSIS,SSIS是什么?"SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案( ...

  9. 详解linux进程间通信-管道 popen函数 dup2函数

    前言:进程之间交换信息的唯一方法是经由f o r k或e x e c传送打开文件,或通过文件系统.本章将说明进程之间相互通信的其他技术-I P C(InterProcess Communication ...

  10. 分布式锁的几种使用方式(redis、zookeeper、数据库)

    Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 synchronized lock db lock Q:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当 ...