会话技术Cookie
生活随笔
收集整理的這篇文章主要介紹了
会话技术Cookie
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.會話技術的概念
- 會話∶瀏覽器和服務器之間的多次請求和響應。
- 為了實現一些功能,瀏覽器和服務器之間可能會產生多次的請求和響應,從瀏覽器訪問服務器開始,到訪問服務器結束(關閉瀏覽器、到了過期時間)。這期問產生的多次請求和響應加在一起就稱之為瀏覽器和服務器之間的一次會話。
- 會話過程中所產生的一些數據,可以通過會話技術( Cookie和Session )保存。
2.Cookie的概念
- Cookie :客戶端會話管理技術把要共享的數據保存到客戶端。
- 每次請求時,把會話信息帶到服務器端,從而實現多次請求的數據共享!
- 作用:可以保存客戶端訪問網站的相關內容,從而保證每次訪問時先從本地緩存中就取,以此提高效率
- -cookie有大小和個數限制:每個網站最多只能存20個Cookie,所有網站加起來最多只能存300個Cookie。每個Cookie的大小不能超過4KB
3.Cookie的添加和獲取
//cookie把數據保存在客戶端 //Session把數據保存在服務端,且依賴于cookie @WebServlet("/ServletDemo1") public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置請求字符編碼,防止亂碼req.setCharacterEncoding("utf-8");//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//1.通過響應對象寫出提示信息PrintWriter pw = resp.getWriter();pw.write("最后瀏覽時間為<br/>");//2.創建Cookie對象,用于記錄最后訪問時間Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");//3.設置最大存活時間cookie.setMaxAge(3600);//4.將cookie對象添加到客戶端resp.addCookie(cookie);//5.獲取cookieCookie[] cookies = req.getCookies();for (Cookie c : cookies) {//if("time".equals(c.getName())){if(c.getName().equals("time")){String value = c.getValue();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write(sdf.format(new Date(Long.parseLong(value))));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }4.Cookie的路徑限制
【取自第一次訪問的資源路徑前綴,只要以這個前綴為開頭(包括子級路徑)。獲取到反之獲取不到】
@WebServlet("/servlet/aaa/ServletDemo4")可以獲取到
@WebServlet("/bbb/servlet/ServletDemo5")不可以獲取
5.例子:最后瀏覽時間
@WebServlet("/ServletDemo2") public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置請求字符編碼,防止亂碼req.setCharacterEncoding("utf-8");//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//1.獲取所有的Cookie對象//需要加非空判斷PrintWriter pw = resp.getWriter();Cookie[] cookies = req.getCookies();if(cookies==null){//如果為空,說明第一次訪問,使用Cookie記錄這一次訪問的時間Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("歡迎光臨,第一次訪問");return;}//2.查找lasttime名稱的Cookie是否存在int index = -1;for (int i = 0; i < cookies.length; i++) {//可以加個cookies[i]判空if (cookies[i].getName().equals("lasttime")) {index = i;break;}}//如果不存在,說明第一次訪問,使用Cookie記錄這一次訪問的時間if (index == -1) {Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("歡迎光臨,第一次訪問");}//如果存在,說明不是第一次訪問,使用Cookie響應給瀏覽器這一次的時間if (index != -1) {String value = cookies[index].getValue();SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write("歡迎回來,上次訪問時間</br>" + sdt.format(new Date(Long.parseLong(value))));//并設置新時間cookies[index].setValue(System.currentTimeMillis() + "");resp.addCookie(cookies[index]);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }總結
以上是生活随笔為你收集整理的会话技术Cookie的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 沈阳到营口多少公里
- 下一篇: 路由端口设置(路由器端口号设置)