![](https://cdn.jsdelivr.net/gh/ml20001005/imgs//data/20210505163240.jpg)
SpringMVC基本使用
1.导入相关jar包
<dependencies>
<!--单元测试-->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--springmvc-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.5</version>
</dependency>
</dependencies>
2.编写web.xml, 注册DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--绑定spring配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</init-param>
<!--启动级别-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
/ 与 /* 的区别 :
/
: 匹配所有请求, 但不会匹配jsp请求, 当有jsp请求时, 会直接返回jsp页面
/*
: 匹配所有请求, 会匹配jsp请求, 当有jsp请求时, 按普通请求处理, 再次添加jsp后缀
3.编写spring配置文件
<?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:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 自动扫描包, 让指定包下的注解生效, 由IOC容器统一管理-->
<context:component-scan base-package="com.ml.controller"/>
<!-- 让springmvc不处理静态资源, 使用静态资源处理器处理 html js css MP3 MP4 ... ...-->
<mvc:default-servlet-handler/>
<!-- 支持mvc注解驱动
在spring中一般采用@RequestMapping注解来完成映射关系
要使@RequestMapping注解生效
必须向上下文中注册DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter实例
这两个实例分别在类级别和方法级别处理
而annotation-driven配置帮助我们自动完成上述两个实例的注入-->
<mvc:annotation-driven/>
<!-- 资源视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
使用springMVC必须配置的三大件 :
- 处理器映射器 : BeanNameUrlHandlerMapping
- 处理器你适配器 : SimpleControllerHandlerAdapter
- 资源视图解析器 : InternalResourceViewResolver
通常我们只需要手动配置视图解析器, 因为处理器映射器
和处理器适配器
只需要开启注解驱动即可, 而省去了xml配置
4.创建对应控制类
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model){
model.addAttribute("msg","欢迎学习springmvc");
return "hello";
}
}
5.完善前端视图和controller之间的对应
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
</head>
<body>
${msg}
</body>
</html>