- ·上一篇文章:Servlet 异常处理
- ·下一篇文章:Servlet Session 跟踪
Servlet Cookie 处理
ln(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"
#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n" + " <li><b>站点名:</b>:" + request.getParameter("name") + "\n</li>" + " <li><b>站点 URL:</b>:" + request.getParameter("url") + "\n</li>" + "</ul>\n" + "</body></html>"); } /** * @see HttpServlet
#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}编译上面的 Servlet HelloForm,并在 web.xml 文件中创建适当的条目:
<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <!-- 类名 --> <servlet-name>HelloForm</servlet-name> <!-- 所在的包 --> <servlet-class>com.k88.test.HelloForm</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloForm</servlet-name> <!-- 访问的网址 --> <url-pattern>/TomcatTest/HelloForm</url-pattern> </servlet-mapping></web-app>最后尝试下面的 HTML 页面来调用 Servlet。<!DOCTYPE html><html><head><meta charset="utf-8"><title>k88.net(k88.net)</title></head><body><form action="/TomcatTest/HelloForm" method="GET">站点名 :<input type="text" name="name"><br />站点 URL:<input type="text" name="url" /><br><input type="submit" value="提交" /></form></body></html>保存上面的 HTML 内容到文件 /TomcatTest/test.html 中。接下来我们访问http:
//localhost:
8080/TomcatTest/test.html,Gif 演示如下:注意:以上的一些路径需要根据你项目实际路径修改。通过 Servlet 读取 Cookie要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。实例让我们读取上面的实例中设置的 Cookiepackage com.k88.test;import java.io.IOException;import java.io.PrintWriter;import java.net.URLDecoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class ReadCookies */@WebServlet("/ReadCookies")public class ReadCookies extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet
#HttpServlet() */ public ReadCookies() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet
#doGet(HttpServletRequest request, HttpServletResponse response) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie cookie = null; Cookie[] cookies = null; // 获取与该域相关的 Cookie 的数组 cookies = request.getCookies(); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "Delete Cookie Example"; String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"
#f0f0f0\">\n" ); if( cookies != null ){ out.println("<h2>Cookie 名称和值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("name") == 0 ){ cookie.setMaxAge(0); response.addCookie(cookie); out.print("已删除的 cookie:" + cookie.getName( ) + "<br/>"); } out.print("名称:" + cookie.getName( ) + ","); out.print("值:" + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br/>"); } }else{ out.println( "<h2 class=\"tutheader\">No Cookie founds</h2>"); } out.println("</body>"); out.println("</html>"); } /** * @see HttpServlet
#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}编译上面的 Servlet ReadCookies,并在 web.xml 文件中创建适当的条目。尝试运行 http:
//localhost:
8080/TomcatTest/ReadCookies,将显示如下结果:通过 Servlet 删除 Cookie删除 Cookie 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:读取一个现有的 cookie,并把它存储在 Cookie 对象中。使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。把这个 cookie 添加到响应头。实例下面的例子将删除现有的名为 "url" 的 cookie,当您下次运行 ReadCookies 的 Servlet 时,它会返回 url 为 null。package com.k88.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSer
#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n" + " <li><b>站点名:</b>:" + request.getParameter("name") + "\n</li>" + " <li><b>站点 URL:</b>:" + request.getParameter("url") + "\n</li>" + "</ul>\n" + "</body></html>"); } /** * @see HttpServlet
#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}编译上面的 Servlet HelloForm,并在 web.xml 文件中创建适当的条目:
<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <!-- 类名 --> <servlet-name>HelloForm</servlet-name> <!-- 所在的包 --> <servlet-class>com.k88.test.HelloForm</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloForm</servlet-name> <!-- 访问的网址 --> <url-pattern>/TomcatTest/HelloForm</url-pattern> </servlet-mapping></web-app>最后尝试下面的 HTML 页面来调用 Servlet。<!DOCTYPE html><html><head><meta charset="utf-8"><title>k88.net(k88.net)</title></head><body><form action="/TomcatTest/HelloForm" method="GET">站点名 :<input type="text" name="name"><br />站点 URL:<input type="text" name="url" /><br><input type="submit" value="提交" /></form></body></html>保存上面的 HTML 内容到文件 /TomcatTest/test.html 中。接下来我们访问http:
//localhost:
8080/TomcatTest/test.html,Gif 演示如下:注意:以上的一些路径需要根据你项目实际路径修改。通过 Servlet 读取 Cookie要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。实例让我们读取上面的实例中设置的 Cookiepackage com.k88.test;import java.io.IOException;import java.io.PrintWriter;import java.net.URLDecoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class ReadCookies */@WebServlet("/ReadCookies")public class ReadCookies extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet
#HttpServlet() */ public ReadCookies() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet
#doGet(HttpServletRequest request, HttpServletResponse response) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie cookie = null; Cookie[] cookies = null; // 获取与该域相关的 Cookie 的数组 cookies = request.getCookies(); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "Delete Cookie Example"; String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"
#f0f0f0\">\n" ); if( cookies != null ){ out.println("<h2>Cookie 名称和值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("name") == 0 ){ cookie.setMaxAge(0); response.addCookie(cookie); out.print("已删除的 cookie:" + cookie.getName( ) + "<br/>"); } out.print("名称:" + cookie.getName( ) + ","); out.print("值:" + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br/>"); } }else{ out.println( "<h2 class=\"tutheader\">No Cookie founds</h2>"); } out.println("</body>"); out.println("</html>"); } /** * @see HttpServlet
#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}编译上面的 Servlet ReadCookies,并在 web.xml 文件中创建适当的条目。尝试运行 http:
//localhost:
8080/TomcatTest/ReadCookies,将显示如下结果:通过 Servlet 删除 Cookie删除 Cookie 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:读取一个现有的 cookie,并把它存储在 Cookie 对象中。使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。把这个 cookie 添加到响应头。实例下面的例子将删除现有的名为 "url" 的 cookie,当您下次运行 ReadCookies 的 Servlet 时,它会返回 url 为 null。package com.k88.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSer
Servlet Cookie 处理