# 第十一章:Spring MVC 第一个spring应用 ## 0.创建项目,导包 ```java FirstController 类的包 实现HttpServletResponse HttpServletRequest两个方法 javax.servlet servlet-api 2.5 org.springframework spring-web 4.3.6.RELEASE org.springframework spring-webmvc 4.3.6.RELEASE ``` ### 1.main->webapp->WEB-INF->web.xml文件中配置前端控制器 > DispatcherServlet:就是一个Servlet > > 配置前端控制器就是给DispatcherServlet配置一个访问的url 如何给一个java类配置访问它的url呢? ```java 逻辑名 Java类的全类名(物理名) 逻辑名 url ``` > 补充: > > Java Web中有一个概念:Servlet:是什么?本质就是Java类,但是此类是通过url来访问的 ```java apringmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-config.xml apringmvc / ``` ### 2.创建控制器 FirstController 首先在 java 下创建包 com.gzh.controller ,然后创建 FirstController 类,实现接口选择 Controller 第一个 ![image-20220430213958181](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430213958181.png) ```java public class FirstController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("msg","这是我的第一个Spring MVC程序"); modelAndView.setViewName("/WEB-INF/jsp/first.jsp"); return modelAndView; } } ``` ### 3.创建first.jsp 在 WEB-INF 文件下创建 jsp 文件夹然后在下面创建一个名为 first 的 jsp 文件 然后在 body 标签中创建一个 `${msg}` 在上面的 FirstController 类中 `modelAndView.addObject("msg","这是我的第一个Spring MVC程序");`相对应 ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> Title ${msg} ``` ### 4.在resources下创建springmvc-config.xml ```java ``` ## 5.在 Tomcat 服务器上部署项目 首先将 Tomcat 解压到盘符下,然后在idea中添加 Tomcat (1)首先点击 add Configurations 添加 Tomcat 服务器 (2)点击加号添加服务器 (3)选择 Tomcat 服务区 本地服务(Local 本地 remote 远程服务) ![image-20220430215445248](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430215445248.png) (4)点击配置服务器,选择 Tomcat 服务器的主目录 ![image-20220430215956914](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430215956914.png) (5)点击部署,点击添加服务,选择工件(Artifact) ![image-20220430220220555](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430220220555.png) (6)随便选择一个即可 ![image-20220430220452741](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430220452741.png) (7)最好将 应用程序上下文 改为项目名称 ![image-20220430220832300](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430220832300.png) (8)然后启用服务器就可以了 ![image-20220430221340859](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430221340859.png) ## 6.项目部署 在 `http://localhost:8080/c11/firstController` 链接中能够看到实现的语句 ![image-20220430221617115](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430221617115.png) 项目根目录:`http://localhost:8080/c11/` 在上面中的 `/` 表示 `http://localhost:8080/c11/` `/firstController` 就代表 `http://localhost:8080/c11/firstController` ![image-20220430221939788](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220430221939788.png) (1)用户通过客户端向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。 (2)DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。 (3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 (4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。 (5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。 (6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。 (7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。 (8)DispatcherServlet会根据ModelAndView对象选择-个合适的ViewResolver(视图解析器)。 (9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)。 (10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。 (11)视图渲染结果会返回给客户端浏览器显示。