SpringMVC是一个基于Spring的WebMVC框架
SpringMVC的底层基于Servlet,并通过配合xml或注解完成路径分发。
1.导入依赖:
创建一个Maven项目,并导入以下坐标:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.13</version>
</dependency>
只需要导入上述一个坐标即可。
2.设置servlet-mapping
通常使用web.xml配置servlet-mapping
SpringMVC使用org.springframework.web.servlet.DispatcherServlet类完成路径拦截,也就是配置此类的servlet-mapping
<!--
前端控制器:所有的请求都会经过此控制器,然后通过此控制器分发到各个分控制器
总控本质上还是一个Servlet,因为SpringMVC底层就是使用Servlet编写的
-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 创建前端控制器的时候读取springmvc配置文件(spring-mvc.xml)启动ioc容器 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!-- Tomcat启动就创建此对象 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置拦截路径url,所有servlet无后缀都会被前端控制器拦截处理 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
注意上述的文件,SpringMVC默认是未开启注解的,我们配置此servlet的init-param完成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"
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">
<!--配置controller注解的根package-->
<context:component-scan base-package="com.rbusoft" />
</beans>
该配置xml文件格式是固定的,可以复制上述内容或使用IDE生成(SpringMVC-config),唯一不同的是 context:…
此标签用于扫描controller注解生效的根package,该包下的所有controller注解均会生效,如果不配置则注解不生效。
3.测试controller
创建一个MyServlet类,注意不要再继承httpServlet,仅需要加注解即可
package com.rbusoft;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MyServlet {
@ResponseBody
@GetMapping("/test")
public String test(){
return "Hello";
}
}
使用@Controller注解标识这是一个Controller类,接下来使用@ResponseBody注解标识此方法直接返回给前端而不经过视图解析器。
使用@GetMapping表示仅支持GET请求,servlet-mapping路径为 /test,返回值是String会原样返回,如果是对象则会自动被转换为Json数据格式。
启动容器,访问/test路径,即可得到Hello字符串。
本篇完,还有疑问?留下评论吧