02spring-boot-web-demo

序言

在这个互联网时代,使用 Spring 框架除了开发少数的独立应用,大部分情况下实际上在使用 SpringMVC 开发 web 应用,为了帮我们简化快速搭建并开发一个 Web 项目,SpringBoot为我们提供了 spring-boot-starter-web 自动配置模块。

本模块将整合spring-boot-starter-web,来让应用拥有web的能力

步骤

新建子模块,并且纳入父模块的管理这里不在赘述了,不懂请看第一个示例。

1.引入spring-boot-starter-web依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

到这里,我们就得到了一个可执行的web项目,直接从Application启动即可,只不过,我们还没有提供任何服务 Web 请求的 Controller,所以,访问任何路径都会返回一个 SpringBoot 默认提供的错误页面(一般称其为 whitelabel error page)

2.新建controller

@RestController
public class HelloController {
    @GetMapping("/say/hello")
    public String sayHello() {
        return "hello";
    }
}

这样,一个最简单的web应用就完成了

现在在进行启动,并且浏览器访问http://localhost:8080/say/hello即可看到浏览器返回hello。

小知识

相对于传统的web项目开发,spring-boot的模式仅仅只需要两步即可实现。但这简单的背后,却有着很多约定,我们只有充分了解并遵守这些约定,才能更好的使用spring-boot-starter-web

项目结构层面的约定

项目结构层面与传统打包为 war 的 JavaWeb 应用的差异在于,静态文件和页面模板的存放位置变了,原来是放在 src/main/webapp 目录下的一系列资源,现在都统一放在 src/main/resources 相应子目录下,比如:

  • src/main/resources/static 用于存放各类静态资源,比如 css,js 等。
  • src/main/resources/templates 用于存放模板文件,比如 *.vm。

SpringMVC 框架层面的约定和定制

spring-boot-starter-web 默认将为我们自动配置如下一些 SpringMVC 必要组件:

  • 必要的 ViewResolver,比如 ContentNegotiatingViewResolver 和 Bean-NameViewResolver。
  • 将必要的 Converter、GenericConverter 和 Formatter 等 bean 注册到 IoC 容器。
  • 添加一系列的 HttpMessageConverter 以便支持对 Web 请求和相应的类型转换。
  • 自动配置和注册 MessageCodesResolver。
  • 其他

任何时候,如果我们对默认提供的 SpringMVC 组件设定不满意,都可以在 IoC 容器中注册新的同类型的 bean 定义来替换,或者直接提供一个基于 WebMvcConfigurerAdapter 类型的 bean 定义来定制,甚至直接提供一个标注了 @EnableWebMvc 的 @Configuration 配置类完全接管所有 SpringMVC 的相关配置,自己完全重新配置。

@Controller

@Controller用于标记在一个类上,使用它标记的类就是一个SpringMvc Controller对象

@ResponseBody

ResponseBody注解的作用是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据。

需要注意,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。

@RestController

@RestController是一个复合注解,@RestController = @Controller + @ResponseBody

@RequestMapping

在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求。

@GetMapping

@RequestMapping(value = “/say/hello”, method = RequestMethod.GET)的简化写法,同样的注解还有@PostMapping,@PutMapping,@DeleteMapping等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值