SpringMVC第一节

一、springMVC作为spring的一部分,继承了spring轻量级,高度可配置性,良好的拓展性和兼容性等特征,使其成为企业的新选择。SpringMVC 的功能:

1:Controller 为中心完成对系统流程的控制管理

2:从请求中搜集数据

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

4:将结果返回给视图

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

6:针对 jsp 视图提供标签库

7:拦截器

8:上传文件

二、SpringMVC 的核心组件

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

2:Controller:具体处理请求的控制器

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

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

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

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

三、SpringMVC 的工作流程

1、客户端请求提交到DispatcherServlet
2、DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller
3、DispatcherServlet将请求提交到Controller
4、Controller调用业务逻辑处理后,返回ModelAndView
5、DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图
6、视图负责将结果显示到客户端

较详细:

1、当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request)。
当请求离开浏览器时,它会携带用户请求的信息(比如说请求的URL信息,用户名,密码什么的)。       
2、请求的第一站到达的是Spring的DispatcherServlet,
它是一个前端控制器,工作是将用户的请求委托给其他的组件(这里是交给Spring MVC的控制器)去处理。
这里DispatcherServlet要决定将请求传给哪一个控制器(Controller)去处理,那么这时就需要处理器映射(Handler Mapping)了。
处理器映射会看请求的URL信息,然后决定将请求交给哪一个控制器去处理。比如说有两个控制器ControllerA和ControllerB,
分别处理后缀名为.html和.jsp送来的请求,那么当请求者的后缀名为.html时,那么DispatcherServlet就将请求交给ControllerA进行处理。
3、当选择了一个合适的控制器后,DispatcherServlet就会将请求交给这个控制器去处理。在这个控制器上,
用户的请求将会将用户提交的一些信息交由控制器处理并等待。
然而设计的比较好的控制器本身对信息做很少的处理或者根本不做处理,
而是将业务逻辑交给一个或多个服务器对象(Model)去处理。
4、当控制器对用户请求所携带的信息进行处理(或交给模型层处理)后,
经常会产生一些其他的需要返回给浏览器进行显示的数据。
这些原始数据直接显示出来显然是不友好的,那么就需要视图(View)来对这些数据进行显示了。
控制器的最后一件事就是将模型数据打包,
并且指定产生输出的视图的特定名称,然后它将模型、视图名称以及request请求一起发送给DispatcherServlet。
所以控制器并没有与视图进行耦合,因为传递给DispatcherServlet的视图名称并不是某一个指定的特殊的文件名称(如后缀名一定是JSP或其他什么名称),
它只要是一个可以产生输出和展示结果的逻辑名称就可以了。
5、DispatcherServlet会向一个视图解析器(ViewResolver)进行请求,视图解析器可以将逻辑视图名称映射到一个特定的视图显示文件上面。
6、现在DispatcherServlet知道哪一个视图文件可以显示结果了。该视图将会利用模板数据产生输出,这些输出通过response对象返回给客户端进行显示。

四、实例

1、导入 jar 包 (在 spring 官网下载 Spring 框架就会包含有 Spring MVC jar 包),如下图所示:

