# 使用註解開發SpringMVC ###### tags: `SpringMVC-基礎` ### 1.配置web.xml ![](https://i.imgur.com/9H9rmYm.png) ![](https://i.imgur.com/Mz06yET.png) 完成 ![](https://i.imgur.com/159Eb92.png) ### 2.添加lib目錄 ![](https://i.imgur.com/bexP8Zb.png) 把所有包導入 ![](https://i.imgur.com/VJsWGGI.png) ### 3.在pom.xml添加解決maven過濾問題的文件 ```xml= <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>SpringMVC</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>springmvc-03-annotation</artifactId> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> </project> ``` ### 4.在web.xml中註冊DispatcherServlet #### 在Project Structure中的Artifacts,新增lib資料夾,並且將Maven的jar添加進去 ![](https://i.imgur.com/3zxMIEI.png) * 注意web.xml版本问题,要最新版! * 注册DispatcherServlet * 关联SpringMVC的配置文件 * 启动级别为1 * 映射路径为 / 【不要用/*,会404】 ```xml= <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--配置DispatcherServlet:這個是SpringMVC的核心:請求分發器,前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <!-- <servlet-class>:對應文件位置 --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--DispatcherServlet要綁定Spring的配置文件--> <!--init-param是配置Servlet的初始化参数--> <init-param> <!--在web.xml中通過contextConfigLocation配置spring, contextConfigLocation引數定義了要裝入的 Spring 配置檔案。--> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--啟動級別:1--> <load-on-startup>1</load-on-startup> </servlet> <!-- 在SpringMVC中, / /* 有區別 / :只匹配所有的請求,不會去配置jsp頁面 /*:匹配所有的請求,包括jsp頁面 因為視圖解析器包含jsp,如果使用/*,會形成jsp.jsp.jsp...的無限嵌套 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- <url-pattern>:瀏覽器訪問地址--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` ### 5.編寫springmvc-servlet.xml文件 在resource目录下添加springmvc-servlet.xml配置文件,配置的形式与Spring容器配置基本类似,为了支持基于注解的IOC,设置了自动扫描包的功能,具体配置信息如下: ```xml= <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 --> <context:component-scan base-package="com.kuang.controller"/> <!-- 让Spring MVC不处理静态资源 --> <mvc:default-servlet-handler /> <!-- 支持mvc注解驱动 在spring中一般采用@RequestMapping注解来完成映射关系 要想使@RequestMapping注解生效 必须向上下文中注册DefaultAnnotationHandlerMapping 和一个AnnotationMethodHandlerAdapter实例 这两个实例分别在类级别和方法级别处理。 而annotation-driven配置帮助我们自动完成上述两个实例的注入。 --> <mvc:annotation-driven /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> </beans> ``` 在视图解析器中我们把所有的视图都存放在/WEB-INF/目录下,这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。 ![](https://i.imgur.com/KpD2N2E.png) * 让IOC的注解生效 * 静态资源过滤 :HTML . JS . CSS . 图片 , 视频 ..... * MVC的注解驱动 * 配置视图解析器 並創建一個hello.jsp ```xml= <%-- Created by IntelliJ IDEA. User: User Date: 2022/9/18 Time: 下午 09:46 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html> ``` ### 6.创建Controller ```java= @Controller @RequestMapping("/hello") public class HelloController { //真实访问地址 : localhost:8080/hello/h1 @RequestMapping("/h1") public String hello(Model model){ //封裝數據 //向模型中添加属性msg与值,可以在JSP页面中取出并渲染 model.addAttribute("msg","Hello,SpringMVCAnnotation!"); //web-inf/jsp/hello.jsp return "hello"; //會被視圖解析器處理:/WEB-INF/jsp/hello.jsp } } ``` 表示掃描已經生效 ```xml= <context:component-scan base-package="com.kuang.controller"/> ``` ![](https://i.imgur.com/fMnNSqv.png) ### 7.創建視圖層 ```xml= <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html> ``` ### 8.配置Tomcat運行 配置Tomcat,开启服务器,访问对应的请求路径! 成功! ![](https://i.imgur.com/sZ4Idmr.png) ## 小結 实现步骤其实非常的简单: 1.新建一个web项目 2.导入相关jar包 3.编写web.xml , 注册DispatcherServlet 4.编写springmvc配置文件 5.接下来就是去创建对应的控制类 , controller 5.最后完善前端视图和controller之间的对应 6.测试运行调试. ### 使用springMVC必须配置的三大件: **处理器映射器、处理器适配器、视图解析器** 通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动( <mvc:annotation-driven />)即可,而省去了大段的xml配置