Spring Boot基础学习之(六):前后端交互实现用户登录界面

 本篇博客写的内容,是一个系列,内容都是关于spring boot架构的学习,实现前后端交互,极大的解放双手spring boot学习系列这是关于spring boot的专栏,后期也会不定期进行更新。内容都是有序号的,一步接着一步。Spring Boot 基础学习之(四)页面通过自定义LocaleResolver组件实现网页页面的的中英文转换_不想睡醒的梦的博客-CSDN博客本篇文章则是在此博文的基础上完善登陆界面。

前后端交互,实现用户登录界面的功能。通过spring boot实现在后端对此功能的实现。

索引网页代码修改一:最开始的索引网页源码放在上一篇博文当中了,有感兴趣的小伙伴可以去了解在<input>标签添加name属性,为了后端能拿到用户在次输入的值。 

在后端创建用户控制类:用以获取前端用户输出的账户和密码,在进行判断

package com.example.demo2.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


import javax.servlet.http.HttpSession;

@Controller
public class loginController {

    @RequestMapping("/user/login")      //交给前端去调用
    public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session){  
    //@RequestParam("username")获取前端用户登录时,用户名 password则是密码
    //Model:创建一个属性,并赋值,然后在传给前端显示
        if(StringUtils.hasText(username)==true && "123".equals(password)){  //进行判断,没有设置很复杂,设置要求:只要用户名有内容,并且密码为123就登录成功
            session.setAttribute("loginuser",username);   //if判断成功后,就为session设置属性和值
                return "dashboard";  //返回则是跳转页面
        }
        else
            model.addAttribute("msg","信息填写错误");    //如果用户登录没有成功则,显示在页面上,并返回到索引网页
            return "index";
    }
}

HttpSession原理
当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session
并且生成一个SessionID,这个SessionID在响应浏览器的时候会被装进cookie中,从而被保存到浏览器中
当用户再一次访问Servlet时,请求中会携带着cookie中的SessionID去访问
服务器会根据这个SessionID去查看是否有对应的Session对象
有就拿出来使用;没有就创建一个Session(相当于用户第一次访问)
 

 后端控制器设置完成了,接下来就是前端如何去进行调用

索引网页代码修改二:

  第一处红色方框则是将登陆界面交给咱们刚才创建的登录控制器,进行用户登录信息的核实,如果核实满足要求则是跳转页面到dashboard.html网页中。

这时就会出现一个问题

 登录成功会显示,用户登录时账户和密码:但是我们在日常的网页访问时,则不会出现这种问题,那如何进行修改呢?

其实很简单

第一步:修改控制器中return 返回的值

修改为return "redirect:/main.html";

但是在静态资源没有此网页,哪有该怎么办呢?

假设用户登录成功,需要跳转到其他网页,那该如此进行跳转呢?

 

对:就是咱们在之前博客提到的,自定义组件实现网页的跳转

@Configuration
public class Myconfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");  //访问/时则是跳转到index网页
        registry.addViewController("/index.html").setViewName("index"); 
        registry.addViewController("/main.html").setViewName("dashboard");//访问main.html网页则是跳转到dashboard网页

    }

重新启动项目,进行登录

没有出现前面的那种问题,出现则是咱们跳转页面的域名。

问题一:上面的操作则是用户能够一次登陆成功的操作,那如果用户登录时信息填写不满足情况该如何提示用户呢?

如果用户登录失败则是跳转到用户登录界面,并且显示提示信息,像这样:

代码在上面登录控制器中:往前端传递一个值用以显示作为用户登陆失败的提示信息 

后端传递的值,需要在前端调用

 添加这一行代码即可:msg则是后端传递的属性,注意:这里要添加一个判断语句 就是if语句因为只有登🦌失败才能显示定义的提示信息 判断语句:判断前端传递的msg属性是否为空,为空则不显示,不为空则显示。

总结:登陆界面的实现流程

1:在索引网页添加属性,为了让后端能够获取到用户登录的账户名和密码

2:当后端得到用户登录的信息时,则是验证用户登录的信息是否满足咱们的条件,满足则进行网页跳转,不满足将网页跳转到索引网页,并给前端传递一个参数,用以显示提示信息

3:当用户登陆成功时,进行跳转到一个未定义的网页,然后通过自定义配置,将这个未定义网页调转到登录成功后的界面:解决信息泄露的问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有人物联口红DTU DR154配置与RS 485传感器数据处理

一、硬件设备 &#xff08;1&#xff09;有人物联口红DTU DR154&#xff08;RS 485版本&#xff09; 这个DTU非常给力&#xff0c;不用插卡自带esim卡&#xff0c;送8年流量&#xff0c;配置的话通过小程序【联博士】蓝牙配置&#xff08;手机扫描DTU背后的二维码即可&#x…

界面开发框架Qt新手入门教程 - 项目视图示例介绍

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。Qt提供了许多功能&…

java基础问答

57、synchronized 各种加锁场景的作用范围 1.作用于非静态方法&#xff0c;锁住的是对象实例&#xff08;this&#xff09;&#xff0c;每一个对象实例有一个锁。 public synchronized void method() {} 2.作用于静态方法&#xff0c;锁住的是类的Class对象&#xff0c;因为Cl…

chatgpt+安全机器人控制器+底盘一体化方案设计构想

“你有没有想过&#xff0c;你只需告诉你的家庭助理机器人&#xff1a;‘请加热我的午餐’&#xff0c;它就会自己找到微波炉。这是不是很神奇&#xff1f;” 近日&#xff0c;微软在其官网发表了一篇名为《机器人 ChatGPT&#xff1a;设计原则和模型能力&#xff08;ChatGPT …

