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. centos安装报错:license information (license not accepted)

    前言:在最近部署的centos系统发现个问题 出现报错:安装配置完成后,重启虚拟机出现license  information  (license not accepted) 截图: 解决方案: 在界 ...

  2. [008] - JavaSE面试题(八):集合

    第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [008] - JavaSE面试题(八):集合 第1问:说一下集合的体系? 单列集合: 双列集合: ...

  3. 手写系列-实现一个铂金段位的 React

    一.前言 本文基于 https://pomb.us/build-your-own-react/ 实现简单版 React. 本文学习思路来自 卡颂-b站-React源码,你在第几层. 模拟的版本为 Re ...

  4. ES6 箭头函数及this

    ES6 箭头函数及this 1.箭头函数 <script type="text/javascript"> //以前定义函数 let fun=function () { ...

  5. Python+Scrapy+Crawlspider 爬取数据且存入MySQL数据库

    1.Scrapy使用流程 1-1.使用Terminal终端创建工程,输入指令:scrapy startproject ProName 1-2.进入工程目录:cd ProName 1-3.创建爬虫文件( ...

  6. poj1182:食物链

    poj1182:食物链 听说是poj中最经典的一道并查集题目.我一做,果然很经典呢!好难啊!!!真的琢磨了很久还弄懂.这道题的重点就在于怎么用并查集表示题目中的关系环. 1. 题干 原题传送门1 原题 ...

  7. Leetcode:530. 二叉搜索树的最小绝对差

    Leetcode:530. 二叉搜索树的最小绝对差 Leetcode:530. 二叉搜索树的最小绝对差 Talk is cheap . Show me the code . /** * Definit ...

  8. 使用ThinkPHP5.0.12连接Mongo数据库的经验

    本地开发环境xamppv3.2.2,ThinkPHP5.0.12版本. 由于之前开发项目时使用的是TP3.2.3+mongo数据库,也是在本地进行的,所以也进行过mongo数据库驱动的配置.详细方法可 ...

  9. Tomcat7+ 弱口令 && 后台getshell漏洞

    打开tomcat管理页面http://192.168.49.2:8080/manager/html,输入弱密码tomcat:tomcat,即可访问后台 先将jsp大马压缩为zip,再将zip后缀改名为 ...

  10. 开源与Saas,如何选择软件?

    随着云计算的发展和普及,在云上使用软件已经成为了主流,为了帮助广大用户理解,我在这里对云上软件的三种主要形态以及如何做出选择做一个简单的分析. 开源免费软件 绝大部分开源软件都是免费的,免费的出发点有 ...