SpringMvc第一天
1.SpringMvc的简介
2.SpringMVC的核心组件
3.SpringMvc的运行原理
4.Spring的入门案例(重点)
5.案例的注解解析
6.入门案例的工作流程原理(理解)
一,SpringMVC的概述
1.SpringMvc的简介
SpringMVC是Spring Framework提供的一个web组件,全程Spring Web Mvc,是目前主流的实现mvc的设计模式的框架,为前端提供了映射,视图解析等功能。
MVC实际上是一种软件架构思想,把软件按照模型,视图,控制器来划分。
View:视图层,指工程中的HTML,jsp等页面,作用是和用户进行交互,展示数据。
Controller:控制层,指工程中的servlet,作用是请求和响应我们的浏览器调用业务逻辑。
Model:模型层,指的是工程中的JavaBean,进行数据交互,处理数据。
2.SpringMvc的核心组件
**DispatcherServlet:**前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性。
**Handler:**处理器,完成具体的业务逻辑,相当于servlet、
**HandlerMapping:**DispatcherServlet通过HandlerMapping把请求映射到不同的Handler。
**HandlerInterceptor:**处理器拦截器,如果需要进行一些拦截,可以通过该接口实现。
**HandlerAdapter:**处理器的适配器,Handler执行业务方法之前学院进行一系列的操作通过HandlerAdapter完成。
**HandlerExecutionChain:**处理器执行链。
**ModelAndView:**封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet。
**VIewResolver:**视图解析器,DispatcherServlet通过它吧逻辑视图解析为物理视图,最终渲染结果响应给我们的客户端。
3.SpringMVC的运行原理
二,SpringMVC的入门案例(重点)
1.实现步骤
1.创建一个Maven工程。
2.设置一下tomcat服务器,加载web工程
3.导入依赖坐标
4.编写Spring配置类和SpringMvc配置类
5.加载SpringMVC配置类,并且设置SpringMVC的拦截路径
6.定义处理请求的功能类controller。
2.代码实现
2.1创建Maven工程
2.1设置一下tomcat服务器,加载web工程
<!--加载tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--端口号-->
<port>8080</port>
<!--项目路径-->
<path>/ssm</path>
</configuration>
</plugin>
</plugins>
</build>
2.3导入依赖坐标
springmvc+servlet
<!--打包方式-->
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--集成依赖-->
<dependencies>
<!--servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--SpringMVc依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
2.4编写Spring配置类和SpringMvc配置类
Spring配置类
package com.itxy.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
@Controller
@ComponentScan("com.itxy")
public class SpringConfig {
}
SpringMvc配置类
package com.itxy.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
@Component
@ComponentScan("com.itxy.controller")
public class SpringMvcConfig {
}
2.5加载SpringMVC配置类,并且设置SpringMVC的拦截路径
package com.itxy.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
/*配置SpringMVC的核心容器配置类*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
/*只参与映射的bean资源 Springmvc的配置类*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
/*路径映射拦截 所以的路径都在mvc容器中进行匹配*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
2.6定义处理请求的功能类controller
package com.itxy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//被Spring容器扫描
@Controller
public class UserController {
/*映射注解*/
/*映射到/hello*/
@RequestMapping("/hello")
@ResponseBody
public String hello(){
System.out.println("今天同学们在认真学习");
return "hello springMvc!";
}
@RequestMapping("/hello2")
@ResponseBody
public String hello2(){
System.out.println("今天同学们在认真听课");
return "hello springMvc666!";
}
}
3.运行测试
三,案例注解解析
3.1@Controller注解
名称:@Controller
类型:类注解
位置:SpringMVC控制器类定义上方
作用:设定SpringMvc的核心控制器bean
示范:
@Controller
public class UserController {
}
3.2@RequestMapping注解
名称:@RequestMapping
类型:方法注解(类注解)
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径
示范:
@RequestMapping("/hello")
public String hello(){
System.out.println("今天同学们在认真学习");
}
3.3@RequestBody注解
名称:@RequestBody
类型:方法注解(类注解)
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法响应内容为当前返回值,无需解析
示范:
@RequestMapping("/hello")
@ResponseBody
public String hello(){
System.out.println("今天同学们在认真学习");
return "hello springMvc!";
}
四,入门案例的工作流程分析(理解)
1.启动服务器,执行配置类,初始化web容器
2.执行方法,创建web对象
3.加载配置类
4.执行对应的bean
5.加载controller,每个名称对应一个方法
无需解析
示范:
@RequestMapping("/hello")
@ResponseBody
public String hello(){
System.out.println("今天同学们在认真学习");
return "hello springMvc!";
}
四,入门案例的工作流程分析(理解)
1.启动服务器,执行配置类,初始化web容器
2.执行方法,创建web对象
3.加载配置类
4.执行对应的bean
5.加载controller,每个名称对应一个方法
6.执行方法,定义所有请求都通过SpringMvc