日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案

發(fā)布時間:2024/2/28 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所有章節(jié)答案合集——>傳送門


【測一測】
學(xué)習(xí)完前面的內(nèi)容,下面來動手測一測吧,請思考以下問題:
1、簡述什么是會話技術(shù)?

2、簡述Cookie與Session的區(qū)別?(至少寫出3點)

3、請設(shè)計一個類,使用Cookie技術(shù)實現(xiàn)顯示用戶上次訪問時間的功能。
要求如下:
1)創(chuàng)建一個LastAccessServlet類,使其繼承HttpServlet類并重寫該類的doGet()方法。
2)在doGet()方法中,使用request.getCookies()得到所有cookie形成的cookie數(shù)組,并進行遍歷。
3)如果遍歷過程中找到cookie信息中存在lastAccess屬性則輸出,否則創(chuàng)建cookie對象設(shè)置值為當前時間并發(fā)送給客戶端。
4)cookie的存活時間為1小時,訪問當前應(yīng)用中的所有資源客戶端都回送cookie信息。

4、請設(shè)計一個程序,使用Session技術(shù)實現(xiàn)購物車功能。


【答案】

1、會話過程類似于生活中的打電話過程,它指的是一個客戶端(瀏覽器)與Web服務(wù)器之間連續(xù)發(fā)生的一系列請求和響應(yīng)過程。在Servlet技術(shù)中,提供了兩個用于保存會話數(shù)據(jù)的對象,分別是Cookie和Session。

2、Cookie與Session主要有如下區(qū)別:
1)Cookie和HttpSession是保存會話相關(guān)數(shù)據(jù)的技術(shù),其中Cookie將信息存儲在瀏覽器端,是客戶端技術(shù),Session將數(shù)據(jù)保存在服務(wù)器端,是服務(wù)器端技術(shù)
2)Cookie是基于HTTP協(xié)議中的Set-Cookie響應(yīng)頭和Cookie請求頭進行工作的
3)默認情況下HttpSession是基于一個名稱為JSESSIONID 的特殊Cookie工作的
4)瀏覽器對Cookie具有嚴格的限制,一個網(wǎng)站能在瀏覽器中保存多少Cookie是有限制的
5)HttpSession默認是基于Cookie運作的。

3、該功能的實現(xiàn)步驟如下:
1)創(chuàng)建一個LastAccessServlet類,使其繼承HttpServlet類并重寫該類的doGet()方法。
2)在doGet()方法中,使用request.getCookies()得到所有cookie形成的cookie數(shù)組,并進行遍歷。
3)如果遍歷過程中找到cookie信息中存在lastAccess屬性則輸出,否則創(chuàng)建cookie對象設(shè)置值為當前時間并發(fā)送給客戶端。
4)cookie的存活時間為1小時,訪問當前應(yīng)用中的所有資源客戶端都回送cookie信息。
(1)LastAccessServlet類的實現(xiàn)代碼如下:

public class LastAccessServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");/** 設(shè)定一個 cookie 的name : lastAccessTime 讀取客戶端發(fā)送cookie * 獲得用戶上次的訪問時間顯示*/String lastAccessTime = null;// 獲取所有的cookie,并將這些cookie存放在數(shù)組中Cookie[] cookies = request.getCookies();for (int i = 0; cookies != null && i < cookies.length; i++) {if ("lastAccess".equals(cookies[i].getName())) {// 如果cookie的名稱為lastAccess,則獲取該cookie的值lastAccessTime = cookies[i].getValue();break;}}// 判斷是否存在名稱為lastAccess的cookieif (lastAccessTime == null) {response.getWriter().print("您是首次訪問本站!!!");} else {response.getWriter().print("您上次的訪問時間" + lastAccessTime);}// 創(chuàng)建cookie,將當前時間作為cookie的值發(fā)送給客戶端Cookie cookie = new Cookie("lastAccess", new Date().toLocaleString());cookie.setMaxAge(60 * 60);// 保存1小時// 訪問chapter05下資源時回送cookiecookie.setPath("/chapter05");// 發(fā)送 cookieresponse.addCookie(cookie);} }

(2)web.xml文件配置如下:

<servlet><servlet-name>LastAccessServlet</servlet-name><servlet-class>cn.itcast.chapter05.servlet.LastAccessServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>LastAccessServlet</servlet-name><url-pattern>/LastAccessServlet</url-pattern> </servlet-mapping>

4、該功能的實現(xiàn)代碼如下:
(1)書籍Book類的創(chuàng)建如下:

