The JSP Files (part 6): State Of Grace - What's In A Name? (
Page 6 of 9 )
Once you've understood these two fundamental techniques, the rest of the
code should be simple to decipher. If a cookie is found, the counter
variable is incremented, and the setValue() method is used to write a new
value to the cookie; this counter variable is then displayed on the page.
If a cookie is not found, it implies that this is the user's first visit to
the page (or a visit made after a previous cookie has expired); a new
cookie is set and an appropriate message displayed.
Again, since this example deals with numbers rather than strings,
innumerable contortions are required to convert the string value in the
cookie to a number, increment it, and then convert it back to a string for
storage in the cookie.
Here's another example, this one a simple form. Enter your name and submit
the form - a cookie will be created containing the name you entered. When
you next visit the page, your name will be automatically filled in for you.
<%
// form.jsp
// declare some variables
Cookie thisCookie = null;
// the cookie you want
String cookieName = "username";
int cookieFound = 0;
String username = "";
// get an array of all cookies available on client
Cookie[] cookies = request.getCookies();
// iterate through array looking for your cookie
for(int i=0; i<cookies.length; i++)
{
thisCookie = cookies[i];
if (cookieName.equals(thisCookie.getName()))
{
cookieFound = 1;
break;
}
}
// if found
if(cookieFound == 1)
{
// get the counter value
username = thisCookie.getValue();
}
%>
<html>
<head>
<basefont face="Arial">
</head>
<body>
<form action="login.jsp" method="post">
<table>
<tr>
<td>Your name</td>
<td><input type=text name=username value="<%= username %>"> <input
type="Submit" value="Click me"></td>
</tr>
</table>
</form>
</body>
</html>
This is the initial login form, "form.jsp" - as you can see, it checks for
the presence of a cookie, and uses it to fill in the account username if
available.
When the form is submitted, "login.jsp" is called to process the data
entered into the form; it will also set cookie attributes appropriately.
<%
// login.jsp
// get values from form
String username = request.getParameter("username");
// create a new cookie to store the username
Cookie alpha = null;
alpha = new Cookie("username", username);
alpha.setMaxAge(300);
alpha.setPath("/");
// send it to client
response.addCookie(alpha);
%>
<html>
<head>
<basefont face="Arial">
</head>
<body>
Get lost, <b><%= username %></b>!
</body>
</html>
Simple, huh?