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. 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目

    迁移Net项目为Net Core\Standard项目 背景: 我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上.对于 ...

  2. spring data学习

    在Spring Data模块中定义依赖: <dependencies> <dependency> <groupId>org.springframework.data ...

  3. [Codeforces 946D]Timetable

    Description 题库链接 给你一个 \(N\times M\) 的 \(01\) 矩阵,你可以从中将一些 \(1\) 变为 \(0\) ,最多 \(K\) 次.使操作之后使得每行最远的 \(1 ...

  4. [POJ 3728]The merchant

    Description There are N cities in a country, and there is one and only one simple path between each ...

  5. codeforces 815C Karen and Supermarket

    On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a ...

  6. ●hihocoder #1394 网络流四·最小路径覆盖

    题链: http://hihocoder.com/problemset/problem/1394 题解: 有向图最小路径覆盖:最少的路径条数不重不漏的覆盖所有点. 注意到在任意一个最小路径覆盖的方案下 ...

  7. php+xdebug远程调试(单人)

    目录 服务器上安装 XDebug 及配置 客户端 PHPstorm 配置 浏览器安装插件 服务器上安装 XDebug 及配置 XDebug 安装 略 配置: 打开 php.ini 配置文件: vim ...

  8. javascript引擎任务运行顺序

  9. Dapper.Contrib拓展及数据库生成实体

    1.关于Dapper.Contrib Dapper.Contrib是Dapper的一个拓展类库,Dapper是一个轻量级ORM框架,这个不了解的请自行收集资料,本文主要讲讲,数据库生成实体,并通过实体 ...

  10. java 获得当前时间前指定几个小时的时间?

    //@2016-12-13 获取当前时间,指定前面多少小时的时间 //返回格式YYYYMMDDHHMMSS public static String getBeforeHourTime(int iho ...