SpringMVC项目入门案例

因为SpringMVC是一个Web框架,将来是要替换Servlet,所以先来回顾下以前Servlet是如何进行开发的?

1.创建web工程(Maven结构);

2.设置tomcat服务器,加载web工程(tomcat插件);

3.导入坐标(Servlet);

4.定义处理请求的功能类(UserServlet);

5.设置请求映射(配置映射关系)。

SpringMVC的制作过程和上述流程几乎是一致的,具体的实现流程是什么?

1.创建web工程(Maven结构);

2.设置tomcat服务器,加载web工程(tomcat插件);

3.导入坐标(SpringMVC+Servlet);

4.定义处理请求的功能类(UserController);

5.设置请求映射(配置映射关系)

6.将SpringMVC设定加载到Tomcat容器中

步骤1:创建Maven项目

打开IDEA,创建一个新的web项目。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

步骤2:补全目录结构

因为使用骨架创建的项目结构不完整,需要手动补全。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

步骤3:导入jar包

将pom.xml中多余的内容删除掉,再添加SpringMVC需要的依赖。

<?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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.dcxuexi</groupId>
  <artifactId>springmvc_01_frist</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <!-- 导入springMVC 与servlet 坐标 -->
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.15.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <!-- tomcat 插件 -->
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port>
          <path>springmvc</path>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


**说明:**servlet的坐标为什么需要添加<scope>provided</scope>?

  • scope是maven中jar包依赖作用范围的描述;
  • 如果不设置默认是compile在在编译、运行、测试时均有效;
  • 如果运行有效的话就会和tomcat中的servlet-api包发生冲突,导致启动报错;
  • provided代表的是该包只在编译和测试的时候用,运行的时候无效直接使用tomcat中的,就避免冲突。

步骤4:创建配置类

//springmvc配置类,本质上还是一个spring配置类
//加载controller对应的bean
@Configuration
@ComponentScan("com.dcxuexi.controller")
public class SpringMvcConfig {
}

步骤5:创建Controller类

// 定义controller
// 使用 @Controller 定义表现层控制器bean
@Controller
public class UserController {

    //设置映射路径为/select,即外部访问路径
    @GetMapping("/select")
    //设置当前操作返回结果为指定json数据(本质上是一个字符串信息)
    @ResponseBody
    public String select(){
        System.out.println("UserController select , runnning ....");
        return "{\"username\":\"xiaochuang\"}";
    }
}

步骤6:使用配置类替换web.xml

将web.xml删除,换成ServletContainersInitConfig。

// 定义一个servlet容器启动的配置类,在里面加载spring的配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    //加载springmvc配置类,产生springmvc容器(本质还是spring容器)
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        //初始化WebApplicationContext对象
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        //加载指定配置类
        context.register(SpringMvcConfig.class);
        return context;
    }

    //设置由springmvc控制器处理的请求映射路径
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //加载spring配置类
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

步骤7:配置Tomcat环境

在这里插入图片描述
在这里插入图片描述

步骤8:启动运行项目

在这里插入图片描述

步骤9:浏览器访问

浏览器输入http://localhost/springmvc/select进行访问,就能看到返回的结果数据:

在这里插入图片描述

至此SpringMVC的入门案例就已经完成。

注意事项

  • SpringMVC是基于Spring的,在pom.xml只导入了spring-webmvcjar包的原因是它会自动依赖spring相关坐标;
  • AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类;
  • AbstractDispatcherServletInitializer提供了三个接口方法供用户实现;
    • createServletApplicationContext方法,创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围;
    • getServletMappings方法,设定SpringMVC对应的请求映射路径,即SpringMVC拦截哪些请求;
    • createRootApplicationContext方法,如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式和createServletApplicationContext相同。
    • createServletApplicationContext用来加载SpringMVC环境;
    • createRootApplicationContext用来加载Spring环境。

知识点1:@Controller

名称@Controller
类型类注解
位置SpringMVC控制器类定义上方
作用设定SpringMVC的核心控制器bean

知识点2:@RequestMapping

名称@RequestMapping
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法请求访问路径
相关属性value(默认),请求访问路径

知识点3:@ResponseBody

名称@ResponseBody
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法响应内容为当前返回值,无需解析

入门案例总结

  • 一次性工作
    • 创建工程,设置服务器,加载工程;
    • 导入坐标;
    • 创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径;
    • SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean);
  • 多次工作
    • 定义处理请求的控制器类;
    • 定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody);

项目代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.D.Chuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值