web开发

简介: web开发

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

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

image.png

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":"祖斯特"}


说明代码执行正确

2. 返回Html页面

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

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

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

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

        <!-- 引入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

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Person测试页面</title>
</head>
<body>
    <div>编号:<span th:text="${person.getId()}">默认编号</span></div>
    <div>姓名:<span th:text="${person.getName()}">默认名字</span></div>

</body>
</html>

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 加个<img>标签验证下效果:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Person测试页面</title>
</head>
<body>
    <div>编号:<span th:text="${person.getId()}">默认编号</span></div>
    <div>姓名:<span th:text="${person.getName()}">默认名字</span></div>
    <div>
        <img src="/head.png">
    </div>
</body>
</html>

路径 src=/head.png 代表是static根路径

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

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

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

image.png

4. 自定义错误页面

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

image.png

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>页面不存在</title>
</head>
<body>
页面不存在!
</body>
</html>

重新启动程序,访问 http://localhost:8080/notexist ,效果如下:

页面不存在!  

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

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

相关文章
|
7月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
209 3
|
7月前
|
前端开发 JavaScript Java
Web开发介绍
Web开发介绍
64 0
Web开发介绍
|
2月前
|
Web App开发 前端开发 JavaScript
Web开发者必收藏的10个实用网站,你还没收藏吗?
将这些网站收藏起来,定期访问,使它们成为您日常工作的一部分,助您在快速发展的 Web 开发领域保持领先。
114 2
Web开发者必收藏的10个实用网站,你还没收藏吗?
|
7月前
|
前端开发 JavaScript Java
Web开发介绍详细介绍
Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等
100 0
|
4月前
|
前端开发 JavaScript 关系型数据库
Web开发
【8月更文挑战第24天】Web开发
42 3
|
4月前
|
前端开发 JavaScript Java
如何成为一名优秀的Web开发者?
【8月更文挑战第24天】如何成为一名优秀的Web开发者?
33 2
|
存储 移动开发 前端开发
H5技术:探索现代Web开发的未来
HTML5(H5)是一种用于构建现代Web应用程序的标准,它为开发者提供了更多的功能和能力。这篇博客将介绍H5技术的一些重要特性以及它们对Web开发的影响。
327 0
|
SQL 安全 JavaScript
Web开发安全
Web开发安全
219 0
|
Web App开发 数据采集 安全
《大话WEB开发》
作为开发者,需要不断的对技术点进行总结,并且把它沉淀下来,写技术博文无疑是最好的方式,随着时间流逝,还可以作为自己每个阶段的技术认知轨迹进行回顾和反思,这里将会持续记录对WEB开发相关总结内容 后端开发: 大话后端开发的奇淫技巧大集合 高...
1341 0
|
Web App开发 C#