Spring Boot常用注解,thymeleaf,数据提交

news2025/1/16 1:33:10

前言

Spring Boot主要解决的是在微服务的架构下简化配置(快速有效),前后端分离,快速开发。提供了快速启动,内嵌容器化web项目,开箱即用提供了默认配置,没有繁琐的xml配置和冗余代码。本文见简单聊一下常用注解,thymeleaf和数据提交时需要注意的小问题。


Spring Boot常用注解,thymeleaf,数据提交

  • 前言
  • 1 快速配置
  • 2 常用注解
    • @Component注解
    • @Controller注解
  • 3 thymeleaf
    • 交互流程
  • 4 数据提交

1 快速配置

主要是通过了maven对包进行管理,需要那些插件的时候直接在pom文件中引入即可。
在这里插入图片描述
Spring Boot Starter 中提供了 Spring, Spring MVC , Spring Boot,Tomcat等框架。

在这里插入图片描述
而每一个框架都有自己的配置文件,在没有Spring Boot框架的时候,我们每次创建一个项目时,都需要对这些框架的配置文件进行一次调整。
而Spring Boot给我们提供了默认的配置,也就是我们创建完成之后就可以直接启动。那么对于简单的运行使用默认配置就足够了,对于真实的项目来说,默认配置往往是不够的。

Spring Boot提供了全局的一个配置文件来对所有的框架参数进行配置,application.yaml或application.propertis。

快速启动对开发和运维来说都减轻了负担。
比如以往可能对于上线的项目,如果想要修改一下tomcat中的配置文件,可能需要跨部门去操作,还需要发邮件等,而Spring Boot中内嵌了tomcat,这个tomcat只运行这一个项目,想要怎么调整我们程序员都可以直接操作,而且不会对其它的项目造成影响。
同时启动的时候也只需要依赖服务器上的jdk,一行java -jar xxx.jar即可启动。对于微服务来说是非常友好的。

2 常用注解

@Component注解

是一个比较通用的注解,用来标识这个类是一个组件,交给我们springboot容器来管理。默认是singleton单例的。
C
可以用在我们的controller,service,dao层,但是为了便于区分。
出现了@Controller,@Service,@Dao注解。

@Controller注解

在这里插入图片描述
但是底层还是调用了@Component注解
在这里插入图片描述
在Spring Boot中还有一个注解,@RestController注解。
在这里插入图片描述
这个注解在底层调用了@Controller注解就是调用了@Component,同时调用了一个@ResponseBody注解,其实在我们controller层之上还有一个UI层,我们返回的数据会通过UI渲染,如果添加了@ResponseBody注解绕过UI层,直接以一种文本的形式传输到前端。

在这里插入图片描述

3 thymeleaf

thymeleaf是渲染前端页面的一个引擎,特别的轻量级,并且在web不启动的情况下,也可以正确展示浏览页,(这个thymeleaf字面意思好像是什么树叶,寓意这它特别的轻量级吧,具体我不记得了,但是不重要哈哈)。

用maven引入thymeleaf

        <!--前端交互插件-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>

如果不生效或者出现其它问题解决起来比较棘手,可以删除掉thymeleaf的pom文件
通过下面配置找到html文件

spring:
  mvc:
    view:
      prefix: /
      suffix: .html

当我们controller层返回的是String类型的时候,就会去查找指定名称的页面,返回指定的页面

@Controller
@RestController
@RequestMapping("/whx")
public class MainController {

    @RequestMapping("/html")
    public String openHtml(){
        System.out.println("hello,word");
        return "list";
    }
}


假如我们添加了@Responsebody注解,就不会走ui的渲染,而是直接以文本的形式展示出来

@Controller
@RequestMapping("/whx")
public class MainController {

    @RequestMapping("/html")
    @ResponseBody
    public String openHtml(){
        System.out.println("hello,word");
        return "list";
    }



}

在这里插入图片描述

交互流程

在这里插入图片描述

controller层和web页面都在我们的context(上下文)中,controller层返回数据的时候会返回到上下文context中,页面需要数据的时候通过thymeleaf从context中获取解析。

4 数据提交

