快速入门
- 创建一个 javaweb 项目
- 引入 spring-webmvc,servlet,logback,thymeeleaf 的相关依赖
- 在 web.xml 文件中配置 springmvc 的前端控制器
- 在 WEB-INF 目录下创建 springmvc-servlet.xml 配置文件,并配置组件扫描和视图解析器
- 在视图解析器所配置的目录下创建视图模板
- 编写控制器controller,指定访问某个路径后返回的逻辑视图名称
- 部署到 tomcat 并执行
较为完整的配置
- pom.xml
- servlet
- 记得加上
<scope>provided</scope>
- 用以指定依赖范围
- 记得加上
- servlet
- web.xml
- 字符编码过滤器(CharacterEncodingFilter)
- 初始化参数
- encoding:UTF-8
- forceRequestEncoding:true
- forceResponseEncoding:true
- springmvc控制器(DispatcherServlet)
- 字符编码过滤器(CharacterEncodingFilter)
- springmvc-servlet.xml
- 包扫描路径(context:component-scan)
- thymeleaf视图解析器
- 开启注解支持(mvc:annotation-driven)
- 视图控制器(mvc:view-controller path=“/” view-name=“index”)
- 可以省略编写初始页面的处理器方法
- 静态资源处理(mvc:default-servlet-handler)
/pom.xml 配置文件
<dependencies>
<!-- 引入springmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.4</version>
</dependency>
<!-- 引入servlet,此处使用tomcat10引用的是jakarta -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<!-- 指定依赖范围,provided表示该依赖由第三方容器提供 -->
<scope>provided</scope>
</dependency>
<!-- 引入日志 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.3</version>
</dependency>
<!-- 引如thymeleaf模板 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring6</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
</dependencies>
WEB-INF/web.xml配置文件
<!--配置前端控制器,用于控制所有请求分发-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
/ 表示:除jsp结尾的请求路径之外所有路径
/* 表示:所有请求路径
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
WEB-INF/springmvc-servlet.xml配置文件
若未进行springmvc配置文件名称指定,则必须使用上述文件名
<!-- 组件扫描 -->
<contest:component-scan base-package="com.atli.controller"></contest:component-scan>
<!-- 配置视图解析器 -->
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
<!--作用与视图渲染的过程中,可以设置视图渲染后输出时采用的编码字符集-->
<property name="characterEncoding" value="UTF-8"></property>
<!--如果配置多个视图解析器,它来决定优先使用那个视图解析器,值越小优先级越高-->
<property name="order" value="1"></property>
<!--当ThymeleafViewResolver渲染模板是,会使用该模板引擎来解析,编译和渲染模板-->
<property name="templateEngine">
<bean class="org.thymeleaf.spring6.SpringTemplateEngine">
<!--用于指定Thymeleaf 模板引擎使用的模板解析器。模板解析器负责根据模板位置、目标资源名称,文件编码等信息,加载模板并对其进行解析-->
<property name="templateResolver">
<bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
<!--设置模板文件的位置(前缀)-->
<property name="prefix" value="/WEB-INF/templates/"></property>
<!--设置模板文件后缀,thymeleaf文件扩展名不一定是html,也可以是其他,如txt-->
<property name="suffix" value=".html"></property>
<!--设置模板引擎类型,列如HTML,TEXT,JAVASCRIPT,CSS等-->
<property name="templateMode" value="HTML"></property>
<!--用于模板文件在读取和解析过程中采用的编码字符集-->
<property name="characterEncoding" value="UTF-8"></property>
</bean>
</property>
</bean>
</property>
</bean>
<!-- 提供@RequestBody等注解支持,若不添加会出现406错误 -->
<mvc:annotation-driven/>
模板视图:WEB-INF/templates/mytemplate.html
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>First Spring MVC</title>
</head>
<body>
<h1>First Spring MVC </h1>
</body>
</html>
控制层:MyController.java
@Controller
public class MyController {
// 请求映射
@RequestMapping("/hello")
public String hello(Model model){
// 返回一个逻辑视图名称
return "mytemplate";
}
}