1.开场
当在JSP页面中出现:
<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
的时候,大家有没有发现她和Java中的switch语句很相似呢?是的,switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。
使用的这些标签就是JS标准标签库中的一部分!
在早期的jsp开发中,是使用java代码来控制逻辑和显示的,这样就会给前端开发者带来一些麻烦并且代码的可读性也会降低!对于前端开发人员,她们可能不是很擅长后台开发,那么在开发前端页面的时候怎样在保证开发出漂亮合理的前端页面的同时而又能和后台代码的功能很好的契合呢?前端人员自然是不用过分的学习后端代码,那么,前端开发人员只需要会使用一些前端开发语言(包括JSTL标签库)的时候,就能写出精美的页面而不影响后端开发了!
2.如何使用JSTL
在eclipse中开发的时候,需要使用到jstl.jar、standard.jar两个jar包:
然后在jsp页面代码的开始处将标签库引入到jsp页面当中:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
这样,您就可以使用JSTL了。比如说:
<c:choose>
<c:when test = "${currentUser.flag == 1 }">
<li><a href="${pageContext.request.contextPath }/oestudent!show">考生信息查询</a></li>
<li><a href="#">考生成绩管理</a></li>
<li><a href="#">题目管理</a></li>
<li><a href="#">试卷管理</a></li>
<li><a href="${pageContext.request.contextPath }/oeadmin!preUpdatePassowrd">修改密码</a></li>
<li><a href="javascript:logoutAdmin()">退出系统</a></li>
</c:when>
<c:otherwise>
<li><a href="#">在线考试</a></li>
<li><a href="#">成绩查询</a></li>
<li><a href="${pageContext.request.contextPath }/oestudent!preUpdatePassowrd">修改密码</a></li>
<li><a href="javascript:logout()">退出系统</a></li>
</c:otherwise>
</c:choose>
我写的jsp页面中主页部分导航栏的部分代码,通过在用户登陆的时候为用户添加一个非永久属性flag,在对属性封装的时候使用
@Transient注解
@Transient //@Transient的作用是指定该属性或字段不是永久的。或者说表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.不需要用实体查询,在Dao类中写一个多表查询。
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
这样,加载主页的时候只需要根据flag的值就能判断出当前登陆者的身份是用户还是管理员!
当然了,JSTL中不仅有<c:choose>还有很多标签,具体可在相应的教程网站学习!我平时一般在菜鸟教程中学习http://www.runoob.com/jsp/jsp-jstl.html