1.创建Maven模块
1.1 新建一个父模块
1.2修改一下JDK版本这里选择JDK21
1.3 父模块中建立一个子模块,接下来的操作将在子模块中进行
2.添加web支持
2.1设置本地Maven仓库(非必须)
2.2 在springmvc-001的pom.xml文件中修改打包方式为war
同时添加web所需要的依赖,由于Servlet依赖Tomcat会提供所以scope为provided
<!--修改打包方式--><packaging>war</packaging><!--添加依赖--><dependencies><!-- Spring MVC依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.4</version></dependency><!--日志框架Logback依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.3</version></dependency><!--Servlet依赖--><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><scope>provided</scope></dependency><!--Spring6和Thymeleaf整合依赖--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring6</artifactId><version>3.1.2.RELEASE</version></dependency></dependencies>
2.3 在src\main 文件夹下创建一个webapp文件夹,作为Web资源目录(Web Resource Directory)。可以看到webapp文件夹,中间小点亮起,即为创建成功。
2.4 假设webapp中间小点没有亮起,那么需要在Project Structure
的Module
中设置,配置web.xml文件也在该位置。
3.配置web.xml文件
3.1 创建web.xml文件。文件位置应该是在webapp\WEB-INF
下。
3.2 配置web.xml文件。由于SpringMVC架构中是靠DispatcherServlet
对请求进行统一处理,所以需要配置DispatcherServlet
。<url-pattern>
中的 /
表示当请求不是xx.jsp的时候,DispatcherServlet来负责处理本次请求。
<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>
4.编写控制器
4.1 DispatcherServlet接收到请求之后,会根据请求路径分发到对应的Controller,Controller来负责处理请求的核心业务。Controller类只是一个普通的java类但是需要由IOC接管,所以需要添加注解。
5.配置springmvc-servlet.xml文件
5.1 创建SpringMVC的配置文件,SpringMVC框架有它自己的配置文件,该配置文件的名字默认为:<servlet-name>-servlet.xml
,默认存放的位置是WEB-INF 目录下
5.2在springmvc-servlet.xml文件中配置组件扫描。spring扫描这个包中的类,将这个包中的类实例化并纳入IoC容器的管理。
5.3 配置thymeleaf视图解析器
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver"><!--作用于视图渲染的过程中,可以设置视图渲染后输出时采用的编码字符集--><property name="characterEncoding" value="UTF-8"/><!--如果配置多个视图解析器,它来决定优先使用哪个视图解析器,它的值越小优先级越高--><property name="order" value="1"/><!--当 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/"/><!--设置模板文件后缀(后缀),Thymeleaf文件扩展名不一定是html,也可以是其他,例如txt,大部分都是html--><property name="suffix" value=".html"/><!--设置模板类型,例如:HTML,TEXT,JAVASCRIPT,CSS等--><property name="templateMode" value="HTML"/><!--用于模板文件在读取和解析过程中采用的编码字符集--><property name="characterEncoding" value="UTF-8"/></bean></property></bean></property></bean>
6.提供视图
6.1 根据视图解析器中的前缀路径在WEB-INF
目录下创建 templates
文件夹,以后的视图都放在这个文件下。
6.2 在templates
创建index.html,用于测试
7.编写处理请求,返回逻辑名称
7.1控制器FirstController处理请求返回逻辑视图名称。实际上 前缀+逻辑名称+后缀为最终地址
8.测试
8.1配置tomcat