SpringBoot之基础Web开发

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot之基础Web开发相关的知识,希望对你有一定的参考价值。

现在,我们已经能自行完成SpringBoot的初级项目搭建了,接下来看如何实现一些Web开发中的基础功能。

先看项目完整的目录结构:

  1. 返回Json数据
    创建model文件夹,并新建Person类,代码如下:

复制代码
package com.example.hellospringboot.model;

public class Person

private int id = 0;

private String name = "";

public int getId() 
    return id;


public void setId(int id) 
    this.id = id;


public String getName() 
    return name;


public void setName(String name) 
    this.name = name;


复制代码
在controller文件夹下创建JsonController,代码如下:

复制代码
package com.example.hellospringboot.controller;

import com.example.hellospringboot.model.Person;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(“/json”)
public class JsonController

@GetMapping("/person")
public Person person()
    Person person = new Person();
    person.setId(1);
    person.setName("祖斯特");
    return person;


复制代码
@RestController注解我们在上一节已经用过了,代表整个Controller请求方法仅返回纯数据,不包含html页面信息

这种情况多见于前后端分离的情况,前端框架(如Vue)在拿到后端返回数据之后自行组织页面渲染

重启程序,访问地址 http://localhost:8080/json/person ,页面显示如下:

“id”:1,“name”:“祖斯特”
说明代码执行正确

  1. 返回Html页面
    接下来我们看如何返回完整的Html渲染页面

要实现这个功能,需要引入前端模板引擎,官方推荐Thymeleaf

我们在pom中加入其依赖配置:

复制代码


org.springframework.boot
spring-boot-starter-web

    <!-- 引入thymeleaf依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

复制代码
在controller文件夹下创建HtmlController类:

复制代码
package com.example.hellospringboot.controller;

import com.example.hellospringboot.model.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(“/html”)
public class HtmlController

@GetMapping("/person")
public ModelAndView person()
    ModelAndView mv = new ModelAndView();
    Person person = new Person();
    person.setId(1);
    person.setName("祖斯特");
    mv.addObject("person", person);
    mv.setViewName("person");
    return mv;


复制代码
跟返回Json数据不同,HtmlController注解为@Controller,方法需要返回一个ModelAndView对象

mv.addObject 代表我们向前端Html模板提供绑定数据

mv.setViewName 代表我们要设定的Html模板,这里指定名称为:person

接下来我们在 resources/templates 路径下创建Thymeleaf模板文件 person.html

复制代码

Person测试页面 编号: 默认编号 姓名: 默认名字 复制代码 Thymeleaf拥有优秀的设计理念,所有的模板文件即使没有后端程序也可以独立渲染(th标签不会引发异常),以供前端设计师查看效果

而 th:text=“$xxx” 代表程序执行时,标签的内容将动态替换为后端传过来的数据内容

重启程序,访问地址 http://localhost:8080/html/person ,页面显示如下:

编号:1
姓名:祖斯特
3. 静态资源访问
我们一般将静态文件(js、css、图片等)存放在单独的文件夹下,SpringBoot默认地址为 resources/static
但是为了使其能够正常访问,我们扔需要在application.properties中加入如下配置:
复制代码

应用名称

spring.application.name=hellospringboot

应用服务 WEB 访问端口

server.port=8080

使用static作为静态资源根路径,且不需要其他路径前缀

spring.mvc.static-path-pattern=/**
spring.web.resources.static-locations=classpath:/static/
复制代码
之后我们在static下放入一张图片head.png测试效果

person.html 加个标签验证下效果:

复制代码

Person测试页面 编号: 默认编号 姓名: 默认名字 复制代码 路径 src=/head.png 代表是static根路径

如果直接写 src=head.png 则为相对路径:static/html/head.png

需要注意这一点,大家可以自行尝试

访问地址 http://localhost:8080/html/person,页面显示效果如下:

  1. 自定义错误页面
    如果我们访问一个不存在的地址:http://localhost:8080/notexist,会弹出如下的错误页面:

SpringBoot已经为大家提供了自定义错误页面的方法,实现起来非常简单

我们在 resources/static 下创建文件夹 error,在error下创建 404.html 即可

复制代码

页面不存在 页面不存在! 复制代码 重新启动程序,访问 http://localhost:8080/notexist ,效果如下:

页面不存在!

你可能感到困惑,这样岂不是要一个错误创建一个html文件?!

SpringBoot为我们提供了通配符支持,比如:4xx.html 可以代表401、402、403、404等所有400+的错误

以上。

以上是关于SpringBoot之基础Web开发的主要内容,如果未能解决你的问题,请参考以下文章

springboot入门的一点基础

springboot:Web开发静态资源源码探究

SpringBoot2之web开发(上)——之静态资源和请求参数处理

Springboot 系列Spring Boot web 开发之静态资源和模版引擎

Java基础之XML解析

重学SpringBoot系列之基础知识回顾