SpringMVC初识

什么是MVC

将软件按照模型、视图、控制器来划分

  • M:Model,模型层,指工程中的JavaBean,作用是处理数据
    • 实体类Bean:专门用于存储业务的,比如Student、User等
    • 业务处理Bean:Service或者DAO等等
  • View:视图层,指工程中的htnml或者jsp等页面,作用是与用户进行交互
  • Controller,控制层,指工程中的Servlet,作用是接受请求与响应浏览器

什么是SpringMVC

SpringMVC是为Spring为表述层开发提供的一套完备的解决方案,三层架构分别为表述层(),业务逻辑层、数据访问层、表层表示前台页面和后台Servlet

表现层:SpringMVC
业务层:Spring
持久层:Mybatis

表现层一般与浏览器也就是我们的客户端进行数据的交互。浏览器会给我们发出一个http请求,请求会经过我们的表现层,浏览器会给我们传递一些请求的参数,表现层可以获取到我们请求的参数。获取到之后可以调用我们的业务层,业务层会调用我们的持久层,然后结果再返回,结果返回到表现层,最后把结果响应给我们的用户。

特点

基于原生Servlet,通过强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

HelloWorld

创建Maven工程

导入相关的依赖包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<dependencies>
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.18</version>
</dependency>

<!-- 日志 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>

<!-- ServletAPI -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

<!-- Spring5和Thymeleaf整合包 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.15.RELEASE</version>
</dependency>
</dependencies>

配置web.xml

对前端的发送的请求进行响应的配置

默认配置方式

位置默认,早web-inf下,名称默认

注意在这个过程中url-patteren中/不会对jsp产生响应,应为jsp本质是一个servlet,但是/*会对jsp的请求产生响应

1
2
3
4
5
6
7
8
9
<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>/</url-pattern>
</servlet-mapping>

扩展配置方式

但是在maven工程下,我们需要将配置文件否存放到resourse文件下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--接受所有的路径,转发给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.xml</param-value>
</init-param>
<!--我们文件配置的初始化如果在第一次访问页面的时候进行初始化,会影响我们访问页面的速度,所以我们将dispatcherservlet
的初始化时间提前到到服务器启动时-->
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

创建请求控制器

1
2
3
4
@Controller
public class HelloController {

}

注解

1
2
3
4
@Component---普通组件
@Controller---控制层组件
@Service---业务层组件
@Repository---持久层组件

创建配置文件

1
2
<!--扫描组件-->
<context:component-scan base-package="com.zss.mvc.controller"></context:component-scan>

测试HelloWorld

访问此页面

1
2
3
4
5
6
7
8
@Controller
public class HelloController {
//@RequestMapping( "/")表示此方法会对其进行响应
@RequestMapping( "/")
public String index(){
return "index";
}
}

转入到另外一个页面

1
2
3
4
5
6
//接受target的请求
@RequestMapping("/target")
public String toTarget(){
//返回target页面
return "target";
}