【问题标题】:How to read value of three cookies using JSTL?如何使用 JSTL 读取三个 cookie 的值?
【发布时间】:2014-02-27 05:11:40
【问题描述】:

我有三个cookie,其中两个用于保存用户的详细信息(名称和id),另一个用于保存用户的类型。我需要根据从其中一个 cookie 中检索到的用户类型显示特定消息。

我有以下工作代码,但它有点复杂,我想知道是否有任何有效的方法来做到这一点。

<c:forEach items="${cookie}" var="IdCookie">
     <c:if test="${IdCookie.key == 'UserID'}">   << if UserID cookie is found

            <c:forEach items="${cookie}" var="nameCookie">

               <c:if test="${nameCookie.key == 'User'}"> << if User cookie is found

                      <p>${IdCookie.value.value} &nbsp; ${nameCookie.value.value}</p>
                      <c:forEach items="${cookie}" var="typeCookie">                                     
                                <c:if test="${typeCookie.key == 'Type'}"> << if Type cookie is found

                                     <c:if test="${typeCookie.value == 'One'}">
                                         <p>,Your type is one </p>
                                     </c:if>
                                     <c:if test="${typeCookie.value == '0'}">
                                         <p>,Your type is NOT one </p>
                                      </c:if>

                                 </c:if>

                      </c:forEach>
               </c:if>

             </c:forEach>
     </c:if>

 </c:forEach>

输出

   Cookies' values >> 1 Alex 0
   output >> 1 Alex,Your type is Not one 
   Cookies' values >>  1 Jack One
   output >> 1 Jack,Your type is one 

【问题讨论】:

  • 第一件事是为输出的每个部分设置单独的 for 循环,以使其更简单。

标签: jsp cookies jstl


【解决方案1】:

Getting cookie in JSP

您可以通过这种方式使其变得更简单:

<p>${cookie['UserId'].value} ${cookie['User'].value}, 
<c:if test="${cookie['Type'].value == 'One'}">
  ,Your type is one
</c:if>
<c:if test="${cookie['Type'].value == '0'}">
  ,Your type is NOT one
</c:if></p>

使用三元运算符 (?:) 使其更简单,留给读者练习 :)。

如果要先检查cookie是否存在,看这个:Check if Cookie exists with JSP EL

所以你可以这样做:

<c:if test="${fn:contains(header.cookie, 'User=') and fn:contains(header.cookie, 'Type=') and fn:contains(header.cookie, 'UserId=')}">

当这变得复杂时,我建议将它包装在一个 bean 中。

【讨论】:

  • 非常感谢,但是在显示 Type cookie 的值之前需要确保这些 UserID 和 User cookie 存在。
  • userId 和用户 cookie 也显示 javax.servlet.http.Cookie@29b3d3eas。
猜你喜欢
  • 2016-08-10
  • 2023-03-17
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2010-10-16
相关资源
最近更新 更多