使用的时候发现,如果我们以在请求体里面以json的格式提交数据,后台必须使用@RequestBody来标注参数才可以取到。

使用HttpServletRequest也获取不到 请求体里面以json格式提交的数据

在这里插入图片描述

演示代码

    @PostMapping("/register")
    public String registerP(HttpServletRequest request,@RequestBody Account account){
        System.out.println(request.getParameter("loginName"));
        System.out.println(ToStringBuilder.reflectionToString(request));
        System.out.println(ToStringBuilder.reflectionToString(account));
        return  "register";
    }

运行结果

1234
org.apache.catalina.connector.RequestFacade@12517783[request=org.apache.catalina.connector.Request@7e49b0d1]
cn.wanghaixin.solution.dto.Account@3ec7283[id=<null>,loginName=1,2,3,password=1,2,3,nickName=1,2,3,age=1,location=1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GAMES101-图形学入门 LEC3: TRANSFORMATION-2D

文章目录上节内容回顾&#xff1a;本节知识概要Why study transformationModeling 模型变换Viewing 视图变换2D transformations 二维变换ScaleUniform 均匀缩放Non-Uniform 非均匀缩放Reflection Matrix 反射矩阵shear 切变rotate 旋转&#xff0c;默认绕&#xff08;0,0&…

Wetool 一款高效免费的微信社群管理工具,检查单向好友,自动回复、群发

这是一款高效免费的微信社群管理工具&#xff0c;目前功能主要有客服、机器人、单删查询、自动接受好友、以及群管理的一些工具下面放一下软件功能截图需要注意的是开启此工具需要下载旧版本的微信&#xff0c;这个在软件安装启动页面会自动进行下载。单删改查功能这个功能适用…

python基础篇之循环语句(附加选车牌号小系统开发)

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

【CocosCreator入门】CocosCreator项目创建 | 面板介绍

本文进行创建项目流程和编辑器界面的介绍&#xff0c;熟悉组成编辑器的各个面板、菜单和功能按钮。 目录 一、CocosCreator创建项目 二、CocosCreator编辑器界面 2.1层级管理器 2.1.1界面介绍 2.1.2层级管理器操作 2.2资源管理器&#xff08;Assets&#xff09; 2.2.1界…

asp.net c#大型综合管理系统源码 OA+HR+CRM综合办公管理系统源码

分享一套大型协同办公&#xff08;OAHRCRM&#xff09;系统源码。 本系统是强大构建系统&#xff0c;为OA办公系统HR人力资源管理系统CRM客户关系管理系统集合而成&#xff0c;人员可以单点登入多个系统完成自己的作业&#xff0c;超方便实用。全套源代码提供&#xff0c;不封…

System Extract 步骤

纲要&#xff1a; 把Composition下的SWC分配到System Description 描述的CAN网络的的ECU上。 System Extract目录 1. Create System Extract 2. Map SWC to ECU instance 3. Maping System Signal to Data Element 4. Create System Extract 1. Create System Extract Ri…

SAP 开发测试生产环境的简单介绍

客户端&#xff08;即Client),是SAP组织架构里最高层的组织单元&#xff0c;所有数据&#xff0c;包括静态数据&#xff08;科目、客户、供应商、物料、资产等&#xff09;、业务数据&#xff08;采购订单、销售订单、生产订单、维修订单等&#xff09;都会归属到各个Client下。…

Kettle用法之Windows定时任务

1 概述 前文提到了kettle的定时任务计划&#xff0c;但这个任务需要开启kettle&#xff0c;本文将利用windows的任务计划实现kettle的定时任务。 2 实现方法 需要编写bat文件&#xff0c;然后windows的任务计划调用执行。 3 操作步骤 3.1 第1步 启动spoon,新建一个作业&#xf…

【Linux】编译器 - gcc 函数库

目录 一、背景知识 二、gcc如何执行 1、预处理 2、编译 3、汇编 4、链接 三、函数库 1、初识函数库 2、动静态库 2.1、动态库 2.2、静态库 2.3、动静态库的选择 一、背景知识 使用 vim 编辑器完成代码书写之后&#xff0c;我们需要使用 Linux 中的编译器 gcc 来对…

vLive虚拟直播,助力企业打造线上云年会

2023年农历春节临近&#xff0c;各大企业都纷纷开始筹备年会&#xff0c;面临员工分布各地无法同时参与、内容单一缺乏参与感等局限性&#xff0c;越来越多的企业选择做一场云年会替代传统线下年会。近日&#xff0c;蓝海彤翔集团举办2022年终总结表彰暨2023业务发展规划大会&a…

Transcational与Synchronized或Lock搭配使用导致并发问题

在多线程的情况下&#xff0c;我们经常会用到synchronized或者Lock来保证我们的线程安全。 但是当碰到Transcational之后又会碰撞出什么火花呢&#xff1f; 相信我&#xff0c;看完之后&#xff0c;你一定不会亏 首先回顾一下小知识点&#xff1a; 基于Transactional注解的是…

4.R语言【dplyr包】使用方法

b站课程视频链接&#xff1a; https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新&#xff0c;但是要花钱&#xff0c;我花99&#x1f622;&#x1f622;元买了&#xff0c;感觉讲的没问题&#xff0c;就是知识点结构有点乱&#xff0c;有点废话&#xff09;&…

黑马程序员Java教程学习笔记(二)

学习视频&#xff1a;https://www.bilibili.com/video/BV1Cv411372m 如侵权&#xff0c;请私信联系本人删除 文章目录黑马程序员Java学习笔记&#xff08;二&#xff09;数组概述数组定义方式一、访问、注意事项数组定义方式二&#xff0c;元素默认值规则数组遍历、元素求和数组…

HTML5+CSS3小实例:文本背景扫光效果

实例:文本背景扫光效果 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="width…

【OpenGL学习】OpenGL环境配置

OpenGL环境配置 为了能够定义OpenGL上下文和创建用于显示的窗口&#xff0c;我们首先需要配置一些库来帮助我们实现&#xff0c;当前比较流行的用于创建窗口的库有GLUT&#xff0c;SDL&#xff0c;SFML和GLFW&#xff0c;其中网上的大部分教程使用的都是GLFW&#xff0c;因此我…

聊聊Pytorch2.0的新特性

一句话概括下&#xff0c;Pytorch2.0的功能介绍核心就是&#xff1a;torch.compile opt_module torch.compile(module)一行代码就能优化你的模型&#xff0c;优化后的模型和往常使用方式一样 速度会提升&#xff0c;比较重要的一点是&#xff1a;可以用于训练或者部署&#…

Grafana 告警接入飞书通知

Grafana 系列文章&#xff0c;版本&#xff1a;OOS v9.3.1 Grafana 的介绍和安装Grafana监控大屏配置参数介绍&#xff08;一&#xff09;Grafana监控大屏配置参数介绍&#xff08;二&#xff09;Grafana监控大屏可视化图表Grafana 查询数据和转换数据Grafana 告警模块介绍Graf…

带你从源码中分析关于vue(v2.7.10)的面试题

我们在面试的时候经常会被问到vue框架的原理类问题&#xff0c;我今天整理了一些常见问题和答案&#xff0c;希望有不正确之处还请指正。 1.new Vue时发生了什么 首先实例化一个对象&#xff0c;该对象执行init方法初始化生命周期等等&#xff0c;随后执行$mount方法开始生成v…

Modbus Slave缓冲区溢出漏洞CVE-2022-1068分析与复现

漏洞概述Modbus Slave是一个模拟工业领域通信协议Modbus从站的上位机软件&#xff0c;主要用于测试和调试Modbus从设备。该软件7.4.2以及以前的版本&#xff0c;在注册时&#xff0c;未对注册码长度进行安全检查&#xff0c;存在缓冲区溢出漏洞&#xff0c;导致软件崩溃。影响范…

在 Kubernetes 中部署并使用 KubeEdge

作者&#xff1a;马伟&#xff0c;青云科技容器顾问&#xff0c;云原生爱好者&#xff0c;目前专注于云原生技术&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、KubeKey 等。 边缘计算在广泛制造业、工业、零售和金融等行业&#xff0c;随着云原生应用的兴起&#…