由于自己的主页是采用jsp来实现动态页面,在网上也找不到什么好方法,所以就根据自己学的来琢磨琢磨来实现想要的 登陆后隐藏登陆按钮 等操作。
在实现代码之前,需要了解JSTL的一些概念。
JSTL的概念
从JSP1.1规范开始,JSP就支持使用自定义标签,这不仅可以大大降低JSP页面的复杂度,还增强了代码的重用性。但是同一功能的标签由不同的Web应用厂制定可能是不同的,这就导致市面上出现了很多功能相同的标签,让网页制作者无从选择。所以为了解决问题,Sun公司就制定了一套标准标签库JSTL。
它由5个不同功能的标签库共同组成,分别是:
- Core(核心标签库)
- I18N(国际化/格式化标签库)
- SQL(数据库标签库)
- XML(操作XML文档的标签库)
- Functions(函数标签库)
注意:使用不同标签时需要在JSP中引入不同的库
我们这里使用到的是核心标签库Core的内容,如果对其他标签库感兴趣的话可以自行搜索,太啰嗦也不是我的风格。|ω・)
我们要用到的里面的<c:if>标签,它有3个属性,具体如下:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
如果想要了解更多相关标签的话可以看下面这位老哥的文章。
https://blog.csdn.net/weixin_42078450/article/details/86764362
代码步骤
- 在Web应用的WEB-INF/lib目录下导入JSTL的jstl.jar和standard.jar。
要使用前,需要使用taglib指令导入Core标签库,具体代码如下。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 在jsp页面选择自己想要的位置插入
<c:if test="${user.username!=null}">
<li class="menuout"><a href="personal"><b>${user.username}</b></a></li>
</c:if>
<%--检测用户名是否存在--%>
<c:if test="${user.username==null}">
<li class="menuout"><a href="login.html"><b>登录</b></a></li>
</c:if>
<li class="menuout"><a href="editor.html"><b>发表</b></a></li>
<li class="menuout100"> <a href="contact.jsp"><b>联系我们</b></a></li>
<li class="menuout"><a href="logout"><b>注销</b></a></li>
但是在这之前,别忘了在Servlet里将user返回值保存到session当前会话。
request.getSession().setAttribute("user",user);
效果图
登陆前
登陆后
总结
与其盲目搜方法,还不如在实现之前理清思路,清楚自己想要的功能,了解方法定义直到弄懂,再来尝试,可能会有不一样的感觉和收获哦。
开始写博客也是为了通过分享,让自己掌握的更加巩固。
如果有什么不足或者改进之处还请大佬指出。