javascript
Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】
- Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
目錄
第3節(jié) Cookie案例
會(huì)話技術(shù)_Cookie_案例_分析
會(huì)話技術(shù)_Cookie_案例_代碼實(shí)現(xiàn)
HTTP狀態(tài)碼500——非法參數(shù)異常
URL編解碼
第4節(jié) JSP改造Cookie案例
JSP_概念
JSP_原理
JSP_腳本
JSP_入門(mén)學(xué)習(xí)
JSP_案例_改造Cookie案例
更改jsp代碼模板
第3節(jié) Cookie案例
會(huì)話技術(shù)_Cookie_案例_分析
cookie
1. 概念:客戶端會(huì)話技術(shù),將數(shù)據(jù)保存到客戶端。
2. 快速入門(mén)
3. 實(shí)現(xiàn)原理
4. cookie的細(xì)節(jié)
?? ?1. 一次可不可以發(fā)送多個(gè)cookie?
?? ?2. cookie在瀏覽器中保存多長(zhǎng)時(shí)間?
?? ?3. cookie能不能存中文?
?? ?4. cookie共享問(wèn)題?
?? ?5. Cookie的特點(diǎn)和作用
? ? 6. 案例:記住上一次訪問(wèn)時(shí)間
? ? ? ? 1. 需求:
? ? ? ? ? ? 1. 訪問(wèn)一個(gè)Servlet,如果是第一次訪問(wèn),則提示:您好,歡迎您首次訪問(wèn)。
? ? ? ? ? ? 2. 如果不是第一次訪問(wèn),則提示:歡迎回來(lái),您上次訪問(wèn)時(shí)間為:顯示時(shí)間字符串
? ? ? ? 2. 分析:
? ? ? ? ? ? 1. 可以采用Cookie來(lái)完成
? ? ? ? ? ? 2. 在服務(wù)器中的Servlet判斷是否有一個(gè)名為lastTime的cookie
? ? ? ? ? ? ? ? 1. 有:不是第一次訪問(wèn)
? ? ? ? ? ? ? ? ? ? 1. 響應(yīng)數(shù)據(jù):歡迎回來(lái),您上次訪問(wèn)時(shí)間為:2018年6月10日11:50:20
? ? ? ? ? ? ? ? ? ? 2. 寫(xiě)回Cookie:lastTime=2018年6月10日11:50:01
? ? ? ? ? ? ? ? 2. 沒(méi)有:是第一次訪問(wèn)
? ? ? ? ? ? ? ? ? ? 1. 響應(yīng)數(shù)據(jù):您好,歡迎您首次訪問(wèn)
? ? ? ? ? ? ? ? ? ? 2. 寫(xiě)回Cookie:lastTime=2018年6月10日11:50:01
? ? ? ? 3. 代碼實(shí)現(xiàn):...
會(huì)話技術(shù)_Cookie_案例_代碼實(shí)現(xiàn)
package cn.itcast.cookie;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; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date;/*** 在服務(wù)器中的Servlet判斷是否有一個(gè)名為lastTime的cookie* 1. 有:不是第一次訪問(wèn)* 1. 響應(yīng)數(shù)據(jù):歡迎回來(lái),您上次訪問(wèn)時(shí)間為:2018年6月10日11:50:20* 2. 寫(xiě)回Cookie:lastTime=2018年6月10日11:50:01* 2. 沒(méi)有:是第一次訪問(wèn)* 1. 響應(yīng)數(shù)據(jù):您好,歡迎您首次訪問(wèn)* 2. 寫(xiě)回Cookie:lastTime=2018年6月10日11:50:01*/@WebServlet("/cookieTest") public class CookieTest extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//設(shè)置響應(yīng)的消息體的數(shù)據(jù)格式以及編碼response.setContentType("text/html;charset=utf-8");//1.獲取所有CookieCookie[] cookies = request.getCookies();boolean flag = false;//沒(méi)有cookie為lastTime//2.遍歷cookie數(shù)組if (cookies != null && cookies.length > 0) {for (Cookie cookie : cookies) {//3.獲取cookie的名稱(chēng)String name = cookie.getName();//4.判斷名稱(chēng)是否是:lastTimeif ("lastTime".equals(name)) {//有該Cookie,不是第一次訪問(wèn)flag = true;//有l(wèi)astTime的cookie//設(shè)置Cookie的value//獲取當(dāng)前時(shí)間的字符串,重新設(shè)置Cookie的值,重新發(fā)送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);System.out.println("編碼前:" + str_date);//URL編碼str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("編碼后:" + str_date);cookie.setValue(str_date);//設(shè)置cookie的存活時(shí)間cookie.setMaxAge(60 * 60 * 24 * 30);//一個(gè)月response.addCookie(cookie);//響應(yīng)數(shù)據(jù)//獲取Cookie的value,時(shí)間String value = cookie.getValue();System.out.println("解碼前:" + value);//URL解碼:value = URLDecoder.decode(value, "utf-8");System.out.println("解碼后:" + value);response.getWriter().write("<h1>歡迎回來(lái),您上次訪問(wèn)時(shí)間為:" + value + "!</h1>");break;}}}if (cookies == null || cookies.length == 0 || flag == false) {//沒(méi)有,第一次訪問(wèn)//設(shè)置Cookie的value//獲取當(dāng)前時(shí)間的字符串,重新設(shè)置Cookie的值,重新發(fā)送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);System.out.println("編碼前:" + str_date);//URL編碼str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("編碼后:" + str_date);Cookie cookie = new Cookie("lastTime", str_date);//設(shè)置cookie的存活時(shí)間cookie.setMaxAge(60 * 60 * 24 * 30);//一個(gè)月response.addCookie(cookie);response.getWriter().write("<h1>您好,歡迎您首次訪問(wèn)!</h1>");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }HTTP狀態(tài)碼500——非法參數(shù)異常
URL編解碼
??
第4節(jié) JSP改造Cookie案例
JSP_概念
JSP:入門(mén)學(xué)習(xí)
1. 概念:
?? ?* Java Server Pages: java服務(wù)器端頁(yè)面
?? ??? ?* 可以理解為:一個(gè)特殊的頁(yè)面,其中既可以指定定義html標(biāo)簽,又可以定義java代碼。
?? ??? ?* 用于簡(jiǎn)化書(shū)寫(xiě)!!!
JSP_原理
JSP:入門(mén)學(xué)習(xí)
1. 概念
2. 原理
?? ?* JSP本質(zhì)上就是一個(gè)Servlet。
??
JSP_腳本
JSP:入門(mén)學(xué)習(xí)
1. 概念
2. 原理
3. JSP的腳本:JSP定義Java代碼的方式
?? ?1. <% ?代碼 %>:定義的java代碼,在service方法中。service方法中可以定義什么,該腳本中就可以定義什么。
?? ?2. <%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類(lèi)的成員位置。
?? ?3. <%= 代碼 %>:定義的java代碼,會(huì)輸出到頁(yè)面上。輸出語(yǔ)句中可以定義什么,該腳本中就可以定義什么。
4. JSP的內(nèi)置對(duì)象
JSP_入門(mén)學(xué)習(xí)
JSP:入門(mén)學(xué)習(xí)
1. 概念
2. 原理
3. JSP的腳本:JSP定義Java代碼的方式
4. JSP的內(nèi)置對(duì)象:
?? ?* 在jsp頁(yè)面中不需要獲取和創(chuàng)建,可以直接使用的對(duì)象
?? ?* jsp一共有9個(gè)內(nèi)置對(duì)象。
?? ?* 今天學(xué)習(xí)3個(gè):
?? ??? ?* request:請(qǐng)求
?? ??? ?* response:相應(yīng)
?? ??? ?* out:字符輸出流對(duì)象。可以將數(shù)據(jù)輸出到頁(yè)面上。和response.getWriter()類(lèi)似
?? ??? ??? ?* response.getWriter()和out.write()的區(qū)別:
?? ??? ??? ??? ?* 在tomcat服務(wù)器真正給客戶端做出響應(yīng)之前,會(huì)先找response緩沖區(qū)數(shù)據(jù),再找out緩沖區(qū)數(shù)據(jù)。
?? ??? ??? ??? ?* response.getWriter()數(shù)據(jù)輸出永遠(yuǎn)在out.write()之前
JSP_案例_改造Cookie案例
JSP:入門(mén)學(xué)習(xí)
html代碼 與 Java代碼 嵌套。
<%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="java.net.URLDecoder" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>itcast</title> </head> <body><%//1.獲取所有CookieCookie[] cookies = request.getCookies();boolean flag = false;//沒(méi)有cookie為lastTime//2.遍歷cookie數(shù)組if (cookies != null && cookies.length > 0) {for (Cookie cookie : cookies) {//3.獲取cookie的名稱(chēng)String name = cookie.getName();//4.判斷名稱(chēng)是否是:lastTimeif ("lastTime".equals(name)) {//有該Cookie,不是第一次訪問(wèn)flag = true;//有l(wèi)astTime的cookie//設(shè)置Cookie的value//獲取當(dāng)前時(shí)間的字符串,重新設(shè)置Cookie的值,重新發(fā)送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);System.out.println("編碼前:" + str_date);//URL編碼str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("編碼后:" + str_date);cookie.setValue(str_date);//設(shè)置cookie的存活時(shí)間cookie.setMaxAge(60 * 60 * 24 * 30);//一個(gè)月response.addCookie(cookie);//響應(yīng)數(shù)據(jù)//獲取Cookie的value,時(shí)間String value = cookie.getValue();System.out.println("解碼前:" + value);//URL解碼:value = URLDecoder.decode(value, "utf-8");System.out.println("解碼后:" + value);%><h1>歡迎回來(lái),您上次訪問(wèn)時(shí)間為:<%=value%></h1><input><%break;}}}if (cookies == null || cookies.length == 0 || flag == false) {//沒(méi)有,第一次訪問(wèn)//設(shè)置Cookie的value//獲取當(dāng)前時(shí)間的字符串,重新設(shè)置Cookie的值,重新發(fā)送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);System.out.println("編碼前:" + str_date);//URL編碼str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("編碼后:" + str_date);Cookie cookie = new Cookie("lastTime", str_date);//設(shè)置cookie的存活時(shí)間cookie.setMaxAge(60 * 60 * 24 * 30);//一個(gè)月response.addCookie(cookie);%><h1>您好,歡迎您首次訪問(wèn)</h1><span></span><%}%><input> </body> </html>更改jsp代碼模板
是日已過(guò),命亦隨減,如少水魚(yú),斯有何樂(lè)。當(dāng)勤精進(jìn),如救頭燃,但念無(wú)常,慎勿放逸。——佛教偈語(yǔ)
總結(jié)
以上是生活随笔為你收集整理的Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Cookie和Session-学习笔记0
- 下一篇: JSP、EL和JSTL-学习笔记01【J