MongoDB 6.0 入门(一)

为什么研究MongDB 6.0 今天和老大聊天 聊到了一个场景的设计&#xff0c;我刚开始推荐了 clickhouse &#xff0c;然后老大指出 前两天 测试的结果&#xff0c;因为clickhouse 因为 是列式存储&#xff0c;导致我们要查询一行数据&#xff0c;需要200ms&#xff08;库中有2000…

MyBatis源码分析(二、续)SqlSource创建流程,SQL如何解析?如何将#{id}变成?的

文章目录实例一、SqlSource处理入口二、SqlSource处理逻辑1、XMLScriptBuilder 构造方法2、解析动态sql3、DynamicSqlSource4、RawSqlSource解析sql&#xff08;1&#xff09;parse方法解析sql写在后面实例 此处我们分析的sql&#xff1a; <select id"selectBlog&quo…

redis 十. 线程基础

目录一. redis 基础复习与了解redis6二. redis 线程问题总结一. redis 基础复习与了解redis6 redis官网, redis中文网站, redis命令参考网站此处以redis6.0.8或以上版本为例(查看自己redis版本命令"redis- server -v")按照redis6以上版本测试使用时,redis.conf下需要…

Baklib:企业知识管理帮助文档制作平台

在当今的商业环境中&#xff0c;企业面临着越来越多的挑战。其中之一是如何管理并传递企业内部的知识。企业知识管理的重要性不言而喻&#xff0c;它可以帮助企业更好地组织和利用内部的知识资源&#xff0c;提高生产力和竞争力。而Baklib作为一款企业知识管理&帮助文档制作…

新四级强化辅导

词汇题&#xff08;55道&#xff09; 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词&#xff0c;主句谓语动词think over后面缺宾语&#xff0c;后面的宾语从句谓语动…

聚焦“专精特新” 共话高质量发展

3月23日&#xff0c;第七届杭州全球企业家论坛暨第三届中国专精特新企业&#xff08;新三板&#xff09;高峰论坛在杭州国博中心成功举办。超过500位专精特新企业代表、专家学者、政府部门代表、科研院所代表共聚一堂&#xff0c;现场座无虚席&#xff0c;气氛热烈。本届峰会以…

SQL Server 2016安装教程

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;欢迎订阅系列专栏&#xff1a;SQL Server 2016从入门到精通&#x1f947; &#x1f4…

借东风拉马力,龙头券商东方财富发展持续向好

3月17日&#xff0c;互联网券商东方财富公布2022年年报。具体来看&#xff0c;东方财富2022年实现总营收124.9亿元&#xff0c;同比下滑4.6%&#xff1b;归母净利润85.1亿元&#xff0c;同比下滑0.5%&#xff0c;略低于预期。其中&#xff0c;2022年第四季度总营收同比下滑15.4…

【Python课堂】使用Akshare高效获得A股可转债的重要信息

文章目录前言一、准备二、获取基本信息1.引入库2.读入数据3.获取行情数据4.可转债比价表总结前言 Akshare是一个非常好用的开源A股数据获取模块&#xff0c;它是基于 Python 的财经数据接口库&#xff0c;目的是实现对A股、美股、期货等金融产品的基本面数据、实时和历史行情数…

【干货】交换机管理

实验目的 熟悉掌握交换机的管理&#xff0c;包括&#xff1a;密码恢复&#xff0c;IOS升级和备份&#xff0c;IOS恢复 掌握实际工程中控制线的操作 交换机管理&#xff08;一&#xff09; 交换机密码恢复&#xff08;以下实验都需要在真机上操作&#xff09; 控制线和电脑的连…

oracle语句查询时间范围

oracle语句查询时间范围 参考网址 &#xff1a; https://blog.csdn.net/weixin_36436373/article/details/116541220?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167930069316800188562500%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%25…

Web自动化测试入门

1.Web自动化测试的价值&#xff08;为什么要做web自动化测试&#xff09; 我们可以使用脚本语言代替人来进行测试 2.Web自动化测试相关技术&#xff1a; Selenium:支持多语言&#xff0c;行业内最火最主流Pytest/JUnit5:最好用最全面的单元测试框架Allure:测试报告3.Web自动化…

多线程应用:定时器

一. 定时器 定时器(定时任务) 定时器是一种控制任务延时调用&#xff0c;或者周期调用的技术。作用&#xff1a;闹钟、定时邮件发送。 定时器的实现方式 方式一&#xff1a;Timer方式二&#xff1a;ScheduledExecutorService 二. Timer定时器 TimerTask继承了Runnable&#…

APT、对称加密、非对称加密、SSL工作过程技术的介绍

1. APT的简单介绍APT全称&#xff1a;Advanced Persistent Threat 高级可持续威胁攻击。指的是某组织对特定对象展开持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性&#xff0c;通常会运用受感染的各种介质&#xff0c;供应链和社会工程学等手段&#xff0c;实施先…

【Vue全家桶】细说slot

【Vue全家桶】细说slot 文章目录【Vue全家桶】细说slot前言一、认识插槽Slot1.1 插槽的基本使用二、插槽的使用2.1 默认内容2.2 剧名插槽2.3 作用域插槽前言 我们已经了解到组件能够接收任意类型的 JavaScript 值作为 props&#xff0c;但组件要如何接收模板内容呢&#xff1f;…

【翻译】使用Go生成一个随机字符串(密码)

来源&#xff1a; Generate a random string (password) YourBasic Go https://yourbasic.org/golang/generate-random-string/ Random string 随机字符串 This code generates a random string of numbers and characters from the Swedish alphabet (which includes the non…