一.SpringMVC简介
Model数据模型
View视图
Controller控制器
MVC是一种web应用架构,是一种代码设计思想
思想:将所有客户端请求全部交由控制器,由控制器将其分发并将结果响应给客户端
2.常见MVC框架
使用原生Servlet实现MVC,
*配置比较复杂
*数据处理太麻烦
实际开发中一般都会使用MVC框架,如Struts1,struts2,SpringMVC等
对比:
*效率方面:Struts1>SpringMVC>Struts2
struts2是多例的,效率低
Struts1和SpringMVC是单例的,两者效率基本差不多
*配置方面:SpringMVC>Struts2>Struts1
3为什么要使用SpringMVC
*使用注解配置替代xml配置,更简单
*效率高,单例的
*跨站好,用户自定义
*SpringMVC和Spring无缝衔接
二SpringMVC工作原理
1.流程图
2.执行过程
分为六步:
*DispatcherServlet
它是SpringMVC核心控制器,前端控制器,主要作用是用来分发
*HandleMapping
叫做映射处理器,根据请求url映射到具体的处理Handler
Handler就是Controller层的实现类,也称为Action或Controller
*HandlerAdapter
适配器,用来适配不同的处理器Handler
处理器有两种实现方式:实现接口,基于注解,所以执行之前需要先适配
*Handler
处理器:执行处理具体业务,并产出数据模型Model和视图View
Handler会将数据模型Model和视图View封装ModelAndView对象并返回
*ViewResolve
视图解析器:根据视图名解析为具体的视图,一般多为jsp页面,然后封装为View对象
*View
视图:使用具体的视图技术进行渲染,结合Model展示数据
视图有很多种形式:jsp,freemarker,velocity,excel,pdf等
三.第一个SpringMVC程序
1.添加jar包
springMVC包:1个,spring-webmvc
Ioc包:4个,sprng-core,spring-beans,spring-context,spring-expression
aop包 :3个,spring-aop,sping-aspects
javaee包:3个,jsp-api,jstl,javax.servlet-api
web包:spring-web
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yyp</groupId> <artifactId>springMVC</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>springMVC Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 整合spring-web包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.21</version> </dependency> <!-- 整合springmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> </dependency> <!--整合spring-ioc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>5.3.20</version> </dependency> <!-- spring-aop的包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.19</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.3.20</version> </dependency> <!-- 整合spring-web包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.21</version> </dependency> <!-- 整合java EE的包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>springMVC</finalName> </build> </project>
2配置过程(总共6个步骤):
1.配置DispatcherServlet核心控制器(在web.xml中配置)
2.Handler核心配置文件
两种定义方式:
*使用默认位置;默认在WEB-INF目录下,名称:核心servlet名称-servlet.xml
*自定义位置:名称自定义
根据Controller实现方式的不同,配置方式也有所不同,有两种方式定义Controller
*实现接口
*基于注解
在spring的配置文件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:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 2.配置HandlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 3配置HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 4配置Handler --> <bean name="/hello" class="com.yyp.controller.HelloController"/> <!-- 5配置ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp"/> <!-- 6配置View,使用jsp视图技术渲染页面 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> </bean> </beans>
把tomcat插件加入到pom中,并配置在pom.xml中启动
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> <port>8080</port> </configuration> </plugin> </plugins> <finalName>springMVC</finalName> </build>