JAVA遇見HTML--JSP篇
1.Javaweb
①Web應用程式是一種可以通過Web訪問的應用程式。
②JavaWeb簡介:
靜態網頁:
表現形式:網頁中的內容是固定的、不會更新。
不一定沒有動態元素。
所需技術:HTML、CSS。
動態網頁:
表現形式:網頁中的內容通過程式動態顯示、自動更新(從資料庫讀出的)。
動態網頁的動態指的是能與使用者進行互動,比如登入時輸入正確的使用者名稱和密碼,系統會提示登入成功。
所需技術:HTML、CSS、資料庫、高階語言(Java、PHP)、JS、XML等。
2.Tomcat
①tomcat伺服器,常見的web伺服器。可以解析常見的標籤語言。
是當今最流行的Servlet/JSP容器,免費、成熟、開源。
②WEB-INF是Java的WEB應用的安全目錄。客戶端無法訪問此目錄裡的網頁檔案,只有伺服器端才能訪問。
index.jsp:預設被第一個訪問的頁面(在一個專案中),也可通過左下圖方式修改。使用localhost:埠號訪問。
Sources:可以管理專案的目錄結構,並且能通過不同的顏色標識資料夾的用途!(有時候class類執行不起來,用之解決問題)
③修改虛擬路徑(即本地訪問網頁的URL):Run--Edit Configurations--Deployment...然後修改Application context修改即可。
④一個Tomcat伺服器上可以執行多個例項應用,但是每個例項應用之間要用不同的埠。
預設情況下,Tomcat的埠號為8080。
與其他伺服器埠造成衝突,可修改預設埠號,在Tomcat--conf--server.xml檔案中,將其中的8080更改成其他的埠號。
<Connector port="8080"
......
/>
3.JSP頁面組成
JSP:全名為Java Server Pages,是一個簡化的Servlet設計,JSP和Servlet都是在服務端執行的。
它實現了在Java當中使用HTML標籤。
JSP是一種動態網頁技術標準,也是JavaEE的標準。
其中:
①指令:
page指令:通常位於JSP頁面的頂端,同一個頁面可以有多個page指令。
<%@page 屬性1="屬性值1" 屬性2="屬性值1,屬性值2"...%>
language:指定JSP頁面使用的指令碼語言,預設值是java。
import:通過該屬性來引用指令碼語言中使用到的類檔案,預設值無。(即匯入包)
contentType:用來指定JSP檔案生成的頁面所採用的編碼方式,預設值是text/html,ISO-8859-1。
ISO-8859-1預設是英文,頁面中不能出現中文。若是輸入中文,會出現亂碼。
contentType的charset是指伺服器發給客戶端時的輸出內容編碼,更常用。
pageEncoding是jsp檔案本身的編碼。
include指令:將一個外部檔案嵌入到當前Jsp檔案中,同時解析這個頁面中的JSP語句。
taglib指令:使用標籤庫定義新的自定義標籤,在JSP頁面中啟用定製行為。
②註釋:
HTML的註釋:
<!-- 我是註釋,客戶端在原始碼裡可以看見我。 -->
HTML註釋註釋不了JSP程式碼。
JSP的註釋:
<%-- 我是JSP(服務端)註釋.客戶端啥都看不見哦。 --%>
ps:這是服務端註釋,在客戶端檢視原始碼時可以看見空行(註釋的痕跡)。
JSP指令碼中的註釋:
<%
// 一行Java註釋。
/*多行Java註釋*/
%>
指令碼註釋也可以看到1行註釋的痕跡(檢視原始碼時)。
③宣告:
在JSP頁面中定義變數或者方法。
<%! Java程式碼%>
④指令碼:指令碼中只能寫Java程式碼表達。
<%
out.println("keep studying");
%>
在指令碼中只能用Java註釋/JSP註釋。
⑤表示式
在JSP頁面中執行的表示式。
<%= 表示式 %>// 表示式不以分號結束。
<%@ page contentType="text/html;charset=gbk" language="java" %>
<html>
<head>
<title>配置wuwu</title>
</head>
<body>
<h>啦啦啦,堅持下去。</h>
<!-- 我是HTML註釋。 -->
<%-- 我是JSP註釋。 --%>
<%
// 我是java單行註釋。
/*
*我是Java多行註釋。
*/
%>// 指令碼註釋。
<%!
String today = "learn it by heart and use it greatly";
%>
今天,我學到了<%= today %>;
2+3= <%= 2+3 %>
</body>
</html>
JSP最終是編譯成Servlet來執行的,在編譯前會生成一個Java類:Servlet本質也是一個java類。
-- JSP宣告<%! ... %>會被用來生成Java類的成員變數,如int i=i+1; String str="張三";
-- JSP指令碼<% ... %>會被用來生成JSP Service方法裡面的方法程式碼,包括區域性變數宣告,指令碼中帶分號。
-- JSP表示式<%= 表示式 %>也會被用來生成輸出的方法程式碼,例如out.print("你好"+str);
⑥JSP的頁面週期:
第一次請求jsp頁面時,首先被執行的方法是構造方法。第一次請求時,JSP引擎會把這個JSP檔案轉換成為一個Servlet。 Servlet是一個類,建立它的例項,就會呼叫Servlet的構造方法。
基礎總結:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>九九乘法表</h1>
<%!
// 返回99乘法表對應的HTML程式碼,並且通過表示式呼叫。
// 方法1:
String print() {
String s ="";
for(int i=1;i<=9;i++) {
int k=0;
for(int j=1;j<=i;j++) {
k=i*j;
s += i+"*"+j+"="+k+" ";
}// 完成一次內層for迴圈,打印出一行。
s += "<br>";
}
return s;
}
// 方法2:
void print0(JspWriter out) throws IOException {
for(int i=1;i<=9;i++) {
int k=0;
for(int j=1;j<=i;j++) {
k=i*j;
out.println(i+"*"+j+"="+k+" ");
}
out.println("");
}
}
// JSP內建物件OUT,使用指令碼方式列印乘法表。
%>
<%= print() %<!-- 有返回值的函式。 -->
<% print0(out); %><!-- 直接呼叫函式列印。 -->
</body>
</html>
4.內建物件簡介:
JSP內建物件是Web容器建立的1組物件,不使用new關鍵字就可以使用。
<%
int[] value = {60,70,80};
for(int i:value) {
out.println(i);
}
%>
JSP的9大內建物件:
Web程式的請求響應模式:使用者傳送請求(request)、伺服器給使用者響應(response)。
如登入頁面:點選登入向伺服器傳送請求,在請求物件中封裝了使用者名稱和密碼。
伺服器端接收使用者的請求,判斷使用者名稱和密碼後,給客戶端傳送響應頁面。
緩衝區:Buffer,即記憶體的一塊區域用來儲存臨時資料。
①out物件:是JspWriter類的例項,向客戶端輸出內容常用的物件。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>out內建物件</title>
</head>
<body>
<%
out.println("<h1>終南別業</h1>");
out.println("行到水窮處、坐看雲起時。");
out.getBufferSize();// 返回快取區總大小。
out.getRemaining();// 返回緩衝區剩餘多少。
out.isAutoFlush();// 返回緩衝區滿時,是自動清空還是丟擲異常。
// out.clear();// 清除快取區的內容,在flush之後呼叫會丟擲異常。
// 在輸出前若清除快取區資料,則得不到輸出內容。
out.flush();// 將快取區的內容輸出到客戶端。
out.clearBuffer();// 清除快取區的記憶體,在flush之後呼叫不會丟擲異常。
int remain = out.getRemaining();
%>
緩衝區大小:<%= out.getBufferSize() %>
緩衝區剩餘大小:<%= out.getRemaining() %>
是否自動清除緩衝區:<%= out.isAutoFlush() %>
清除後緩衝區剩餘大小:<%=remain%>
<%
out.close();// 關閉輸出流。
%>
</body>
</html>
①②③:
get與post:表單提交的兩種方式。
<form name="表單名" action="動作" method="(提交方式)post/get">。
action:表示這個表單提供給哪個動作(後端內容)去處理。
get:以明文的方式通過URL提交資料,資料在URL中可以看到。提交的資料<=2KB。安全性較低但是效率比post方式高。
適合提交資料量不大,安全性不高的資料。比如:搜尋、查詢等功能。
post:將使用者提交的資訊封裝在HTML HEADER內。適合提交資料量大,安全性高的使用者資訊。(比如:註冊、修改、上傳)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<form method="get" action="dologin.jsp">
賬戶:<input type="text" name="usename" values="wjy"/>
密碼:<input type="password" name="password" values="123456"/>
<input type="submit" value="登入">
</body>
</html>
......
<head>
<title>dologin</title>
</head>
<body>
<h>登入成功</h>
</body>
</html>
②request物件:
客戶端請求資訊被封裝在request物件中,通過它能瞭解到客戶的需求,然後做出響應,它是HttpServletRequest類的例項。
request物件具有請求域,即完成客戶端的請求之前,該物件一直有效。常用方法:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>表單</title>
</head>
<body>
<form action="②request內建物件.jsp" method="post" />
使用者:
<input type="text" name="usename">
愛好:
<input type="checkbox" value="看書" name="like">看書
<input type="checkbox" value="旅遊" name="like">旅遊
<input type="checkbox" value="運動" name="like">運動
<input type="checkbox" value="購物" name="like">購物
<input type="submit" value="提交">
<br>
<a href="②request內建物件.jsp?usename=測試URL傳引數">測試URL傳引數</a>
<!-- 沒傳愛好資訊,丟擲空指標異常。 -->
<!-- url傳參預設字符集為utf-8,傳遞中文不會出現異常 -->
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>request內建物件</title>
</head>
<body>
<!-- 提交表單時,預設使用ISO...字符集,要想改變: -->
<%
request.setCharacterEncoding("utf-8");
// 用來確保發往伺服器的引數以漢字的編碼來提取,設定從request中取得的值或從資料庫中取出的值。
// 將設定的請求字元編碼設定為utf-8。
// 指定後可以通過request.getParameter()獲取自己想要的字串。
// 如果沒有提前指定,則會按照伺服器端預設的"iso-8859-1"來進行編碼。
// 該方法只對post請求有效,對get請求無效。
// 對於get請求,應該在server.xml中指定:URIEncoding=utf-8。
// 注意:在執行request.setCharacterEncoding()之前不能執行request.getParameter()方法。
// 原因:應該是在執行第一個getParameter()的時候,java將會按照編碼分析所有的提交內容。
// 而後續的getParameter()不再進行分析,所以setCharacterEncoding()無效。
// 而對於GET方法提交表單是,提交的內容在URL中,一開始就已經按照編碼分析提交內容,setCharacterEncoding()自然就無效。
request.setAttribute("password","123456");
%>
使用者名稱:<%= request.getParameter("usename") %>
獲得密碼屬性的值:<%= request.getAttribute("password") %>
請求體的MIME型別:<%= request.getContentType() %>
請求檔案的長度:<%= request.getContentLength() %>
請求的上下文路徑:<%= request.getContextPath() %>
請求的真實路徑:<%= request.getRealPath("request.jsp") %>
協議型別及版本號:<%= request.getProtocol() %>
伺服器主機名:<%= request.getServerName() %>
伺服器埠號:<%= request.getServerPort() %>
請求客戶端的IP地址:<%= request.getRemoteAddr() %>
返回請求的字元編碼方式:<%= request.getCharacterEncoding() %>
愛好:
<%
String[] s2 = request.getParameterValues("like");
if(s2!=null) {
for (String s0 : s2) {
out.println(s0);
}
}
%>
</body>
</html>
③response物件:包含了響應客戶請求的有關資訊,很少被直接使用,是HttpServletResponse類的例項。
此物件具有頁面作用域,即訪問一個頁面時,該頁面內的response物件只能對這次訪問有效,其他頁面的response物件對當前頁面無效。
請求重定向和請求轉發區別:
請求轉發:伺服器行為,request.getRequestDispatcher("...").forward(request,response);
是一次請求,轉發後請求物件會儲存,位址列的URL地址不會改變。
請求重定向:客戶端行為,response.sendRedirect("...");
等同於兩次請求,前一次的請求物件不會儲存,位址列的URL地址會改變。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>response內建物件</title>
</head>
<body>
<%
// 設定響應的MIMI型別。
response.setContentType("text/html;charset=UTF-8");
// 設定響應給客戶端的內容的編碼。
// 一般使用response.setContentType()方法來設定HTTP響應的編碼,
// 同時指定了瀏覽器顯示的編碼,因為他在執行該方法通知伺服器端以指定編碼進行編碼後,
// 會自動呼叫response.setCharacterEncoding()方法來通知瀏覽器以指定編碼來解碼,
// 使用此方法要在response.getWriter()執行之前或response提交之前。
response.setCharacterEncoding("utf-8");
PrintWriter outer = response.getWriter();
out.println("Where is zbw?");
outer.println("He is ...");// 總是提前於內建的out物件輸出。
// 想要內建out物件出現在前面,就強制快取輸出。
out.println("Where is zbw?");
out.flush();
outer.print("He is ...");
// 請求重定向,讓客戶端發一個新請求,跳轉。
// 用時要先註釋掉out.flush();
response.sendRedirect("get.jsp");
%>
</body>
</html>
④session物件:
JSP的一個內建物件,是HttpSession類的例項。
session表示客戶端與伺服器的一次會話,會話儲存在伺服器的記憶體裡。
一個會話指從一個客戶開啟瀏覽器並連線到伺服器開始,到客戶關閉瀏覽器離開這個伺服器結束。
session是一個特定的時間概念。
session物件在第一個JSP頁面被裝載時自動建立,完成會話期管理。
當一個客戶訪問一個伺服器時,可能會在伺服器的幾個頁面之間切換,伺服器應當通過某種方法知道這是一個客戶,就需要session物件。
在每次會話中,有一個伺服器建立的sessionid,每次客戶端向服務端傳送請求時,都會將此sessionid攜帶過去,服務端會對此進行校驗。
除非本次會話的所有頁面都關閉後,再重新訪問某個Jsp或Servlet將會建立新的會話。
原有會話還存在,舊的sessionid存在於伺服器端,等待銷燬。
在伺服器的記憶體中儲存著不同使用者的session,與使用者一一對應。
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>session物件</title>
</head>
<body>
<h1>session物件的使用</h1>
<%
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = new Date(session.getCreationTime());
session.setAttribute("usename","wjy");
// 使用指定名稱將物件繫結到此會話。
session.setAttribute("password","you guess");
session.setAttribute("age",19);
session.setMaxInactiveInterval(12);
// 設定會話最長時間為12s。
%>
獲取session建立時間:<%= s.format(d) %>
獲取session的ID編號:<%= session.getId() %>
<% --返回建立時,JSP引擎為它設的唯一編號。 --%>
獲取從session中獲取使用者名稱:<%= session.getAttribute("username") %>
<%--如果沒有物件繫結在該名稱下,則返回null。--%>
獲取session中儲存的屬性:
<%
String[] ss = session.getValueNames();
for(String sss : ss) {
out.println(sss+" ");
}
%>
<%-- 返回一個包含此session的所有可用屬性的陣列。 --%>
獲取會話的最長時間:<%= session.getMaxInactiveInterval() %>
</body>
</html>
12秒後編號改變:
session的銷燬方式:
①呼叫session.invalidate()方法。
②session過期(超時)。
③伺服器重新啟動。
若在末尾呼叫第一個方法,即頁面一執行完,會話就被銷燬。
控制session物件的超時時間:
①session.setMaxInactiveInterval(時間);// 單位是秒。
②在web.xml中配置:
<session-config>
<session-timeout>
10// 單位是分鐘。
</session-timeout>
</session-config>
⑤application物件:是ServletContext例項。
實現了使用者間的資料共享,可存放全域性變數。
開始於伺服器的啟動、終止於伺服器的關閉。
在使用者的前後連線或不同使用者之間的連線中,可以對application物件的同一屬性進行操作。
在任何地方對application物件屬性的操作,都將影響其他使用者對此的訪問,它屬於整個伺服器。
類比靜態類。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>application內建物件</title>
</head>
<body>
<%
application.setAttribute("usename","wjy");
// 使用指定名稱將物件繫結到此會話。
application.setAttribute("password","you guess");
application.setAttribute("age","19");
%>
使用者名稱是:<%= application.getAttribute("usename") %>
<!-- 執行完session頁面後,這裡就會得到使用者名稱、密碼、年齡等。 -->
密碼是:<%= application.getAttribute("password") %>
<%-- 返回與此會話中指定名稱繫結在一起的物件,如果沒有物件繫結在該名稱下,則返回null。 --%>
application中的屬性有:
<%
Enumeration<String> e = application.getAttributeNames();
while(e.hasMoreElements()) {
out.println(e.nextElement());
out.println("<br>");
}// 返回所有可用屬性名的列舉
%>
JSP&Servlet引擎及版本號:<%= application.getServerInfo() %>
</body>
</html>
⑥page物件:
page物件就是指向當前JSP頁面本身,有點像類中的this指標,它是Java.lang.object類的例項。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>page內建物件</title>
</head>
<body>
返回此Object的類:
<%= page.getClass() %>
返回Object的hash碼:
<%= page.hashCode() %>
把Object物件轉換成String類的物件:
<%= page.toString()+" " %>
<!-- 打印出:檔案儲存路徑+類名+hascode。 -->
判斷此Object是否與指定的Object物件相等:
<%= page.equals(page) %>
</body>
</html>
⑦pageContext物件:
提供了對JSP頁面內所有的物件及名字空間的訪問。
可以訪問到本頁所在的session,也可以取本頁面所在的application的某一條屬性、相當於頁面中所有功能的集大成者。
此物件的本類名也叫pageContext。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>pageContext內建物件</title>
</head>
<body>
返回當前頁中的 Httpsession物件(session)的使用者名稱/密碼/年齡:
在當前位置包含①out內建物件.jsp檔案:
<% pageContext.include("①out內建物件.jsp"); %>
<!-- 用時要註釋掉out.close();!! -->
<%= pageContext.getSession().getAttribute("usename") %><br>
<%= pageContext.getSession().getAttribute("password") %><br>
<%= pageContext.getSession().getAttribute("age") %><br>
返回當前頁的 ServletRequest物件 (request):
<%= pageContext.getRequest() %>
返回當前頁的 ServletResponse物件(response):
<%= pageContext.getResponse() %>
返回當前頁的Object物件(page):
<% Object p = pageContext.getPage(); %>
<%= p %>
<!-- 設定time屬性及屬性值: -->
<% pageContext.setAttribute("time",50); %>
在指定範圍內取time屬性的值:
<%= pageContext.getAttribute("time") %>// 50。
返回time屬性的作用範圍:
<%= pageContext.getAttributesScope("time") %>// 1。
</body>
</html>
......
<head>
<title>pageContext內建物件</title>
</head>
<body>
使當前頁面重導到④session內建物件.jsp頁面:
<% pageContext.forward("④session內建物件.jsp"); %>
</body>
</html>
⑧config物件:
a.config物件是在一個Servlet初始化時,JSP引擎向它傳遞資訊用的。
b.在Servlet的配置檔案中,可以用一個或多個<init-param>標籤為servlet配置一些初始化引數。
當servlet配置初始化引數之後,web容器在建立servlet例項物件時,自動將這些初始化引數封裝到ServletConfig物件中。
並在呼叫servlet的init方法時,將ServletConfig物件傳遞給Servlet,即可通過該物件得到當前servlet的初始化引數資訊。
此資訊包括Servlet初始化時所要用到的引數(通過屬性名和屬性值構成)以及伺服器的有關資訊(通過傳遞一個ServletContext物件)。
c.如果希望jsp頁面可以獲得為自己本頁面設定的配置資訊,則必須通過為該jsp配置的路徑來訪問該頁面,因為只有這樣訪問jsp頁面才會讓配置引數起作用。
d.config物件是ServletConfig的例項。
返回含有伺服器相關資訊的ServletContext物件:ServletContext getServletContext();
獲取配置引數的方法:String getInitParameter(String name);
返回Servlet初始化所需所有引數的列舉:Enumeration getInitParameterNames();
e.例項(獲得初始化引數)
在web.xml中配置Servlet時,可以配置一些初始化引數。
<servlet-mapping>
<servlet-name>Hello4</servlet-name>
<url-pattern>Servlet.initParam</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Hello4</servlet-name>
<servlet-class>Servlet.initParam</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>wjy</param-value>
</init-param>
<init-param>
<param-name>passowrd</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
JSP程式碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>init param</title>
</head>
<body>
<a href="../Servlet/initParam">get方法提交引數</a>
</body>
</html>
Servlet程式碼(獲取初始化引數):
在Servlet中可以通過ServletConfig介面提供的方法來取得這些引數。
package Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @Auther: wjy
* @Date: 2018/10/14 20:19
* @Description: 獲得初始化引數。
*/
public class initParam extends HttpServlet {
private String username;
private String password;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("使用者名稱:"+this.getUsername());
out.print("密碼:"+this.getPassword());
}
@Override
public void init() throws ServletException {
// 獲得初始化引數,並將值賦給username、password。
this.setUsername(this.getInitParameter("username"));
this.setPassword(this.getInitParameter("password"));
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
⑨exception物件:
exception物件是一個異常物件,當一個頁面在執行過程中發生了異常,就會產生這個物件。
如果一個JSP頁面要應用此物件,就必須把isErrorPage設為true(即只有異常處理頁面才可以執行該物件),否則無法編譯。
它實際上是java.lang.Throwable的物件。
web無法直接訪問處理異常的頁面!!
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="⑨exception內建物件.jsp"%>
<html><!-- 若發生異常,交給此頁面處理。 -->
<head>
<title>Title</title>
</head>
<body>
<!-- 配置算術異常,即執行時異常 -->
<% System.out.println(100/0); %>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html><!-- 有is...="true"才能使用exception物件 -->
<head>
<title>exception內建物件</title>
</head>
<body>
異常訊息:<%= exception.getMessage() %><br>
異常簡要描述:<%= exception.toString() %><br>
異常軌跡:<%= exception.getStackTrace() %><br>
</body>
</html>
5.Cookie詳解
①http是超文字傳輸協議,也是無狀態協議。
http協議具有無狀態性,即伺服器不記得你,不管你訪問多少次。
當瀏覽器傳送請求給伺服器的時候,伺服器響應客戶端請求。
但是當同一個瀏覽器再次傳送請求給伺服器的時候,伺服器並不知道它剛才訪問過。
②儲存使用者狀態的兩大機制:
Session、Cookie。
所謂Cookie(小甜餅),是Web伺服器儲存在客戶端的一系列文字資訊。
③Cookie的常見用途:
a.可以記錄瀏覽記錄。
b.可以儲存登入記錄(如n時間內自動登入)。
c."購物車"的處理,詳情見 輕量級Java EE......之JSP/Servlet。
④Cookie的作用:
a.對特定物件的追蹤。
b.儲存使用者網頁瀏覽記錄與習慣。
c.簡化登入。
⑤使用Cookie:
建立Cookie物件:Cookie newCookie = new Cookie(String key, Object value);
寫入Cookie物件:response.addCookie(newCookie);
讀取Cookie物件:Cookie[] cookies = request.getCookies();
JSP中建立與使用Cookie:
void setMaxAge(int expiry):設定cookie的有效期,以秒為單位。
int getMaxAge():獲取cookie的有效時間,以秒為單位。
void setValue(String value):建立cookie後,對cookie進行賦值。
String getName():獲取cookie的名稱。
String getValue():獲取cookie的值。(名稱對應值!!!)
⑥