7. Spring Boot 2.x 最佳实践之 Spring WebMVC 集成

本文详细介绍了如何在Spring Boot 2.x项目中集成Web MVC,实现Restful API。主要内容包括添加spring-boot-starter-web依赖,配置application-dev.properties文件,创建Controller并演示常见方法,以及提供了源码下载链接。
摘要由CSDN通过智能技术生成

这节课来讲解下 Spring Boot 集成Web 实现Restful 风格的API 。

1.添加项目依赖

如果想进行Web应用开发,那么我们则需要在pom.xml依赖中引入了spring-boot-starter-web,它包含了Spring Boot预定义的一些Web开发的常用依赖

  • spring-web, spring-webmvc Spring WebMvc框架
  • tomcat-embed-* 内嵌Tomcat容器
  • jackson 处理json数据
  • spring-* Spring框架
  • spring-boot-autoconfigure Spring Boot提供的自动配置功能
<!-- Web应用开发 -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>    
</dependency>

注意:
内嵌容器如果不想使用Tomcat 想使用Jetty,那么需要修改依赖如下:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency> 
  • 以上依赖排除掉了默认的内嵌容器Tomcat
  • 然后引用了新的依赖Jetty 内嵌容器
  • 其次值得注意的是,凡是spring-boot-starter 开头的都传递依赖了
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
</dependency> 

因此就算不显式指定该依赖也不会报错

2. application-dev.properties 配置如下

# 基础配置
# 配置当前应用程序的名称,选填 可不配置
spring.application.name=spring-boot-with-web

# 内嵌容器参数配置
# 配置应用程序的访问端口 选填 不配置默认是8080
server.port=8080
# 配置应用程序的IP,选填
server.address=127.0.0.1
# 配置应用程序的上下文
server.servlet.context-path=/

3. 创建我们的Controller

该模块常用的几种方法如下所示:

import org.springframework.web.bind.annotation.*;

/**
 * @author 星云
 */
@RestController
public class HomeController {

    /**
     * 最基础的拦截/ 返回字符串
     * @return
     */
    @GetMapping(value = "/")
    public String homePage(){
        return "Hello Home Page";
    }

    /**
     * 同时拦截多个URL
     * @return
     */
    @GetMapping(value = {"/hi.do","/hello.do"})
    public String helloPage(){
        return "Hello Page";
    }

    /**
     * 组合注解
     * @RequestMapping(value = "/test.do",method = RequestMethod.GET)
     * @GetMapping(value = "/test.do")组合注解,等价于上面这种写法
     * @return
     */
    @GetMapping(value = "/test.do")
    public String testPage(){
      return "Hello Test get Page";
    }

    /**
     * @RequestMapping(value = "/test2.do",method = RequestMethod.POST)
     * @PostMapping(value = "/test2.do")组合注解,等价于上面这种写法
     * @return
     */
    @PostMapping(value = "/test2.do")
    public String test2Page(){
      return "Hello Test post Page";
    }

    /**
     * 传统风格带参数的URL
     * 访问http://127.0.0.1:8080/url/b?id=18
     * @param uid
     * @return
     */
    @GetMapping(value = "/url/b")
    public String urlWithQuestion(@RequestParam(value = "id",required = false,defaultValue = "0") Integer uid) {
        return "Hello URL -----/url/b?id=" + uid;
    }

    /**
     * 访问http://127.0.0.1:8080/url/c.do
     * @param uid
     * @return
     */
    @PostMapping(value = "/url/c.do")
    public String urlWithQuestionPost(@RequestParam(value = "id",required = false,defaultValue = "0") Integer uid){
        return "Hello URL -----/url/c.do post:"+uid;
    }
    /**
     * Restful 风格带参数的URL
     * 访问http://127.0.0.1:8080/url/a/18
     * @param uid
     * @return
     */
    @GetMapping(value = "/url/a/{id}")
    public String urlWithParams(@PathVariable("id") Integer uid){
        return "Hello URL -----url/a/***------id="+uid;
    }
}

注:如果不使用@RestController 返回JSON,则需要这样做:

import org.springframework.stereotype.Controller; import
org.springframework.web.bind.annotation.RequestMapping; import
org.springframework.web.bind.annotation.RequestMethod; import
org.springframework.web.bind.annotation.ResponseBody;

@Controller 
public class TestController {
    @ResponseBody
    @RequestMapping(value = "/test.do",method = RequestMethod.GET)
    public String testMethod(){
        return "Hello Controller";
    }
 } 

4. 源码下载

GitHub 源码下载


本篇完~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客星云

谢谢认可,希望对你的学习有帮助

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

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

打赏作者

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

抵扣说明:

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

余额充值