Cookie Examples



2. Cookies

It is sometimes necessary to use cookies for storing information on the client side. A cookie can be accessed from within an element, if the element definition contains an incookie or outcookie tag. An incookie is a cookie that can be read, and an outcookie can obviously be set.

Let’s show how it works with a small example where we store the time when the user last visited a certain page. This is a typical real world example, and could be used for example to determine which news items are new since the last visit on a news site.

If we call our cookie last_visit and want to let the element NewsList get and set the cookie, the element definition would look like this:

Example 9.4. Defining an element with a cookie

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE element SYSTEM “/dtd/element.dtd”>

<element implementation=”NewsList”>
<incookie name=”last_visit”/>

<outcookie name=”last_visit”/>
</element>

Now that the element is allowed to access the cookie, we can write the Java code to read and write the cookie.

Example 9.5. NewsList.java: Using cookies from Java

package org.rifers.elephant.elements;

import com.uwyn.rife.engine.Element;

import javax.servlet.http.Cookie;
import java.util.*;
import java.text.*;

public class NewsList extends Element
{
public void showNews(Date lastVisited)
{
// Print new news items
}

public void processElement()
{
Date date = Calendar.getInstance().getTime();

if (hasCookie(“last_visit”))
{
Cookie cookie = getCookie(“last_visit”);

try
{
Date last = DateFormat.getInstance().parse(cookie.getValue());
showNews(last);
}
catch (ParseException e)
{
// Handle exception
}
}
else
{
showNews(null);
}

setCookie(new Cookie(“last_visit”,
DateFormat.getInstance().format(date)));
}
}

Random Posts

  • Difference between session.save() , session.saveOrUpdate() and session.persist()
  • How many EJB Objects are created for a Bean
  • Difference between session.save() and session.saveOrUpdate()
  • What is unicode System
  • Final Variables and Methods

Post a Comment