• 自动秒收录
  • 软件:1973
  • 资讯:58001|
  • 收录网站:278291|

IT精英团

2流高手速成记(之二):跳羚之基础网开发

2流高手速成记(之二):跳羚之基础网开发

浏览次数:
评论次数:
编辑: 乐咏
信息来源: ITPUB
更新日期: 2022-09-24 01:08:45
摘要

现在,我们已经能自行完成SpringBoot的初级项目搭建了,接下来看如何实现一些Web开发中的基础功能。先看项目完整的目录结构:1.返回Json数据创建model文件夹,并新建Person类,代码

  • 正文开始
  • 相关阅读
  • 推荐作品

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

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

1. 返回Json数据

创建模型文件夹,并新建人类,代码如下:

复制代码

包com。举例。你好,春靴。模型;

公共类人员{

private int id=0;

私有字符串名称="";

public int getId() {

返回id;

}

public void setId(int id) {

this.id=id

}

公共字符串getName() {

返回名称;

}

公共void集合名称(字符串名){

this.name=name

}

}复制代码

在控制器文件夹下创建JsonController,代码如下:

复制代码

包com。举例。你好,春靴。控制器;

导入com。举例。你好,春靴。模型。人;

导入org。spring框架。网络。绑定。注释。获取映射;

导入org。spring框架。网络。绑定。注释。请求映射;

导入org。spring框架。网络。绑定。注释。休息控制器;

@RestController

@RequestMapping('/json ')

公共类JsonController {

@GetMapping('/person ')

公共人物人物(){

人员人员=新人();

人。setid(1);

person.setName('祖斯特');

退货人;

}

}复制代码

@RestController注解我们在上一节已经用过了,代表整个控制器请求方法仅返回纯数据,不包含超文本标记语言页面信息

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

重启程序,访问地址http://本地主机:8080/JSON/person,页面显示如下:

{'id':1,'姓名' : '祖斯特'}说明代码执行正确

2. 返回Html页面

接下来我们看如何返回完整的超文本标记语言渲染页面

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

我们在砰的一声中加入其依赖配置:

复制代码

属国

属国

groupIdorg.springframework.boot/groupId

artifact id spring-boot-starter-web/artifa

ctId> </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 ,页面显示如下:

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,页面显示效果如下:

 

 4. 自定义错误页面

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

 

 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+的错误

以上。

 

关于 SpringBoot之基础Web开发 我们就介绍到这,下一节我们看如何实现SpringBoot和mysql数据库之间的交互,敬请期待。

