JSTL和EL表达式字符串比较

自己练习的时候,要比较sessionScope域中某值和requestScope域中某值是否相等,百度无果。就在自己马上要放弃的时候,再一次调试的时候发现了其中的端倪。

需求很简单,用户登录成功之后显示数据库中所有的用户信息,自己又给加了一个,就是在显示的时候可以把这个刚刚登陆的用户信息加红显示,以便区分。

我把此登陆用户的id保存到了sessionScope中,key是theUserId。遍历数据库将里边的数据存放到ArrayList中,再把这个ArrayList保存到requestScope中。在jsp界面遍历此ArrayList,把每次遍历到的UserId与存放在sessionScope中的theUserId做比较,如果相等,就加红显示。问题也就出现在这里!

先稍稍解释一下jsp四大域对象和Servlet三大域,对于我这种菜鸟来说还是很容易分不清的。

jsp四大域对象与Servlet三大域对象

什么是域对象?什么是域?

域对象就是可以存取数据的对象,我们都知道JSP的九大内置对象,而只有四个对象称为域对象,他们把数据都存放在各自的域(本质是Map)中
- pageContext(类javax.servlet.jsp.PageContext的实例)————————————>pageScope
- request(类javax.servlet.http.HttpServletRequest的实例)————————————>requestScope
- session(类javax.servlet.http.HttpSession的实例)————————————>sessionScope
- application(类javax.servlet.ServletContext的实例)————————————>applicationScope

而Servlet只有除pageContext之外的其他三个域对象,获取方法如下
request直接可以得到,由tomcat服务器作为值传递给server()方法供我们直接使用
session对象可以通过request.getSession()得到,HttpSession session = request.getSession();
最后一个application对象,ServletContext application = this.getServletContext();

这些域对象都有Object getAttribute(String para)void setAttribute(String para,Object obj) 两个方法

要命的JSTL格式

格式:
值得注意的是这里的 “${ 必须相连,中间不能有空格,后边的 }” 也同样不能分开

再看几个小例子:
JSTL和EL表达式字符串比较_第1张图片

JSTL和EL表达式字符串比较_第2张图片

JSTL和EL表达式字符串比较_第3张图片

EL表达式比较字符串

和上面的例子类似,现在要循环 requestScope 中的 UsersList 依次和 sessionScope 中的 theUserId 做比较 ,重要代码如下:

JSTL和EL表达式字符串比较_第4张图片

其他的JSTL标签有些也同样需要注意格式

如有错误欢迎指正!

世界真奇妙~~~

你可能感兴趣的:(JSTL和EL表达式字符串比较)