16 Springboot——登录功能实现
16.1 修改index.html中表单跳转的地址
将action的地址改为user/login,意思是点击提交按钮后,就会跳转到user/login地址,然后只要用Controller类的@RequsetMapping去接这个地址就行了。
<body class="text-center"><form class="form-signin" th:action="@{user/login}"><img class="mb-4" th:src="@{/img/bootstrap-solid.svg}" alt="" width="72" height="72"><h1 class="h3 mb-3 font-weight-normal">Please sign in</h1><label class="sr-only">Username</label><input type="text" class="form-control" placeholder="Username" required="" autofocus=""><label class="sr-only">Password</label><input type="password" class="form-control" placeholder="Password" required=""><div class="checkbox mb-3"><label><input type="checkbox" value="remember-me"> Remember me</label></div><button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button><p class="mt-5 mb-3 text-muted">© 2017-2018</p><a class="btn btn-sm">中文</a><a class="btn btn-sm">English</a></form></body>
16.2 controller类
当访问localhost:8080/user/login时,会返回在页面返回一字符串(本例是hello),@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中。
package jiang.com.springbootstudy.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class LoginController {@RequestMapping("/user/login")@ResponseBodypublic String login(){return "hello";}
}
以上代码只是简单实现了点击按钮后,访问请求,最后响应了一个字符串的过程。该项目中不需要使用ResponseBody注解,实现请求后的数据转发合页面跳转即可。注意,之前的表单中,input没有name属性,只有placeholder属性,改为name属性即可,然后相应的属性值改下,因为后面需要使用@RequestParm注解来接受表单数据,最终代码如下:
package jiang.com.springbootstudy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;@Controller
public class LoginController {@RequestMapping("/user/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,Model model){if (!StringUtils.isEmpty(username)&&"123456".equals(password)){return "redirect:/main.html";}else {model.addAttribute("msg","用户名或密码错误!");return "index";}}
}
这里使用了重定向(redirect), return "redirect:/main.html"会使访问localhost:8080/user.login地址后,网页被转移到localhost:8080/main.html地址,注意!这个是main.html是虚拟的地址,并不是转发到main.html页面的意思,因此需要使用mvc的配置类对请求就行转发,转发到实际地址中。最终,如果访问localhost:8080/main.html地址,就会打开一个dashboard.html页面。mvc配置类代码如下:
package jiang.com.springbootstudy.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MyMvcConfig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("index"); //setViewName后面不用加htmlregistry.addViewController("/index.html").setViewName("index");registry.addViewController("/main.html").setViewName("dashboard"); // 前面的main.html是假的,只是一种请求,后面才是真的,输入请求后会跳转的地方是后面的html}
}
16.3 修改index页面
根据Controller类的处理逻辑,如果用户名和密码错误,就会返回indem.html页面,并转发msg数据。转发后,需要在相应位置上把msg数据显示出来。需要在相应位置上加一行html代码,并且对p标签的样式进行了更改,需要增加的html代码如下:
<link th:href="@{/css/mystyle.css}" type="text/css" rel="stylesheet">
<p class="p-msg" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
css样式的代码如下:
p.p-msg{color: red;
}
输入错误后转发到index.html的结果:

