`
onehao
  • 浏览: 13427 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Servlet与JSP核心编程 ---- 9

阅读更多

8.11 使用cookie记录用户的偏好

 

cookie最常用的应用之一就是用来记录用户的偏好,对于简单的用户设置,可以直接将用户偏好存储在cookie中,对于更为复杂的应用,一般在cookie中存储唯一的用户标识,而将实际的偏好存储在数据库中。

 

• RegistrationForm servlet

– 使用cookie的值预先填写表单的字段

– 如果未找到相应的cookie则使用默认值

– 课程的后面将会在JSP中重做这项工作

• Registration servlet

– 基于接收到的请求参数创建cookie

– 如果得到所有的参数则显示这些值

– 如果任何参数缺失,则重定向到表单

 

package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Servlet that displays an HTML form to collect user's
* first name, last name, and email address. Uses cookies
* to determine the initial values of each of those
* form fields.
*/public class RegistrationForm extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String actionURL =
"/servlet/coreservlets.RegistrationServlet";
String firstName =
CookieUtilities.getCookieValue(request, "firstName", "");
String lastName =
CookieUtilities.getCookieValue(request, "lastName", "");
String emailAddress =
CookieUtilities.getCookieValue(request, "emailAddress",
"");
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
String title = "Please Register";
out.println
(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<CENTER>\n" +
"<H1>" + title + "</H1>\n" +
"<FORM ACTION=\"" + actionURL + "\">\n" +
"First Name:\n" +
" <INPUT TYPE=\"TEXT\" NAME=\"firstName\" " +
"VALUE=\"" + firstName + "\"><BR>\n" +
"Last Name:\n" +
" <INPUT TYPE=\"TEXT\" NAME=\"lastName\" " +
"VALUE=\"" + lastName + "\"><BR>\n" +
"Email Address: \n" +
" <INPUT TYPE=\"TEXT\" NAME=\"emailAddress\" " +
"VALUE=\"" + emailAddress + "\"><P>\n" +
"<INPUT TYPE=\"SUBMIT\" VALUE=\"Register\">\n" +
"</FORM></CENTER></BODY></HTML>");
}
}

 

 

package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Servlet that processes a registration form containing
* a user's first name, last name, and email address.
* If all the values are present, the servlet displays the
* values. If any of the values are missing, the input
* form is redisplayed. Either way, the values are put
* into cookies so that the input form can use the
* previous values.
*/
public class RegistrationServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
boolean isMissingValue = false;
String firstName = request.getParameter("firstName");
if (isMissing(firstName)) {
firstName = "Missing first name";
isMissingValue = true;
}
String lastName = request.getParameter("lastName");
if (isMissing(lastName)) {
lastName = "Missing last name";
isMissingValue = true;
}
String emailAddress = request.getParameter("emailAddress");
if (isMissing(emailAddress)) {
emailAddress = "Missing email address";
isMissingValue = true;
}
Cookie c1 = new LongLivedCookie("firstName", firstName);
response.addCookie(c1);
Cookie c2 = new LongLivedCookie("lastName", lastName);
response.addCookie(c2);
Cookie c3 = new LongLivedCookie("emailAddress",
emailAddress);
response.addCookie(c3);
String formAddress =
"/servlet/coreservlets.RegistrationForm";
if (isMissingValue) {
response.sendRedirect(formAddress);
} else {
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
String title = "Thanks for Registering";
out.println
(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<CENTER>\n" +
"<H1 ALIGN>" + title + "</H1>\n" +
"<UL>\n" +
" <LI><B>First Name</B>: " +
firstName + "\n" +
" <LI><B>Last Name</B>: " +
lastName + "\n" +
" <LI><B>Email address</B>: " +
emailAddress + "\n" +
"</UL>\n" +
"</CENTER></BODY></HTML>");
}
}
/** Determines if value is null or empty. */
private boolean isMissing(String param) {
return((param == null) ||
(param.trim().equals("")));
}
}

 

小结

• cookie涉及将名称/值对从服务器发送到浏览器

,并在之后访问相同的页面、站点或域时返回。

• 我们可以

– 跟踪会话(使用高层API)

– 对安全性要求较低的网站,使用cookie可以避免用户

每次都需要登录

– 根据用户的不同定制网站

– 有选择地投放内容或广告

• 设置cookie

– 调用Cookie的构造函数,设置时效,调用

response.addCookie

• 读取cookie

– 调用request.getCookie,检查得到的结果是否为null,

在数组中查找匹配的名称,使用相关的值

分享到:
评论

相关推荐

    Servlet与JSP核心编程(第二版).pdf

    Servlet与JSP核心编程:综合介绍Servlet与JSP

    Servlet与JSP核心编程(第二版)

    《Servlet与JSP核心编程(第二版)》是一本针对Java Web开发的权威指南,主要聚焦于Servlet和JSP这两个核心技术。Servlet是Java平台上的服务器端组件,用于处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页...

    Servlet与JSP核心编程

    《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...

    Servlet与JSP核心编程(第2卷 第2版)

    《Servlet与JSP核心编程(第2卷 第2版)》这本书深入讲解了这两项技术,帮助开发者理解并掌握其核心概念、用法以及最佳实践。 1. **Servlet概述** - Servlet是Java平台上的一个接口,它定义了服务器端程序如何响应...

    Servlet与JSP核心编程第二版

    Servlet与JSP核心编程第二版 PDF文件 高清,内容通俗易懂.

    Servlet与JSP核心编程第二版源代码

    《Servlet与JSP核心编程第二版》这本书深入浅出地讲解了这两个技术,涵盖了从基础到高级的主题,包括但不限于: 1. **Servlet生命周期**:Servlet的创建、初始化、服务和销毁过程,以及如何通过配置`web.xml`文件或...

    servlet与jsp核心编程

    servlet与jsp核心编程,还是免费给大家下载,需要的可以下来看看

    Servlet与JSP核心编程第二版5

    ### Servlet与JSP核心编程第二版5:关键技术与实践解析 #### 一、Servlet概述与核心技术 ##### 1.1 Servlet简介 Servlet 是 Java 平台的一种服务器端技术,用于扩展应用程序的功能。它是一个轻量级的应用程序组件...

    Servlet与JSP核心编程带完整书签

    《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...

    Servlet与JSP核心编程第二版(含书签)

    ### Servlet与JSP核心编程知识点概述 #### 一、Servlet基础概念 - **Servlet定义**:Servlet是一种Java程序,用于扩展服务器的功能。它提供了一种方法来创建动态Web页面,并可以处理客户端请求。 - **Servlet生命...

    javax.servlet.jsp-api-2.3.2-b01.jar.zip

    Servlet API是Java Web开发的核心组件,它定义了服务器端Java应用程序(Servlet)与Web服务器之间的接口规范。Servlet API提供了处理HTTP请求和响应的方法,允许开发人员创建能够接收和处理来自客户端(如浏览器)的...

    servlet 与jsp核心编程 第二版中文版 第3部分

    本书由Marty Hall,Larry Brown著 张学良译 清华大学出版社出版 原书有47M由于上传文件大小限制分为3部分,本人不是黑人,仅仅在最后一个部分才收取4分资源分

    Servlet与JSP核心编程(第二版 源码

    《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...

    javax.servlet---jsp-api jar包

    `javax.servlet` 和 `jsp-api` 是Java服务器端编程的重要组成部分,主要用于构建动态Web应用程序。这两个API是Java Servlet和JavaServer Pages(JSP)技术的核心接口和类库,由Java Community Process (JCP)制定并由...

    servlet与jsp核心编程*(第二版)卷二 源代码集合

    本书《Servlet与JSP核心编程(第二版)卷二》的源代码集合,为读者提供了丰富的实践素材,有助于深入理解这两种技术的内部工作原理。 Servlet是一种Java API,用于扩展服务器的功能,处理HTTP请求并生成响应。它...

    《Servlet与JSP核心编程(第1卷 第2版)》

    综上所述,《Servlet与JSP核心编程(第1卷 第2版)》这本书很可能是深入探讨了Servlet与JSP的基础理论、核心技术及其实战应用的一本书籍。对于想要学习或深入理解这些技术的人来说,这本书将是非常有价值的资源。

    Servlet与JSP核心编程 第1卷 + 第2卷

    《Servlet与JSP核心编程》(第2版)叙述详尽,条理清晰。对于初学者来说是一本不可多得的入门书籍,经验丰富的Servelet和JSP开发人员也可以通过阅读《Servlet与JSP核心编程》(第2版)得到巩固和提高。

    美河图书提供.Servlet与JSP核心编程第二版_带目录

    ### Servlet与JSP核心编程第二版知识点概览 #### 一、Servlet基础知识 - **Servlet概念**:Servlet是一种运行在服务器端的小程序,主要用于处理客户端请求并生成动态Web页面或数据。Servlet是Java Web开发的基础...

Global site tag (gtag.js) - Google Analytics