public class Book implements Serializable {private static final long serialVersionUID = 1L;private String id;private String name;public Book() {}public Book(String id, String name) {this.id = id;this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;} }

(2)書籍數(shù)據(jù)庫模擬類BookDB的代碼如下:

private static Map<String, Book> books = new LinkedHashMap<String, Book>();static {books.put("1", new Book("1", "javaweb開發(fā)"));books.put("2", new Book("2", "jdbc開發(fā)"));books.put("3", new Book("3", "java基礎(chǔ)"));books.put("4", new Book("4", "struts開發(fā)"));books.put("5", new Book("5", "spring開發(fā)"));}// 獲得所有的圖書public static Collection<Book> getAll() {return books.values();}// 根據(jù)指定的id獲得圖書public static Book getBook(String id) {return books.get(id);} }

(3)顯示可購買圖書的列表類ListBookServlet的代碼如下:

public class ListBookServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();Collection<Book> books = BookDB.getAll();out.write("本站提供的圖書有:<br>");for (Book book : books) {String url = "/chapter05/PurchaseServlet?id=" + book.getId();out.write(book.getName() + "<a href='" + url + "'>點擊購買</a><br>");}} }

(4)購物功能類PurchaseServlet的代碼如下:

public class PurchaseServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 獲得用戶購買的商品String id = req.getParameter("id");if (id == null) {// 如果id為null,重定向到ListBookServlet頁面String url = "/chapter05/ListBookServlet";resp.sendRedirect(url);return;}Book book = BookDB.getBook(id);// 創(chuàng)建或者獲得用戶的Session對象HttpSession session = req.getSession();// 從Session對象中獲得用戶的購物車List<Book> cart = (List) session.getAttribute("cart");if (cart == null) {// 首次購買,為用戶創(chuàng)建一個購物車(List集合模擬購物車)cart = new ArrayList<Book>();// 將購物城存入Session對象session.setAttribute("cart", cart);}// 將商品放入購物車cart.add(book);// 創(chuàng)建Cookie存放Session的標識號Cookie cookie = new Cookie("JSESSIONID", session.getId());cookie.setMaxAge(60 * 30);cookie.setPath("/chapter05");resp.addCookie(cookie);// 重定向到購物車頁面String url = "/chapter05/CartServlet";resp.sendRedirect(url);} }

(5)展示所購圖書類CartServlet的代碼如下:

public class CartServlet extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();// 變量cart引用用戶的購物車List<Book> cart = null;// 變量pruFlag標記用戶是否買過商品boolean purFlag = true;// 獲得用戶的sessionHttpSession session = req.getSession(false);// 如果session為null,purFlag置為falseif (session == null) {purFlag = false;} else {// 獲得用戶購物車cart = (List) session.getAttribute("cart");// 如果用的購物車為null,purFlag置為falseif (cart == null) {purFlag = false;}}/** 如果purFlag為false,表明用戶沒有購買圖書 重定向到ListServlet頁面*/if (!purFlag) {out.write("對不起!您還沒有購買任何商品!<br>");} else {// 否則顯示用戶購買圖書的信息out.write("您購買的圖書有:<br>");double price = 0;for (Book book : cart) {out.write(book.getName() + "<br>");}}} }

(6)web.xml文件配置如下:

<servlet><display-name>ListBookServlet</display-name><servlet-name>ListBookServlet</servlet-name><servlet-class> cn.itcast.chapter05.session.example01.ListBookServlet </servlet-class></servlet><servlet-mapping><servlet-name>ListBookServlet</servlet-name><url-pattern>/ListBookServlet</url-pattern></servlet-mapping><servlet><display-name>PurchaseServlet</display-name><servlet-name>PurchaseServlet</servlet-name><servlet-class> cn.itcast.chapter05.session.example01.PurchaseServlet </servlet-class></servlet><servlet-mapping><servlet-name>PurchaseServlet</servlet-name><url-pattern>/PurchaseServlet</url-pattern></servlet-mapping><servlet><display-name>CartServlet</display-name><servlet-name>CartServlet</servlet-name><servlet-class> cn.itcast.chapter05.session.example01.CartServlet </servlet-class></servlet><servlet-mapping><servlet-name>CartServlet</servlet-name><url-pattern>/CartServlet</url-pattern></servlet-mapping>

整理不易, 如果喜歡的話,還請給博主一個贊哦,讓更多的人看到這篇文章

總結(jié)

以上是生活随笔為你收集整理的【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。