update:2020-02-28:按道理来说这个功能在前后端分离的时候应该不怎么用的上,基本到现在我还是没遇到过有这样的需求,不过也是一种方法就是。th:href="@{/{role}/login/{userName}(userName=${session.user},role=${session.role})}"

基本流程

1.问题场景:简单描述整个问题实现的流程

2.相关配置:就是整个问题中涉及到的最关键的属性,或者某些配置方式

3.解决过程:围绕这个问题,从开头到结尾解析这个问题是怎么解决的【介绍怎么实现连接里动态传递多个值以及怎么实现隐藏与显示的效果,th:if,th:href,th:text】

4.写的不好,见谅

1.问题场景:

  在用SpringBoot做登陆成功显示个人资料页面,然后回到主页之后把主页登陆注册按钮隐藏,然后显示用户名,点击用户名可以回到个人资料页面

  下面是主页的登陆注册(这个时候还没有登陆)

  

  然后就去登陆了,演示的是登陆成功的例子

  

  点击主页图标之后,回到主页:会发现登陆注册按钮没了,取而代之的是一个用户名(按钮的样式),后面也可以把用户名改成头像什么的

    

  然后点击用户名按钮就又可以回到个人资料页面了

  

2.相关配置:

  2.1设置的Session的属性值:

  

  2.2登陆成功按钮引导的链接就是上面的/mid/login/whoseName,比如这个:localhost/mid/login/李明,就会以李明这个用户的身份登陆进系统

3.解决过程:

  3.1因为后台session属性值都设置好了,这里的问题就是

          使用Thymeleaf的th:href标签控制链接的跳转方向,

                 通过th:if控制标签是显示还是隐藏,

                 通过th:text控制标签显示的文本

  3.2

<!--登录/注册按钮-->

        <form class="offset-3" th:action="@{/}" method="post">
<input th:if="${session.user} == null" class="btn btn-outline-primary login " type="submit" value="登陆/注册">
</form>
<div th:if="${session.user} != null" >
        <!--下面th:href里有两个可变参数-->