16.4
相关文章:
16 Springboot——登录功能实现
16.1 修改index.html中表单跳转的地址 将action的地址改为user/login,意思是点击提交按钮后,就会跳转到user/login地址,然后只要用Controller类的RequsetMapping去接这个地址就行了。 <body class"text-center"><form cl…...
数据结构-栈队列链表树
1 栈 概念 栈是⼀个线性结构,在计算机中是⼀个相当常⻅的数据结构。栈的特点是只能在某⼀端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以⽤很多种⽅式来实现,其实可以把栈看成是数组的⼀个⼦集,所以这⾥使⽤数…...
clickhouse功能使用
离线聚合 物化视图 clickhouse需在AggregatingMergeTree之上建立物化视图来完成聚合的效果。以小时聚合为例说明 首先创建表,此处是本地表,且没有副本 #创建表 CREATE TABLE datasets.bt_stats (`btname` String,`record` UInt64,`EventTime` DateTime...
java中使用Jsoup和Itext实现将html转换为PDF
1.在build.gradle中安装所需依赖: implementation group: com.itextpdf, name: itextpdf, version: 5.5.13 implementation group: com.itextpdf.tool, name: xmlworker, version: 5.5.13 implementation group: org.jsoup, name: jsoup, version: 1.15.32.创建工具…...
无人驾驶实战-第七课(高精地图和V2X )
高精地图是无人驾驶中的重要一环,对环境感知、规划与定位等都有重要的作用。 高精地图的特点: 可视化、静态目标、地图信息、点云数据 高精地图与导航地图的区别 High Definition Map Navigation Map Precision cm m Information 3D lane info Mo…...
springboot集成Sentinel
1、添加依赖 该版本匹配springboot 2.3.x和2.4.x <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2021.1</version> </dependency> 2、Sentin…...
数据结构——单链表OJ题
单链表OJ题 前言一、删除链表中等于给定值 val 的所有节点二、反转一个单链表三、返回链表的中间结点四、输出该链表中倒数第k个结点五、将两个有序链表合并六、链表的回文结构七、将链表分割成两部分八、找出第一个公共结点九、判断链表中是否有环总结 前言 在前面的博客中我…...
【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT
1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网…...
《前端开发 实践之 构建工具的了解》
目录 构建工具的了解Vite 构建工具了解基本使用 构建工具的了解 前端构建工具之一:vite Vite 构建工具了解 todo 基本使用 todo...
MySQL 主从搭建
文章目录 前言一、MySQL 主从是什么?二、通过 Docker 部署三、配置主从关系四、实际情况分析&解决方案五、常见问题处理1、CLONE需要版本不同2、CLONE需要参数相同 总结 前言 MySQL 主从搭建 操作系统:CentOS Linux release 7.9.2009 (Core) 操作系…...
国内GitHub加速访问工具-Fetch GitHub Hosts
一、工具介绍 Fetch GitHub Hosts是一款开源跨平台的国内GitHub加速访问工具,主要为解决研究及学习人员访问 Github 过慢或其他问题而提供的 Github Hosts 同步工具。 项目原理:是通过部署此项目本身的服务器来获取 github.com 的 hosts,而…...
Webpack5新手入门简单配置
1.初始化项目 yarn init -y 2.安装依赖 yarn add -D webpack5.75.0 webpack-cli5.0.0 3.新建index.js 说明:写入下面的一句话 console.log("hello webpack"); 4.执行命令 说明:如果没有安装webpack脚手架就不能执行yarn webpack(…...
基于ali-oss实现不同类型文件上传不同的bucket
基于ali-oss实现不同类型文件上传不同的bucket,并根据大小选择直接上传还是分片上传 1 配置OSS2 引入依赖3 上传核心代码4 文件回显 1 配置OSS 可以看阿里云文档 ps:记得配置跨域 2 引入依赖 pnpm install ali-oss -save3 上传核心代码 import OSS from "ali-oss"…...
域名校验?反爬界的掩耳盗铃!
这一集我们讲一个比较简单的域名校验,可能你没有听过这个名字,因为这个名字是我编的,那么它究竟是什么呢?又为什么说它是掩耳盗铃呢?我们来看看下面的案例: 必应搜索页隐藏内容虎嗅新闻跳转404 import re…...
Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小
Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小 核心代码完整代码在线示例 之前由于误解遇到一个特殊的需求:想要把三维球上叠加倾斜摄影进行自由放大缩小,跟随地图的缩放进行缩放。 后来经过搜索、尝试,终于实现了需求。 但是,后…...
python机器学习(七)决策树(下) 特征工程、字典特征、文本特征、决策树算法API、可视化、解决回归问题
决策树算法 特征工程-特征提取 特征提取就是将任意数据转换为可用于机器学习的数字特征。计算机无法直接识别字符串,将字符串转换为机器可以读懂的数字特征,才能让计算机理解该字符串(特征)表达的意义。 主要分为:字典特征提取(特征离散化)…...
数据结构与算法中的双向链表
链表概念在现实世界中使用得很普遍。当我们使用 Spotify 播放队列中的下一首歌曲时,我们学到的单链表的概念就开始发挥作用。但是要播放队列中的上一首歌曲到底可以做什么呢? 在这篇博客中,我们将了解与数据结构相关的另一个概念,…...
数据安全治理的关键-数据分类分级工具
强大的资产发现能力 多种资产发现方式的组合应用,能够最大程度地提高资产发现能力。 灵活的敏感数据分类分级规则 内置丰富的敏感数据分类分级规则,支持正则表达式、关键词组、非结构化指纹、结构化指纹、机器聚类等多种匹配方式,并且规则…...
Spring集成Junit
目录 1、简介 2、Junit存在的问题 3、回顾Junit注解 4、集成步骤 4.1、导入坐标 4.2、Runwith 4.3、ContextConfiguration 4.4、Autowired 4.5、Test 4.6、代码 5、补充说明 5.1、Runwith 5.2、BlockJUnit4ClassRunner 5.3、没有配置Runwith ⭐作者介绍࿱…...
Java正则校验密码至少包含:字母数字特殊符号中的2种
一、语法 字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如, n匹配字符 n。\n 匹配换行符。序列 \\\\ 匹配 \\ ,\\( 匹配 (。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n…...
别再死记硬背AXI时序了!用Vivado Block Design搭个玩具,看波形秒懂握手协议
从零玩转AXI协议:用Vivado图形化工具破解握手时序之谜 第一次接触AXI协议时,那些密密麻麻的时序图让我头皮发麻——AWVALID、AWREADY、WLAST...这些信号就像天书一样难以理解。直到有一天,我决定抛开枯燥的文档,直接在Vivado里动手…...
毕设-情绪雷达
情绪雷达 注: 项目基于芋道的 mini 版,进行二次开发,部署文档就不过多赘述了,可以看人家的官方文档。 概述: 情绪雷达,项目的核心开发路线是:针对用户发来的聊天界面截图,利用 a…...
设计文档评审——你的第一次防守反击
该文章同步至公众号OneChan 第一节:以“第一用户”和“系统侦探”的视角重新定义评审 评审设计文档,不是你理解他们设计得有多精妙,而是确保他们没给你埋下三个月后才会引爆的雷。 引子:一份“完美”文档背后的陷阱 我曾评审过一…...
EnOcean BLE设备轻量级解析库设计与实现
1. 项目概述EnOceanBleDevices 是一个面向嵌入式平台的轻量级 BLE 协议栈扩展库,专为集成 EnOcean 自供电 BLE 设备而设计。其核心目标并非替代标准 BLE 协议栈(如 ESP-IDF 的 NimBLE 或 Bluedroid),而是构建在底层 BLE 扫描能力之…...
HsMod:革新性炉石传说增强工具,全方位提升游戏体验
HsMod:革新性炉石传说增强工具,全方位提升游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 一、你是否也面临这些游戏痛点? 当你兴致勃勃地开启…...
云端炼丹新思路:在趋动云Linux环境无缝运行秋葉aaaki的SD整合包
1. 为什么要在云端运行Stable Diffusion整合包 最近两年AI绘画工具爆发式增长,其中Stable Diffusion凭借开源免费、效果出众等优势成为最受欢迎的选项之一。B站知名UP主秋葉aaaki制作的整合包更是让普通用户也能轻松上手,解压即用。但现实情况是…...
Windows任务栏美化终极指南:如何使用TranslucentTB实现透明化效果
Windows任务栏美化终极指南:如何使用TranslucentTB实现透明化效果 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦…...
计算机毕业设计:Python全国气象数据采集与可视化平台 Flask框架 可视化 数据分析 机器学习 天气 深度学习 AI 空气质量分析(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
ARM架构和主要内核介绍-D
目录 概述 1 ARM架构的历史发展线 1.1 技术演进 1.2 关键阶段与技术里程碑 1.3 成功的核心:商业模式创新 2 Cortex-M内核 2.1 主要特性 2.2 系列通用核心优势 3 Cortex-R系列 3.1 内核介绍 3.2 核心技术特性 4 Cortex-A系列 4.1 主要特性 4.2 核心架构…...
毫米波雷达避坑指南:IWR1443做手势识别时,为什么速度解模糊是关键一步?
毫米波雷达手势识别实战:破解IWR1443速度模糊难题的核心策略 当你在IWR1443毫米波雷达上实现手势控制时,是否遇到过这样的困扰——快速挥手动作导致系统识别轨迹突然跳变?这背后隐藏着一个关键的技术瓶颈:速度模糊问题。本文将深入…...
