jstl实现cookie

原创 2007年09月24日 02:45:00

最近有个公司新招的毕业生,问cookie怎么实现,我告诉他 网上很多,他说不想用那种,因为在jsp中内嵌入太多的

<%

%>,

这种结构,是jsp不提倡的,一想说的也对,x想利用了jstl标签库实现了cookie

因为jstl有对cookie进行提取的标签,但是没有设置cookie的标签

所以我们必须写一个javabean,在javabean里封装了cookie,然后通过设置这个javabean的属性来间接的达到设置cookie的属性<jsp:useBean>,我只在cookie设置了两个属性(username  和 password)

取得cookie时,可以利用EL表达式来完成,总

以下为核心的代码

设置cookies部分 利用了<jsp:useBean ........> 和 <jsp:setProperty    ........>

<jsp:useBean id = "ck_username" class = "org.com.jsp.CookieBean" />
 <jsp:setProperty name="ck_username" property="name" value="username"/>
 <jsp:setProperty name="ck_username" property="value" value="${param.username}"/>
 <jsp:setProperty name="ck_username" property="maxAge" value="<%= 14*24*60*60%>"/>
 <jsp:setProperty name="ck_username" property="cookieHeader" value="<%= response%>"/>

<jsp:useBean id = "ck_password" class = "org.com.jsp.CookieBean" />
 <jsp:setProperty name="ck_password" property="name" value="password"/>
 <jsp:setProperty name="ck_password" property="value" value="${param.password}"/>
 <jsp:setProperty name="ck_password" property="maxAge" value="<%= 14*24*60*60%>"/>
 <jsp:setProperty name="ck_password" property="cookieHeader" value="<%= response%>"/>

提取cookies部分 利用了EL表达式

 <c:forEach items="${pageContext.request.cookies}" var="c">
  <c:if test="${fn:contains(c.name,'username')}">
    <c:set var="username" value="${c.value}"/>
  </c:if>
  <c:if test="${fn:contains(c.name,'password')}">
    <c:set var="password" value="${c.value}"/>
  </c:if>
</c:forEach>

html部分

<form name="login" action="redirect.jsp">
  用户名:<input type="text" name="username" value="<c:out value="${username}"/>"><br/>
  密码:<input type="password" name="password" value="<c:out value="${password}"/>"><br/>
  <input type="submit" value="login">
</form>

CookieBean代码

package org.com.jsp;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Cookie;

public class CookieBean {

  private Cookie cookie = null;

public CookieBean(){}

//set the cookie name
public void setName(String name){

    if (name == null || (name.equals("")))
        throw new IllegalArgumentException("Invalid cookie name set in: "+getClass().getName());

    cookie = new Cookie(name,""+new java.util.Date().getTime());
}

//set the cookie value
public void setValue(String value){

 if (value == null || (value.equals("")))
        throw new IllegalArgumentException("Invalid cookie value set in: "+getClass().getName());

    if (cookie != null)
        cookie.setValue(value);

}

public void setMaxAge(int maxAge){

    if (cookie != null)
        cookie.setMaxAge(maxAge);

}

public void setPath(String path){

 if (path == null || (path.equals("")))
        throw new IllegalArgumentException("Invalid cookie path set in: "+getClass().getName());

    if (cookie != null)
        cookie.setPath(path);
}

public void setCookieHeader(HttpServletResponse response){

    if (response == null )
        throw new IllegalArgumentException("Invalid HttpServletResponse set in: "+getClass().getName());
    if (cookie != null)
        response.addCookie(cookie);
}

public String getName(){

    if (cookie != null)
       return cookie.getName();
    else
       return "unavailable";

       }

public String getValue(){

    if (cookie != null)
       return cookie.getValue();
    else
       return "unavailable";

       }

public String getPath(){

    if (cookie != null)
       return cookie.getPath();
    else
       return "unavailable";

       }


}

JSTL JSP页面判断某个cookie的值和读取值....

这样可以直接进行cookie的读取和比值
  • ufo2910628
  • ufo2910628
  • 2014年06月17日 19:11
  • 5990

在jsp中怎么使用Cookie?el表达式中获取cookie的问题

在jsp中怎么使用Cookie? 2006-10-04 01:27diqigan0623 | 分类:其他编程语言 | 浏览21873次 初学jsp,不清楚cookie的使用方法,希望高手指点一下! ...
  • tang898
  • tang898
  • 2013年12月14日 23:30
  • 6529

使用EL表达式获取cookie和cookie中的信息

首先cookie是EL表达式的内置对象可以直接拿来使用 ${cookie.name}将获得对应cookie的对象,比如我们用jsp将一段cookie发送给客户端。 Cookie c...
  • w405722907
  • w405722907
  • 2017年06月23日 11:39
  • 1664

JSTL标签的详细解释

(尊重劳动成果,转载请注明出处:http://blog.csdn.NET/qq_25827845/article/details/53311722  冷血之心的博客) 一、JSTL标签介绍 ...
  • IT_COOKIE_SAM
  • IT_COOKIE_SAM
  • 2017年02月17日 21:55
  • 462

基于cookie的聊天代码,jstl实现.

  • 2010年06月05日 08:49
  • 259KB
  • 下载

在jsp中怎么使用Cookie?el表达式中获取cookie的问题

在jsp中怎么使用Cookie? 2006-10-04 01:27diqigan0623 | 分类:其他编程语言 | 浏览21873次 初学jsp,不清楚cookie的使用方法,希望高手指点一下! ...
  • tang898
  • tang898
  • 2013年12月14日 23:30
  • 6529

JSTL标签集合遍历总结

JSTL标签遍历总结 看了本篇文章,前端集合的遍历,你基本上就可以搞定90%了。...
  • liu765023051
  • liu765023051
  • 2015年01月24日 11:30
  • 2640

jstl <c:foreach>标签进行数据遍历

${key.id} ${key.name } ${key.introduction }
  • u012997311
  • u012997311
  • 2016年07月21日 13:08
  • 4125

JSTL之forEach的使用详解(简单的技术说得很详细)

在使用JSTL的核心标签库forEach之前,首先需要在JSP中通过taglib指令引入核心标签库: 一、基本使用 标签用于遍历集合中的对象,并能重复执行标签主体内容。它的基本用法如下所示: ...
  • Jerome_s
  • Jerome_s
  • 2015年04月06日 09:41
  • 1256

idea配置JSTL环境

idea配置JSTL环境
  • he729164860
  • he729164860
  • 2017年05月30日 23:17
  • 509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jstl实现cookie
举报原因:
原因补充:

(最多只允许输入30个字)