简易购物车---获取图书信息
来源:互联网 发布:餐饮软件破解版 编辑:程序博客网 时间:2024/06/07 00:10
搭好了 框架之后,现在就按照MVC模式去完成任务!今天实现的是获取 所有图书和单个图书的信息及Cookie的应用!
1.先建立JavaBean.
package com.myshopping.form;
public class Book {
private String id;
private String name;
private String title;
private float price;
private int yr;
private String description;
private int saleAmount;
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;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public int getYr() {
return yr;
}
public void setYr(int yr) {
this.yr = yr;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getSaleAmount() {
return saleAmount;
}
public void setSaleAmount(int saleAmount) {
this.saleAmount = saleAmount;
}
}
2.在DAO里与数据库建立连接.
package com.myshopping.dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.myshopping.db.DBHelper;
import com.myshopping.form.Book;
import com.myshopping.util.MyBookConstants;
public class BookDAO {
//查询单个图书的信息
public Book selectByBookId(String bookId){
Book book = null;
Connection conn = DBHelper.getonnection();
String sql = "SELECT id,name,title,price,yr,description,saleAmount FROM books WHERE id = ? ";
Object[] params = new Object[]{bookId};
QueryRunner queryRunner = new QueryRunner();
try {
book = (Book) queryRunner.query(conn, sql, params, new BeanHandler(Book.class));
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(MyBookConstants.SELECT_BOOK_BYBOOKID_EXCEPTION);
}
return book;
}
//获取所有图书的信息
public List queryAllBooks(){
List books = null;
Connection conn = DBHelper.getonnection();
String sql = "SELECT * FROM books";
//创建dbutils中的 QueryRunner对象
QueryRunner queryRunner = new QueryRunner();
try {
books = (List)queryRunner.query(conn, sql, new BeanListHandler(Book.class) );
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(MyBookConstants.QUERY_ALL_BOOKS_EXCETPION);
}
return books;
}
}
3.业务层,调用DAO方法,建立业务 .
package com.myshopping.service;
import java.util.List;
import com.myshopping.dao.BookDAO;
import com.myshopping.form.Book;
public class BookService {
//获取所有图书的信息
public List getAllBooks(){
List books = null;
BookDAO bookDAO = new BookDAO();
books = bookDAO.queryAllBooks();
return books;
}
//查询单个图书的信息
public Book getByBookId(String bookId){
Book book = null;
BookDAO bookDAO = new BookDAO();
book = bookDAO.selectByBookId(bookId);
return book;
}
}
4.建立Servlet,使视图层与Model层建立连接 .
package com.myshopping.servlet;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.myshopping.form.Book;
import com.myshopping.service.BookService;
import com.myshopping.util.MyBookConstants;
import com.sun.org.apache.xerces.internal.util.URI;
public class BookDetailServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String bookId = request.getParameter("bookId");
BookService bookService = new BookService();
Book book = bookService.getByBookId(bookId);
if(book != null){
addBookCookie(book.getTitle(),request,response);//将当前图书的信息以 Cookie 的形式写到客户端的浏览器的临时文件夹中
String forwardPage = "/WEB-INF/jsp/bookdetail.jsp";
request.setAttribute(MyBookConstants.BOOK_KEY, book);
RequestDispatcher dispatcher = null;
dispatcher = request.getRequestDispatcher(forwardPage);
dispatcher.forward(request, response);
}else{
throw new RuntimeException(MyBookConstants.NOT_EXIST_BOOK_MESSAGE);
}
}
//这段是Cookie的内容
public void addBookCookie(String title, HttpServletRequest request, HttpServletResponse response){
Cookie [] cookies = request.getCookies();
int myBookCookieLength = 0;
Cookie myBookFirstCookie = null;
if(cookies != null){
for(int i = 0;i<cookies.length;i++){
Cookie ck = cookies[i];
if(ck.getName().startsWith("myshopping_cookie_")){
myBookCookieLength++;
if(myBookCookieLength == 1){
myBookFirstCookie = ck ;
}
if(myBookCookieLength == 3){
myBookFirstCookie.setMaxAge(0);
response.addCookie(myBookFirstCookie);
myBookCookieLength = 0;
}
}
}
}
Cookie cookie = null;
try {
title = URLEncoder.encode(title,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(MyBookConstants.BOOK_TITLE_ADD_COOKIE_EXCEPTION);
}
cookie = new Cookie("myshopping_cookie_" + title,title);
cookie.setMaxAge(60*60*24*31);
response.addCookie(cookie);
}
}
5.页面显示.
'bookDetail.jsp':
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'bookDetail.jsp' starting page</title>
</head>
<body>
<center>
<br><br>
<table cellpadding="5" cellspacing="0">
<tr>
<td>书名: </td>
<td>${requestScope.bookkey.title }</td>
</tr>
<tr>
<td>作者:</td>
<td>
${requestScope.bookkey.name }(${requestScope.bookkey.yr })
</td>
</tr>
<tr>
<td>价格:</td>
<td>${requestScope.bookkey.price }</td>
</tr>
<tr>
<td>销售数量:</td>
<td>${requestScope.bookkey.saleAmount }</td>
</tr>
<tr>
<td>评论:</td>
<td>${requestScope.bookkey.description }</td>
</tr>
</table>
<br><br>
<a href="">加入购物车</a>
<a href="${pageContext.request.contextPath }/index.jsp">继续购物</a>
</center>
</body>
</html>
'catalog.jsp'
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="myshopping" uri="/WEB-INF/tld/myBook.tld" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'catalog.jsp' starting page</title>
</head>
<body>
<center>
<br><br>
请选择您要购买的书:
<br><br>
<table cellpadding="5" cellspacing="0">
<c:forEach items="${requestScope.allbookskey}" var="book">
<tr>
<td>
<a href="${pageContext.request.contextPath }/bookDetailServlet?bookId=${book.id }">${book.title}</a><br>
${book.name }
</td>
<td>${book.price}</td>
<td><a href="">加入购物车</a></td>
</tr>
</c:forEach>
</table>
<myshopping:showCookieBook/>//自定义标签的应用
</center>
</body>
</html>
6.下面是为了避免在JSP页面使用JAVA 代码,而自己设计的自定义标签 :<myshopping:showCookieBook/>//自定义标签的应用
Book.tld:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<description>myshopping 1.1 core library</description>
<display-name>myshopping core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>myshopping</short-name>
<uri>http://www.itcast.cn/myshopping/tag/core</uri>
<tag>
<name>showCookieBook</name>
<tag-class>com.myshopping.tag.ShowCookieBookTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
这里是JAVA 标签类:
ShowCookieBookTag.java
package com.myshopping.tag;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ShowCookieBookTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
//获取代表 JSP 页面的 PageContext
PageContext pc = (PageContext) this.getJspContext();
//获取 HttpServletRequest 对象和 JspWriter 对象
HttpServletRequest request = (HttpServletRequest) pc.getRequest();
JspWriter out = pc.getOut();
//获取浏览器传过来的 Cookie 数组
Cookie[] cookies = request.getCookies();
StringBuffer cookieInfoStr = new StringBuffer("");
if(cookies != null && cookies.length > 0){
//对Cookie数组进行遍历
for(int i = 0; i<cookies.length; i++ ){
Cookie cookie = cookies[i];
String name = cookie.getName();
if(name != null && name.startsWith("myshopping_cookie_")){
String value = cookie.getValue();
value = URLDecoder.decode(value, "UTF-8");
cookieInfoStr.append((value + " "));
}
}
}
//判断 StringBuffer 是否为空串, 若为空串, 则说明没有 Cookie 信息
if(cookieInfoStr != null && !cookieInfoStr.toString().equals("")){
out.println("<br><br><hr><br><br>");
out.println("您浏览过的历史有: ");
out.println(cookieInfoStr.toString());
}
}
}
最后页面显示的结果:
您浏览过的历史有: Java编程指南 Apache从入门到精通 Weblogic技术参考
通过这里我们可以看到MV设计模式给我们开发项目带来了方便!但是真的要学会应用还是需要不断的做项目提炼自己的!这两天我们才完成项目的一半,还有分页之类的功能还没有实现的!明天来实现这一功能.
- 简易购物车---获取图书信息
- 简易购物车
- php简易购物车
- 简易购物车
- 简易购物车---分页
- 简易购物车
- 简易购物车
- 简易购物车
- Servlet简易购物车
- 简易版购物车
- 简易购物车实现
- 简易购物车---购物车的实现
- MVC简易购物车项目--购物大厅
- 简易Session版购物车
- JavaWeb_Session实现简易购物车
- 简易购物车的实现
- JSP-----------简易购物车代码
- DOM简易购物车实例
- cookie
- session的应用
- 在qt creator中引入动态链接库
- 关于验证码的应用
- 简易购物车
- 简易购物车---获取图书信息
- 简易购物车---分页
- 简易购物车---购物车的实现
- 如何编程实现关闭IE窗口
- Struts(一)
- Struts(二)
- Struts(三)文件上传
- JavaMail开发
- Struts(四)validator框架的应用