<a th:href="@{/{role}/login/{userName}(userName=${session.user},role=${session.role})}" id="userInfoLink" class="btn btn-outline-primary login text-white" th:text="${session.user}"></a>
</div>
<!--登录/注册按钮-->

  th:if="${session.user == null}"表示查询session里的user属性值,如果用户是刚进来的话,那么就显示【登陆/注册】按钮,然后用户登录成功之后这个表达式里的布尔值就成为false了

   div盒子里的th:if="${session.user == null}" 同上

   a标签里的th:href="@{/{role}/login/{userName}(userName=${session.user},role=${session.role})}"

    这个的意思就是:我想把a标签的href的属性设置成符合【/mid/login/whoseName】这个链接的格式,

            所以/{role}对应的是mid,因为登陆用户可能是【中学生mid】,也可能是【大学生high】,

             然后role是不确定的,所以在后面用role = $(session.role}),从session获取用户身份,

             然后把它作为参数,放进链接地址里,这是这个链接里的第一个可变参数--End

              /{role}/login的login是固定的--End

              /{role/login/{userName}是第二个可变参数,通过获取session.user查询用户名,然后把用户名设置进链接地址里--End

  3.3    ( userName=${session.user},role=${session.role} )这个是跟在/{role}/login/{userName}后面,是用来设置前面可变参数的,

                     意思就是从session里获取user值或者role值,然后设置到链接路径里

                     这个就是多个可变值进行传递的方法,多个属性值赋值写在圆括号里,用逗号分隔开 

  3.4这个是自己在床上想了好久,也问了好多次度娘,问题终于解决了,为了防止忘了,就写下来哇

【现学现卖】th:href标签动态路径设置,thymeleaf获取session中的属性值的更多相关文章

  1. 『现学现忘』Git基础 — 37、标签tag(二)

    目录 5.共享标签 6.删除标签 7.修改标签指定提交的代码 8.标签在.git目录中的位置 9.本文中所使用到的命令 提示:接上一篇文章内容. 5.共享标签 默认情况下,git push 命令并不会 ...

  2. Python爬虫:现学现用xpath爬取豆瓣音乐

    爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 这样一比较我我选择了Lxml(xpa ...

  3. Django学习笔记(现学现写,实时更新)

    说明:我是先上手做一些简单的例子,然后在尝试的过程中理解Django的原理,笔记也是按这个思路来的. 一.Django结构与基本文件介绍 1. django-admin.py 工程管理工具,主要用于创 ...

  4. java高并发系列 - 第27天:实战篇,接口性能成倍提升,让同事刮目相看,现学现用

    这是java高并发系列第27篇文章. 开发环境:jdk1.8. 案例讲解 电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 商品基本信息(名称.价格.库存.会员价格等) 商品 ...

  5. 在函数中处理html点击事件在标签中增加属性值来解决问题。

  6. 现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua

    http://blog.csdn.net/u010019717/article/details/77510066?ref=myread http://blog.csdn.NET/u010019717 ...

  7. 『现学现忘』Git基础 — 36、标签tag(一)

    目录 1.标签介绍 2.列出标签 3.创建标签 (1)标签的分类 (2)附注标签 (3)轻量标签 4.后期打标签 1.标签介绍 软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一次 ...

  8. 现学现卖——Keil uVision 使用教程

    Keil uVision 使用教程 1.如果有旧的工程在,先关闭旧工程.Project -> Close Project2.新建工程.Project -> New uVision Proj ...

  9. 现学现卖——VS2013 C#测试

    VS2013 C#测试 首先安装Unit Test Generator.方法为:工具->扩展和更新->联机->搜索“Unit Test Generator”,图标为装有蓝色液体的小试 ...

随机推荐

  1. WPF技巧:命中测试在视觉树中的使用

    我们有时候又需求从当前视觉树中找一些东西,比如鼠标按下的时候,看看鼠标下的元素都有什么.又比如某块区域下有哪些元素?某个坐标点下有哪些元素? 这些需求在使用 命中测试的时候,可以非常方便和快速的去找到 ...

  2. WSL2:在Windows系统中开发Linux程序的又一神器

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  3. Java程序设计(2021春)——第三章类的重用笔记与思考

    Java程序设计(2021春)--第三章类的重用笔记与思考 本章概览: 3.1 类的继承(概念与语法) 3.2 Object类(在Java继承最顶层的类) 3.3 终结类和终结方法(只能拿来用,不可以 ...

  4. 家庭账本开发day08

    对查询到额数据进行相关的操作,删除.对删除按钮绑定事件 点击后发送ajax请求到servlet,删除相关的数据后,返回flag到前端 若后台删除成功,则前台进行相应的.close():输出点击行的数据 ...

  5. JPcap入门

    1,参照入门:安装第一个代码:https://blog.csdn.net/qq_37638061/article/details/80710143 2,数据解析,不可用但有启发意义:https://b ...

  6. 前端之html基础演示

    1.本地服务:下载淘宝镜像node.js :https://npm.taobao.org/mirrors/npm :本次下载的版本是 v10.0.0 2.下载成功后,到cmd窗口输入 node -v, ...

  7. python -- 程序异常与调试(异常处理)

    一.异常处理 针对在运行时可能会出错的语句块,可以提前设计好出现问题后的解决方案, 或者给出相应的提示信息.使用try-except语句来处理Python抛出的异常: # -------------- ...

  8. 微信小程序云开发-数据库-获取用户添加的数据到数据库

    一.列表页面新增[添加商品]按钮 在列表页增加[添加商品]按钮,按钮绑定事件toAdd(),用户点击该按钮跳转到添加商品页面. 在js文件中写toAdd()函数,作用是点击[添加商品]按钮,跳转到[添 ...

  9. js实现0ms延时定时器的几种方式

    这两天看到一篇介绍<如何实现准时的 setTimeout?>的文章,文章起源于一道面试题:有什么办法让setTimeout准时呀?具体文章内容可查看附录[1],看完之后,引起了我对setT ...

  10. Laravel使用artisan快速实现表单的登陆注册

    1. 开发环境 macOS Mojave 10.14.6 XAMPP 5.6.38 Laravel 5.2 2. 在终端,先进入到项目根目录并执行执行命令 php artisan make:auth ...