什么是Spring的MVC框架?
Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
MVC设计模式
例如:
数据访问接口:DAO层。 处理业务Service层。 数据实体:POJO 负责前端请求的接受并处理:Servlet 赋值前端页面展示:JSP
这种结构模式就是MVC设计模式,它是软件工程中的一种软件架构模式。它强制性的使软件系统的输入、处理和输出分开、把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)
JSP Mondel1
当业务流程简单的时候,可以把控制器的功能交给视图实现,这种模式称为JsPMondel1 如下图:
相比于JSP Mondel1,当业务流程复杂的时候就需要把业务流程控制交给控制器来实现,jsp专注与视图的展示即可 如下图:
MVC处理过程
如图所示:
通过上图我们可以得知MVC处理过程:
(1)搜先视图提供系统与用户交互的界面,并发送用户输入给控制器
(2)控制器接受用户的请求,并决定应该调用那个魔心来进行处理
(3)模型根据用户请求进行相应的雨雾逻辑处理,并返回处理结果
(4)控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果
MVC 优点
多视图共享一个模型,大大提高代码的可重用性
MVC三个模块相互独立,松耦合架构
控制器提高了应用程序的灵活性和可配置性
有利于软件工程化管理
MVC 缺点
原理复杂
增加了系统结构和实现的复杂性
视图对模型数据的低效率访问
Spring MVC 架构
Spring MVC框架搭建步骤
(1)下载jar文件并导入工程
spring-web-3.2.13.RELEASE.jar
spring-webmvc-3.2.13.RELEASE.jar
2.配置文件
在web.xml中配置Servlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!--配置Spring MVC的核心控制器DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!--初始化参数--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
3.创建Spring MVC的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="cn.smbms.controller"/> <mvc:annotation-driven/> <!--完成视图的对应--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
4.创建Controller-处理请求的控制器
package cn.smbms.controller; import cn.smbms.pojo.User; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; public class IndexController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { System.out.println("hello,SpringMVC"); //在控制台输出日志信息 return new ModelAndView("index"); }
5.创建View-JSP(此处使用jsp作为视图了)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>hello,SpringMVC!</h1>
</body>
</html>
部署运行
查看后台日志:控制台也输出了hello,Spring MVC
补存知识:
基于注解的处理器
@Controller:标注一个普通的JavaBean成为可以处理请求的控制器
@RequestMapping:通过请求URL进行映射
一键式配置,通过注解的方式进行Spring MVC开发
DefaultAnnotationHandlerMapping
AnnotationMethodHandlerAdapter
Spring MVC 请求过程
DispatcherServlet(前端控制器)
Spring MVC最核心的类
web.xml中配置
Handler(处理器):对应MVC中C(Controller层)
类型:Object
作用:实际处理请求
标注了@RequestMapping的所有方法都可以看作是一个Handler
ModelAndView
逻辑视图名
模型对象
核心组件
HandlerMapping(处理器映射)
BeanNameUrlHandlerMapping(默认)
将请求URL映射到同名的控制器Bean上
DefaultAnnotationHandlerMapping
将请求映射到标注@RequestMapping注解的控制器和处理方法上
RequestMappingHandlerMapping
HandlerAdapter(适配器)
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
ViewResolver(视图解析器)
InternalResourceView
总结: