Spring Boot 2 精髓学习笔记(四)---MVC框架 (1)

本文详细介绍了Spring Boot如何集成Spring MVC框架,包括自动配置、web目录结构、Controller使用、URL映射到方法等方面。通过示例展示了Controller的声明、RequestMapping的使用、HTTP方法匹配等核心概念,并对方法参数类型如PathVariable、Model、JavaBean等进行了讲解。
摘要由CSDN通过智能技术生成

本节是 Spring Boot基础,主要介绍了Spring MVC技术基础。如果您对此部分已有了解可越过本节的学习。

由于篇幅关系,MVC框架学习分成了两个部分,此篇为第一部分;介绍了spring boot集成MVC框架、使用Controller、URL映射到方法、方法参数。

一、集成MVC框架

1、引入依赖

Spring Boot 集成Spring MVC 框架并实现自动配置,只需要在porm 中添加以下依赖即可,不需要其他任何配置:

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

这里采用IDEA 搭建的过程可以参考: 《第一个 Spring Boot2.x 程序快速搭建》https://blog.csdn.net/LUCKWXF/article/details/94472728

2、web目录结构参考

Web 的模板文件位于resources/templates 目录下,模板文件使用的静态资源文件,如js 、css 、图片,存放在resources/static 目录下。在MVC 中, 视图名自动在templates 目录下找到对应的模板名称,模板中使用的静态资源将在static 目录下查找。如下Controller 代码所示,将“/userdetail.html?id=xxx ”请求映射到foo方法:

@RequestMapping ("/userdetail.html")
public String foo (String id) {
   
    ......
return "/admin/userinfo.btl";
}

渲染的视图名称是“/admin/userlnfo.btl ”, 会寻找templates/admin/userlnfo. btl 模板文件,如果这个userlnfo.btl 有以下引用

<link href ="/css/ztree.css" rel = "stylesheet"/>

扩展名为btl 的文件是模板文件,是这本书作者创建的Beetl模板技术的模板文件,这里先不用纠结此技术,下节详细介绍。

整体目录效果图参考如下:

[外链图片转存失败(img-ytu5qjJc-1568699185862)(C:\Users\wangxf\AppData\Roaming\Typora\typora-user-images\1568618201345.png)]

从上图可以看到,在Sprin g Boot 应用中,通常会创建如下子包名:
controller 一一此包下包含了MVC 的Controller ,如UserController;
service一一此包下有业务处理代码, 如UserService ;
entity一一包含了业务实体, 如User类;
conf一一包含了一些配置类,比如用于配置数据源的DataSourceConfig, 还有本章的
JSON 序列化配置JacksonConf。

Spring Boot 应用的程序入口 MvctestApplication 建立在这些包名上, 这样Spring Boot 应用能自
动扫描整个项目的结构。

MvctestApplication同其他Spring Boot 程序一样, 仅仅是一个带有@SpringBootApplication 注解的类:

@SpringBootApplication
public class MvctestApplication {
   
	public static void main(String[] args) {
   
		SpringApplication.run(MvctestApplication.class, args);
    }
}

二、使用Controller

SpringMVC 框架不像传统的MVC 框架那样必须继承某个基础类才能处理用户的HTTP 请求,Spring MVC 只需要在类上声明@Controller, 标注这是一个Controller 即可。对于用户请求,使用@RequestMapping 映射HTTP 请求到特定的方法处理类。

@Controller
@RequestMapping ("/test")
public class HelloworldController {
   
@RequestMapping ("/index.html")
public String say (Model model) {
   
model.addAttribute ("name","hello,world" ) ;
return "/index.btl";

如以上代码所示,

@Controller 作用于类上, 表示这是一个MVC 中的Controller 。

@RequestMapping 既可以作用在方法上, 也可以作用在类上。如上例所示,用户如果访问/test/index. html ,则会交给HelloworldCon位oller.say 方法来处理。say 方法有一个参数Model ,这是Spring MVC 可识别的一个参数类型 ,用来表示MVC 中的Model 。你可以在say 方法中为这个Model 添加多个变量,这些变量随后可以用于视图渲染。

say 方法返回的类型是字符串,默认是视图的名称。Spring Boot 的视图默认保存在resources/templates 目录下, 因此, 渲染的视图是/resources/templates/index. btl 模板文件。

MVC 框架有时候返回的是JSON 字符串,如果想直接返回内容而不是视图名,则需要在方
法上使用@ResponseBody:

 @RequestMapping ("/index_str.html")
    public @ResponseBody  String resposebodytest () {
   
        return "hello,spring boot!";
    }

ResponseBody 注解直接将返回的对象输出到客户端,如果是字符串, 则直接返回: 如果不是,则默认使用Jackson 序列化成JSON 字符串后输出。

   @RequestMapping ("/index_json.html")

    public @ResponseBody  JSONObject resposeJsontest () {
   
        JSONObject object = new JSONObject();
        //string
        object.put("string","string");
        //int
        object.put("int",2);
        //boolean
        object.put("boolean",true);
        //array
        List<Integer> integers = Arrays.asList
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值