2、创建 web.xml 文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		           http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<!-- 中央控制器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- struts习惯使用/*,在springmvc不管用,访问路径以 .do 结尾 -->
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

3、创建 springmvc-servlet.xml 文件,说明:该文件名 - 符号的前面部分要和 web.xml 文件中 servlet-name 属性值一致 ,代码如下:

<?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 -->

		<!-- 默认的映射处理器(所有的映射处理器不写的情况下,默认为这个) -->
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

		<!-- 使用默认的映射处理器来映射controller -->
		<bean id="testController" name="/hello.do" class="com.learn.springmvc.TestController"></bean>

		<!-- 前缀+ viewName +后缀 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到某一指定的文件夹的路径 -->
			<property name="prefix" value="/WEB-INF/jsp/"></property>
			<!-- 视图名称的后缀 -->
			<property name="suffix" value=".jsp"></property>
		</bean>
</beans>

以上使用的是默认的处理器,可以不写。

4、创建 java 类,代码如下:

package com.learn.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");

		//构造器里面的字符串是目录和 jsp文件名组成的字符串,具体情况具体编写
		return new ModelAndView("jsp1/index");
	}

}

5、测试:

http://localhost:8080/learnSpringMVC1/hello.do

6、其他的映射处理器

<1>、简单url的映射处理器

<?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 -->

		<!-- 映射处理器之间是独立的,不相互影响 -->

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

		<bean id="testController" name="/hello.do" class="com.learn.springmvc.LearnController"></bean>

		<!-- 前缀+ viewName +后缀 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到某一指定的文件夹的路径 -->
			<property name="prefix" value="/WEB-INF/jsp/"></property>
			<!-- 视图名称的后缀 -->
			<property name="suffix" value=".jsp"></property>
		</bean>
</beans>

测试:http://localhost:8080/learnSpringMVC1/hello1.do

<2>、控制器的类名映射处理器

<?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 -->

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

		<bean id="testController" name="/hello.do" class="com.learn.springmvc.TestController"></bean>

		<!-- 前缀+ viewName +后缀 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到某一指定的文件夹的路径 -->
			<property name="prefix" value="/WEB-INF/jsp/"></property>
			<!-- 视图名称的后缀 -->
			<property name="suffix" value=".jsp"></property>
		</bean>
</beans>

测试:http://localhost:8080/learnSpringMVC1/testController.do  or http://localhost:8080/learnSpringMVC1/test.do  都可以,首先字母一定要小写

说明:

工程结构:

xml 文件中属性值的说明:

参考:http://elf8848.iteye.com/blog/875830/

SpringMVC第一节

时间: 2024-10-15 03:29:18

SpringMVC第一节的相关文章

第一节 准备工作

第一节 ssm框架的学习准备工作 观看视频 链接:https://pan.baidu.com/s/1FnWsukDeepfsB2QE1k3oIg 提取码:ckxd 1 下载并安装Typora软件 下载路径 链接:https://pan.baidu.com/s/1H7ZS0HhkS0hLry5qmTsotg 提取码:1nz9 目的 :该软件用于打开md格式的文件 安装过程 示范 标题1 标题2 标题3 写程序代码 ``` 然后按回车 <html> <head> <title&g

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

第一节课作业

1 C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富.表达能力强.使用灵活方便.既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件.其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl...都是衍生自C语言.掌握了C语言,可以说你就掌握了很多门语言. 学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不

第一节,C语言入门

1.标示符:    命名规则:    1.只能由字母.数字.下划线组成    2.不能数字开头    3.不能与关键字重名    4.严格区分大小写    命名规范:     1.起一个有意义名字     2.驼峰标示2.注释 注释: 对代码的解释说明,是写给程序看的,方面程序员之间交流 特点: 注释是不参与编译 /* 这里面可以写 */ 多行注释 // 这是一个单行注释 只有这一行是注释,只有 两个斜杠后面才是注释内容 /* */ command + / 注释或取消注释 多行注释是可以嵌套单行

MFC第一节-windows程序内部运行机制

一.窗口 设计窗口类时: 1 typedef struct _WNDCLASS{ 2 UINT style; //如水平.垂直变化是否重绘,禁用Close,检测双击 3 WNDPROC lpfnWndProc;//窗口过程函数句柄 4 int cbClsExtra;//类附加内存 5 int cbWndExtra;//窗口附加内存 6 HANDLE hInstance;//实例句柄 7 HANDLE hIcon;//图标 8 HCURSOR hCursor;//光标 9 HBRUSH hbrBa

linux基础知识第一节

用户接口: 是一种独特的应用程序,能够为用户提供启动其它应用程序的的机制 cli:命令提示符,用户输入要执行的命令即可, shell: 外壳 sh ,csh ,ksh ,   bash, zsh , tcsh gui: 通过点击操作来启动应用程序 gnome,  mainframe  大型机 多用户操作系统    多终端   终端:设备,显示器,鼠标,键盘 虚拟终端 表示:/dev/tty# ctrl-alt-f(1-6) 物理终端(控制终端)console 串行终端 伪终端 /dev/pts#

VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)

第一节  vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便,如果是jQuery还要获取值,设定十分繁琐 2.灵活-渐进式 ①渲染字段:②公共头部和公共尾部做成组件:③单页面会用到:④管理组件状态,vuex⑤使用构建工具完结项目 3.高效 ①16kb min+gzip的运行大小:②超快虚拟DOM:③最省心的优化 vue基础指令介绍: 1.指令的使用: v-m

photoshop第一节:认识ps

Photoshop 第一节: 1. 认识ps: (讲ps前说说我们所见过的图片)电脑呈现的图像类型分为两大类: 一类称为点阵图(当我们放大图片会看到像马赛克模糊的阵容,而那些方块叫像素点,每个像素点表示一种颜色.由方块像素点组成的阵列图片,我们叫它点阵图,比如我们上网百度的图片,壁纸,或手机拍出来的照片等等). 一类称为矢量图(放大不会模糊,因为它并不是由像素点组成.而是通过数学公式计算它的.一般要支持的矢量图格式的软件才能打开,比如插画师用adobe公司的AI软件作插画,). 而Photosh