# 第十二章:Spring MVC 的核心类和注解 ## 1.Spring MVC 配置文件的联众处理方式: --是在 resources 文件夹下创建,此时需要在 web.xml 中通过 元素来加载配置文件 ```java contextConfigLocation classpath:springmvc-config.xml ``` --是在 WEB-INF 下创建 xxx-servlet.xml ,此时不需要在web.xml文件中加载了,也就是删掉 init-param 元素就可以。 ```java ``` xxx是什么? 是 DispatcherServlet 的逻辑名,中的文本。在这是指 springmvc ## 2.实现控制器的两种方式: 1.实现接口,重写handleRequest方法 2.使用注解 @Controlleri 可以将 ]ava 类标注成控制器 使用注解 @RequestMapping 将url 映射到控制器的方法上 ```java @Controller public class SecondController { @RequestMapping("/second") 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; } } ``` 然后在 WEB-INF 下创建 springmvc-servlet.xml 文件 ```java ``` 然后重新部署即可 > 使用注解比实现接口 实现的控制器 先进: > 实现接口的控制器因为只重写了一个方法,所以只能处理一个请求。 > 但是使用注解的控制器中可以定义多个方法,也就是可以处理多个请求。 ## 3.基于注解的 Spring MVC 应用 ### 1.创建项目,导包:spring-web spring-webmvc ```java javax.servlet servlet-api 2.5 org.springframework spring-web 4.3.6.RELEASE org.springframework spring-webmvc 4.3.6.RELEASE ``` ### 2.web.xml中配置前端控制器 ```java springmvc org.springframework.web.servlet.DispatcherServlet springmvc / ``` ### 3.使用注解的方式实现控制器 ```java @Controller public class MyController { @RequestMapping("/a") public String a(){ return "/WEB-INF/jsp/a.jsp"; } @RequestMapping("/b") public String b(){ return "/WEB-INF/jsp/b.jsp"; } @RequestMapping("/c") public String c(){ return "/WEB-INF/jsp/c.jsp"; } } ``` ### 4.创建前端视图 在 webapp -> WEB-INF -> 下创建名为 jsp 的文件夹,在文件夹中创建 jsp 文件,分别创建三个前端视图,a.jsp b.jsp c.jsp ### 5.创建配置文件 在 WEB-INF 文件夹下创建名为 springmvc-servlet 的 xml 文件 ```java 添加扫描注解 ``` ### 6.在tomcat服务器上部署项目 ![image-20220506092448960](https://lsky.hhdxw.top/imghub/img/image-20220506092448960.png) ### 7.成功发布项目 ![image-20220506093333560](https://lsky.hhdxw.top/imghub/img/image-20220506093333560.png) ## 4.定义视图解析器(配置前后缀) ### 1.修改前端控制器 ```java @Controller public class MyController { @RequestMapping("/a") public String a(){ return "a"; } @RequestMapping("/b") public String b(){ return "b"; } @RequestMapping("/c") public String c(){ return "c"; } } ``` ### 2.修改配置文件 springmvc-servlet.xml ```java 在下添加以下代码 ``` ### 3.重新发布项目 ![image-20220506094644157](https://lsky.hhdxw.top/imghub/img/image-20220506094644157.png)