SpringMVC 学习(三)注解开发
4. 注解开发
4.1 环境搭建
(1) 新建 maven 模块
springmvc-03-annotation
(2) 确认依赖
确认方法同 3(2),手动导入发布依赖见3(11)
<!--资源过滤-->
<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>
(3) 添加 web 支持
注意 web.xml 版本问题,要最新版
(4) 配置 web.xml
<!--web/WEB-INF/web.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">
<!--1.注册DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--2.关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--3.启动级别-1-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--4.映射路径为 / 【不要用/*,会404】-->
<!--
/ 匹配所有的请求(不包括.jsp)
/* 匹配所有的请求(包括.jsp)
-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
(5) 新建 springmvc 配置文件
<!--resources/springmvc-servlet.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">
<!--1.自动扫描包,让指定包下的注解生效,由IOC容器统一管理-->
<context:component-scan base-package="com.kuang.controller"/>
<!--2.让Spring MVC不处理静态资源-->
<mvc:default-servlet-handler />
<!--3.支持mvc注解驱动-->
<!--
在spring中一般采用@RequestMapping注解来完成映射关系
要想使@RequestMapping注解生效
必须向上下文中注册DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter实例
这两个实例分别在类级别和方法级别处理。
而annotation-driven配置帮助我们自动完成上述两个实例的注入。
-->
<mvc:annotation-driven />
<!--4.视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
(8) 新建视图
<!--web/WEB-INF/jsp/hello.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
(7) 新建 Controller
// 将此类作为控制器注册进 Spring 中
@Controller
@RequestMapping("hello")
public class HelloController {
/**
* hello 看控制器
* @param model 模型
* @return 字符串
*/
@RequestMapping("/helloMvc") // http://localhost:8080/hello/helloMvc
public String helloMvc(Model model) {
// 封装数据到 model
model.addAttribute("msg", "HelloSpringMVCAnnotation!");
// 此字符串会被视图解析器解析并匹配视图 web/WEB-INF/jsp/hello.jsp
return "hello";
}
}
控制器使用注解 @Controller
,此注解标注下的类中方法没有标注 @ResponseBody
返回字符串会被视图解析器解析并匹配视图;
而 @RestController
类下的方法或标注了 @ResponseBody
注解的方法,返回字符串不会被视图解析器解析,视图会显示原字符串。
4.2 小结
- 新建web项目
- 导入相关jar包
- 编写web.xml , 注册DispatcherServlet
- 编写springmvc配置文件
- 创建视图
- 创建对应的控制类 , controller
- 完善前端视图和controller之间的对应
- 测试运行调试.
使用springMVC必须配置的三大件:
处理器映射器、处理器适配器、视图解析器
通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置