Lua脚本在Redis交易中的应用实践
« 上一篇 2022-09-24
  • Lua脚本在Redis交易中的应用实践
    0阅读 0条评论 个赞
    使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部……
  • IDEA远程部署项目到Docker
    0阅读 0条评论 个赞
    前言最近在写东西部署到服务器,结构是springboot工程配合docker部署。但是每次部署都3个步骤:本地构建jar复制jar到远程服务器用DockerFile构建镜像部署次数一多,我就怀疑人生了……
  • Object.keys的‘怪异’特性 你值得收藏!
    0阅读 0条评论 个赞
    先从‘诡异’的问题入手例1:纯Number类型的属性constobj={1:1,6:6,3:3,2:2}console.log('keys',Object.keys(o……
  • 在Winform开发中 我们使用几个下拉列表来显示字典数据
    0阅读 0条评论 个赞
    在Winform开发中中,我们为了方便客户选择,往往使用系统的字典数据选择,毕竟选择总比输入来的快捷、统一,一般我们都会简单封装一下,以便方便对控件的字典值进行展示处理,本篇随笔介绍DevExpres……
  • [安全框架]快速了解安全框架
    0阅读 0条评论 个赞
    这篇文章就来说说市面上的安全框架,并没有详细解释。目录【安全框架】快速了解安全框架说说安全框架什么是安全框架?安全框架又有哪些?ShiroSpringSecuritySa-Token1|1说说安全框架……
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
  • MQ系列5:5的发送模式:RocketMQ消息
    0阅读 0条评论 个赞
    在之前的篇章中,我们学习了RocketMQ的原理,以及RocketMQ中命名服务ServiceName的运行流程,本篇从消息的生产、消费来理解一条消息的生命周期。1消息生产在RocketMQ中……
  • 将SQL Server数据库迁移到Azure SQL
    0阅读 0条评论 个赞
    最近有个维护的项目需要把SQLServer2012的数据库迁移到AzureSQL上去,迁移过程可谓一波三折,故在此分享这次迁移中碰到的点点滴滴,希望对朋友们有所帮助。AzureSQL……
  • 用户自定义注释 AOP实现的日志保存(数据库) 所有代码都可以粘贴复制
    0阅读 0条评论 个赞
    前言1,在一些特定的场景我们往往需要看一下接口的入参,特别是跨系统的接口调用(下发,推送),这个时候的接口入参就很重要,我们保存入参入库,如果出问题就可以马上定位是上游还是下游的问题(方便扯皮)2,还……
  • smile——Java机器学习引擎
    2阅读 0条评论 个赞
    资源https://haifengl.github.io/https://github.com/haifengl/smile介绍Smile(统计机器智能和学习引擎)是一个基于Java和Scala的快速……
  • 订单超时案例的RabbitMQ实现
    0阅读 0条评论 个赞
    前言#人间清醒目录前言业务场景JUC(DelayQueue)方案DelayQueue简介JUCDelayQueue实现订单超时案例代码案例代码RedisKey过期事件方案简介RabbitKey……
  • SQL Server动态生成分区脚本
    0阅读 0条评论 个赞
    一、前言前段时间使用表分区比较多,虽然已经写了SQLServer合并(删除)分区解惑、SQLServer2005分区模板与实例,但是在实践中一直感觉修改SQL脚本的时间比较多,一直想抽个时间来把……
  • ASP.NET核心6框架揭示示例演示[34]:缓存整个响应内容
    0阅读 0条评论 个赞
    我们利用ASP.NET开发的大部分API都是为了对外提供资源,对于不易变化的资源内容,针对某个维度对其实施缓存可以很好地提供应用的性能。《内存缓存与分布式缓存的使用》介绍的两种缓存框架(本地内存缓存和……
  • 计算机网络-了解-DNS和HTTPDNS
    0阅读 0条评论 个赞
    DNS和HTTPDNSDNS域名解析的过程传统DNS存在的问题1、域名缓存问题2、域名转发问题3、出口NAT问题4、DNS域名更新问题5、解析延迟问题6、运营商劫持HTTPDNSHTTP……
  • 面试官:谈谈你对mysql事务的认识?
    0阅读 0条评论 个赞
    引言今天回头继续讲讲数据库系列的文章。这篇文章属于mysql数据库系列,我们来谈谈事务方面的常见面试题。那么,具体题目有下面这些:1、讲讲为什么用事务?事务的四大特性?事务的隔离级别知道吧,你们生产……
  • 学习Linux 就看这篇文章!
    0阅读 0条评论 个赞
    对于测试同学来说,Linux基本属于必学必会内容,招聘要求中基本都会出现Linux相关字眼,面试也经常被问到,原因很简单,因为现在公司的服务器绝大多数都是Linux,如果你一无所知,很多时候听不懂别人……
  • 如何使用spark或hive sql将Excel文件加载到hive表中
    0阅读 0条评论 个赞
    .css-1yuhvjn{margin-top:16px;}.css-3jt6os.FileLinkCard{-webkit-align-items:center;-webkit-box-align……
  • Java SE 19的新特性
    0阅读 0条评论 个赞
    源码#源仓库:Github:java_new_features镜像仓库:GitCode:java_new_featuresHashMap新的构造方法#JavaSE19,构造哈希表的时候,由于有扩……
  • python的环境,你再也不用愁康达
    1阅读 0条评论 个赞
    CondaGuideConda简介conda是一个包,依赖和环境管理工具,适用于多种语言,如:Python,R,Scala,Java,Javascript,C/C++,FORTRAN……
  • 微服务系列授权认证(三)JWT
    0阅读 0条评论 个赞
    1.JWT简介官方定义:JWT是JSONWebToken的缩写,JSONWebToken是一个开放标准(RFC7519),它定义了一种紧凑的、自包含的方式,可以将各方之间的信息作为JSO……
  • 基于位置变化的市县弹出引导切换
    31阅读 0条评论 个赞
    目录1.背景2.模型方案产出3.总结01背景58App业务中有城市和县域两个首页,两者中间有一个过渡选择页,用户通过点击该页面下的条目内容可以切换到对应条目的首页;比如:点击“北京”会跳转到北京(市)……
  • 教大家如何处理Spring Boot易流中的用户和群体!
    1阅读 0条评论 个赞
    1.准备工作2.用户操作2.1添加用户2.2修改用户2.3删除用户2.4查询用户3.组操作3.1添加组3.2修改组3.3删除组3.4查询组4.查看表详情虽然说我们在实际开发中,……
  • NET 6 EFCore WebApi使用JMeter进行吞吐量测试
    0阅读 0条评论 个赞
    开发环境VS2022.NET6测试环境测试工具接口压力测试工具:JMeter数据库MySQL5.7数据库和WebApi服务在同一台服务器上,JMeter在本人笔记本上。测试设置200个线程并发,每……
  • SQL Server性能优化系列
    0阅读 0条评论 个赞
    这是关于SQLServer调优系列文章,以下内容基本涵盖我们日常中所写的查询运算的分解以及调优内容项,皆为原创........第一个基础模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运……
  • SpringMVC 03: 请求和响应的乱码解决 + SpringMVC响应Ajax请求
    1阅读 0条评论 个赞
    请求或响应的中文乱码问题tomcat9解决了get请求和响应的中文乱码问题,但是没有解决post请求或响应的中文乱码问题tomcat10解决了get和post请求以及响应的中文乱码问题考虑到实际项目中……
  • 网反向代理YARP部署Https(SSL)
    0阅读 0条评论 个赞
    YARP作为反向代理中间件,那就无可避免需要使用到Https去部署项目,那YARP要怎么去实现呢,本来以为YARP会有一套自己的实现,在翻阅了资料后发现,根本不是我想的那样,按照YARP……
最近发布资讯
更多