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教程一:创建Hello world来理解XAML的内容及编译

    在实际的WPF开发中遇到很多再用Winform写法来写WPF的开发人员,很多时候项目进度延期.出现非必要的BUG等等.大多是因为开发人员虽然是再写WPF. 但是没有好好的学过WPF,就导致无法发挥出W ...

  2. mysql 索引介绍与运用

    索引 (1)什么是索引? 是一种提升查询速度的 特殊的存储结构. 它包含了对数据表里的记录的指针,类似于字典的目录. 当我们添加索引时会单独创建一张表来去存储和管理索引,索引比原数据大,会占用更多的资 ...

  3. SEO入门一篇就够-SEO教程

    大家口中的SEO(Search Engine Optimization),中文翻译为"搜索引擎优化",从本质上来说,其实就是如何迎合搜索引擎的规则,使得网站在搜索结果中能有更好的排 ...

  4. (精)题解 guP2860 [USACO06JAN]冗余路径Redundant Paths

    (写题解不容易,来我的博客玩玩咯qwq~) 该题考察的知识点是边双连通分量 边双连通分量即一个无向图中,去掉一条边后仍互相连通的极大子图.(单独的一个点也可能是一个边双连通分量) 换言之,一个边双连通 ...

  5. SpringMVC中@Controller和@RequestMapping用法

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  6. lucene 入门简介

    Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目. ...

  7. python开发,注意事项

    提高python代码运行效率 1.使用生成器,节约内存.[一边循环一边计算的机制,称为生成器:generator] 例: .如何创建生成器 1.只要把一个列表生成式的[]改成(),就创建了一个gene ...

  8. Bootstrap 树形列表与右键菜单

    Bootstrap 树形列表与右键菜单 介绍两个Bootstrap的扩展 Bootstrap Tree View 树形列表 jQuery contextMenu 右键菜单 Demo采用CDN分发,直接 ...

  9. VS2013导入新项目时,连接数据库问题。

    用VS2013导入项目进行学习时,导入数据库会报数据库登陆不上的错误... 解决方法: 1.将其自带的数据库连接先删除,使用自己的sql server数据库将项目数据库先附加进去, 2.附加进去后,再 ...

  10. thinkphp5 原生sql带分页方法

    1.先在顶部引入use think\paginator\driver\Page; 2.使用下例代码 $pageNumber = input('page')? input('page'):'0';//客 ...