在Servlet中向客户端写Cookie信息
生活随笔
收集整理的這篇文章主要介紹了
在Servlet中向客户端写Cookie信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
應用Servlet API中提供的Cookie類,用戶把表單信息提交給Servlet后,在Servlet中獲取用戶請求的信息并添加到Cookie對象中,再通過HttpServletResponse對象把Cookie信息返回給客戶端,在JSP頁面中通過request內置對象來獲取客戶端的Cookie信息
在JSP中使用request對象獲取的是一個Cookie對象的數組,需要循環中便利所有Cookie對象,并通過Cookie對象的getName()方法查找所有Cookie對象的名稱,然后根據找到的Cookie名稱獲得Cookie對象中的值
- getComment()/setComment(String purpose) 獲取/設置Cookie的注釋
- getDomain()/setDomain(String pattern)
獲取/設置Cookie適用的域。一般,Cookie只返回給與發送它的服務器名字完全相同的服務器 - getMaxAge()/setMaxAge(int expiry) 獲取/設置Cookie過期之前的時間,以秒為單位
- getName()/setName(String name) 獲取/設置Cookie的名字
- getValue()/setValue(String newValue) 獲取/設置Cookie的值
- getPath()/setPath(String uri) 獲取/設置Cookie適用的路徑
創建Index.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="java.net.URLDecoder"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>Cookie</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script type="text/javascript">function a(){var str="12345.6";var s="";for(var i=0;i<str.length;i++){if(str.charCodeAt(i)>=48&&str.charCodeAt(i)<=57){s=s+str[i];}}alert(isNaN(12345));if(s.length<str.length){//alert(isNa);}}</script><style type="text/css">table{font-size:14px;font-family: 隸書;color:gray;border: 1px green solid;}input{font-size:14px;font-family: 隸書;color:gray;}</style></head><body "a()"><%String userName=null; //用于保存從cookie中讀取出的用戶名Cookie cookieArr[] = request.getCookies(); //獲取客戶端的所有Cookieif(cookieArr!=null&&cookieArr.length>0){for(Cookie c:cookieArr){if(c.getName().equals("userName")){ //如果Cookie中有一個名為userName的CookieuserName = URLDecoder.decode(c.getValue(),"UTF-8"); //獲得此cookie的值 }}}%><form action="cookieservlet" method="post"><table align="center"><tr><td>用戶名:</td><td><input type="text" name="name" value="<%if(userName!=null){out.print(userName);}%>"/></td></tr><tr><td>密碼:</td><td><input type="password" name="pwd" /></td></tr><tr><td colspan="2"><input type="submit" value="登 錄" /></td></tr></table></form></body> </html>新建CookieServlet的Servlet類,doPost()方法中獲取用戶信息,添加到Cookie對象中并保存到客戶端
public class CookieServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String name = request.getParameter("name"); //獲得用戶名name = java.net.URLEncoder.encode(name, "UTF-8"); //將用戶名進行格式編碼//創建一個Cookie對象,并將用戶名保存到Cookie對象中Cookie nameCookie = new Cookie("userName", name);//設置Cookie的有效時間,單位為秒nameCookie.setMaxAge(60);//通過response的addCookie()方法將此Cookie對象保存到客戶端瀏覽器的Cookie中response.addCookie(nameCookie);request.getRequestDispatcher("success.jsp").forward(request, response);}}web.xml文件配置
<servlet><servlet-name>CookieServlet</servlet-name><servlet-class>com.cn.zj.Servlet.CookieServlet</servlet-class></servlet><servlet-mapping><servlet-name>CookieServlet</servlet-name><url-pattern>/cookieservlet</url-pattern></servlet-mapping>總結
以上是生活随笔為你收集整理的在Servlet中向客户端写Cookie信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Servlet中处理表单提交的数据
- 下一篇: 在Servlet中将JavaBean对象