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格式
格式:<c:if test="${ 比較內容 }"
值得注意的是這裡的 “${ 必須相連,中間不能有空格,後邊的 }” 也同樣不能分開
再看幾個小例子:
EL表示式比較字串
和上面的例子類似,現在要迴圈 requestScope 中的 UsersList
依次和 sessionScope 中的 theUserId
做比較 ,重要程式碼如下:
其他的JSTL標籤有些也同樣需要注意格式
如有錯誤歡迎指正!
世界真奇妙~~~