【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案
所有章节答案合集——>传送门
【测一测】
学习完前面的内容,下面来动手测一测吧,请思考以下问题:
1、简述什么是会话技术?
2、简述Cookie与Session的区别?(至少写出3点)
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");/** 设定一个 cookie 的name : lastAccessTime 读取客户端发送cookie * 获得用户上次的访问时间显示*/String lastAccessTime = null;// 获取所有的cookie,并将这些cookie存放在数组中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);}// 创建cookie,将当前时间作为cookie的值发送给客户端Cookie cookie = new Cookie("lastAccess", new Date().toLocaleString());cookie.setMaxAge(60 * 60);// 保存1小时// 访问chapter05下资源时回送cookiecookie.setPath("/chapter05");// 发送 cookieresponse.addCookie(cookie);}
}
<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、该功能的实现代码如下:
(1)书籍Book类的创建如下:
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;}
}
private static Map<String, Book> books = new LinkedHashMap<String, Book>();static {books.put("1", new Book("1", "javaweb开发"));books.put("2", new Book("2", "jdbc开发"));books.put("3", new Book("3", "java基础"));books.put("4", new Book("4", "struts开发"));books.put("5", new Book("5", "spring开发"));}// 获得所有的图书public static Collection<Book> getAll() {return books.values();}// 根据指定的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>");}}
}
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);// 创建或者获得用户的Session对象HttpSession session = req.getSession();// 从Session对象中获得用户的购物车List<Book> cart = (List) session.getAttribute("cart");if (cart == null) {// 首次购买,为用户创建一个购物车(List集合模拟购物车)cart = new ArrayList<Book>();// 将购物城存入Session对象session.setAttribute("cart", cart);}// 将商品放入购物车cart.add(book);// 创建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);}
}
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>");}}}
}
<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>
整理不易, 如果喜欢的话,还请给博主一个赞哦,让更多的人看到这篇文章
【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案相关推荐
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第三章 课后答案
所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用. 2.简述Servlet ...
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第六章 课后答案
所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请简述JSP的运行原理. 1.请简述JSP中的9个隐式对象. 2.请使用include标签编 ...
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第四章 课后答案
所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.简述请求转发与重定向的异同?(至少写3点) 2.请写出禁止浏览器缓存页面的核心代码. 3.请 ...
- HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第五章课后习题(课程介绍专栏效果)
黑马程序员编著的教材 HTML+CSS+JavaScript网页制作案例教程 第五章:"课程介绍"专栏-课后习题参考代码 题目原型: 请结合给出的素材,运用列表标记,超链接标记以 ...
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 课后答案【合集】
[传智播客]Javaweb程序设计任务教程 黑马程序员 第一章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序员 第二章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序 ...
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第7,8,9,10,11,12,13,14,15章 课后答案
所有章节答案合集-->传送门 第一部分是题目,向下翻, 第二部分是答案 第七章 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.简述Javabean规范都有哪些?(至少写 ...
- HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第四章课后习题(播放器图标)
黑马程序员编著的教材 HTML+CSS+JavaScript网页制作案例教程 第四章:播放器图标-课后习题参考代码 ........ 记得 关注,收藏,评论哦,作者将持续更新.... 我自己做的效果 ...
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第二章 课后答案
所有章节答案合集-->传送门 第二章 问题 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.简述HTTP1.1协议的通信过程? 2.简述POST请求和GET请求有什么不同 ...
- 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、
1. 什么叫做事务? 2.默认情况下每一条sql语句都是一个事务,然后自动提交事务 ps:如果想多条语句占一个事务,则可以手动设置SetAutoCommit为false 3.关键字 start tr ...
最新文章
- 特殊用户邮箱附件大小设置
- 使用ckeditor
- 【Linux内非root安装】graphviz安装
- script 有哪个属性可以让它不立即执行 defer,async
- Quick Search Articles in My Blog
- 为什么已有Elasticsearch,我们还要重造实时分析引擎AresDB?
- HTTP协议详细资料
- c语言的数组在栈区还是,用数组实现栈的功能的C语言代码?
- Spark WordCount
- 干货整理!10个Python图像处理工具,入门必看,提效大法 | 资源
- 华三 h3c VRRP、MSTP、OSPF综合实验
- 微信小程序 --- 物流快递查询
- error Code:410 Error Message:appid and openid not match 威富通技术支持,兴业银行微信支付接入支持
- JS 验证身份证及获取地区
- Postman高级用法
- 【getchar】在C语言中getchar的使用方法和读取规则
- android沉浸式模式简书,Android-沉浸式模式
- 计算机基础做表格,表格的制作计算机基础.doc
- Python:实现floor向下取整算法(附完整源码)
- springboot+security实例