2.5.3、打开Modules配置
- 设置java目录为Sources
- 设置test目录为Tests
2.5.4、检查Resources 、Language level
2.6、定义controller层
新增HelloController
package com.xxxx.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/") public String sayHelloWorld(){ return "index"; } @RequestMapping("/login") public String login(){ return "login"; } @RequestMapping("/register") public String register(){ return "register"; } }
2.7、定义视图层
2.7.1、首页index.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1 th:text="欢迎来到首页"></h1> 登录:<a th:href="@{/login}">登录</a> <br> 注册:<a th:href="@{/register}">注册</a> </body> </html>
2.7.2、登录页login.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1 th:text="欢迎来到登录页面"></h1> 首页:<a th:href="@{/}">首页</a> <br> 注册:<a th:href="@{/register}">注册</a> </body> </html>
2.7.3、注册页register.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1 th:text="欢迎来到注册页面"></h1> 登录:<a th:href="@{/login}">登录</a> <br> 首页:<a th:href="@{/}">首页</a> </body> </html>
2.7.4、通过Idea部署项目
2.7.4.1、打包项目
2.7.4.2、配置Tomcat Server(Local)
需要下载Tomcat,此处是8.5版本
2.7.4.3、加载项目
2.7.4.4、启动项目
2.7.4.5、在浏览器访问服务
3、Spring MVC工作流程
SpringMVC 的执行流程如下。
- 用户通过浏览器发起一个 HTTP 请求,该请求会被 DispatcherServlet(前端控制器)拦截;
- DispatcherServlet 调用 HandlerMapping(处理器映射器)找到具体的处理器(Handler)及拦截器,最后以 HandlerExecutionChain 执行链的形式返回给 DispatcherServlet。
- DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
- HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(即 Controller 控制器)对请求进行处理;
- Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC 的底层对象,包括 Model 数据模型和 View 视图信息);
- HandlerAdapter 接收到 ModelAndView 对象后,将其返回给DispatcherServlet ;
- DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
- ViewResolver 解析完成后,会将 View 视图并返回给DispatcherServlet;
- DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
- 视图负责将结果显示到浏览器(客户端)。