`

mvc实现一个很简单的书店(帮忙看看解答错误)

阅读更多

//通过绘画对象传递数据,利用javabean封装处理过程,用一个Servlet作为控制器

//不过有点错误,我把jsp贴出来

//Book.java
/*封装图书对象
 */
package bookstoreMVC;

public class Book {

	private String bookId ;
	private String bookName ;
	private float price ;
	
	public Book(String Id, String Name, float price){
		this.bookId = Id ;
		this.bookName = Name ;
		this.price = price ;
	}
	
	public String getBookId(){
		return bookId ;
	}
	
	public String getBookName(){
		return bookName ;
	}
	
	public float getPrice(){
		return price ;
	}
}
//BookDB.java:没有用数据库存放图书,使用了此类,比较简单
package bookstoreMVC;

import java.util.*;

public class BookDB {

	private ArrayList books ;
	
	public BookDB(){
		
		books = new ArrayList() ;
		
		Book book ;
		
		book = new Book("1", "新概念英语", (float)8.30) ;
		books.add(book) ;
		
		book = new Book("2", "考研英语词汇", (float)15.70) ;
		books.add(book) ;
		
		book = new Book("3", "美语发音基础", (float)6.20) ;
		books.add(book) ;
		
		book = new Book("4", "随机数学", (float)18.90) ;
		books.add(book) ;
		
		book = new Book("5", "离散数学", (float)20.10) ;
		books.add(book) ;
		
		book = new Book("6", "图论", (float)27.40) ;
		books.add(book) ;
		
		book = new Book("7", "算法导论", (float)69.30) ;
		books.add(book) ;
		
		book = new Book("8", "JAVA核心技术", (float)108.30) ;
		books.add(book) ;
		
		book = new Book("9", "搜索引擎", (float)58.20) ;
		books.add(book) ;
	}
	
	public Book getBook(String bookId){
		if(bookId == null)
			return null ;
		for(Iterator it = books.iterator();it.hasNext();){
			
			Book book = (Book)it.next() ;
			if(book.getBookId().equals(bookId))
				return book ;
		}
		return null ;
	}
	
	public ArrayList getBooks(){
		return books ;
	}
}

//ShoppingCart.java
package bookstoreMVC;

import java.util.*;

public class ShoppingCart {

	HashMap items = null ;
	int numberOfItems = 0 ;
	
	public ShoppingCart(){
		items = new HashMap() ;
	}
	
	public synchronized void add(String bookId, Book book){
		
		if(items.containsKey(bookId)){
			ShoppingCartItem oldItem = (ShoppingCartItem)items.get(bookId) ;
			oldItem.increase() ;
		}
		else{
			ShoppingCartItem newItem = new ShoppingCartItem(book) ;
			items.put(bookId, newItem) ;
		}
	}
	
	public synchronized void remove(String bookId){
		
		if(items.containsKey(bookId)){
			
			ShoppingCartItem item = (ShoppingCartItem)items.get(bookId) ;
			item.decrease() ;
			if(item.getNumber()<=0)
				items.remove(bookId) ;
		}
	}
	
	public synchronized List getItems(){
		List result = new ArrayList() ;
		Iterator it = items.values().iterator() ;
		while(it.hasNext())
			result.add(it.next()) ;
		return result ;
	}
	
	public synchronized int getNumberOfItems(){
		
		numberOfItems = 0 ;
		for(Iterator it = getItems().iterator(); it.hasNext(); ){
			ShoppingCartItem item = (ShoppingCartItem)it.next() ;
			numberOfItems += item.getNumber() ;
		}
		return numberOfItems ;
	}
	
	public synchronized float getTotal(){
		
		double total = 0 ;
		for(Iterator it = getItems().iterator(); it.hasNext(); )
		{
			ShoppingCartItem item = (ShoppingCartItem)it.next() ;
			total += (double)(item.getBook().getPrice())*item.getNumber() ;
		}
		return (float)(Math.round(total*100)/100.0) ;
	}
	
	public synchronized void clear(){
		items.clear() ;
		numberOfItems = 0 ;
	}
}


//ShoppingCartItem.java
package bookstoreMVC;

public class ShoppingCartItem {

	Book book ;
	int number ;
	
	public ShoppingCartItem(Book book){
		this.book = book ;
		number = 1 ;
	}
	
	public void increase(){
		number ++ ;
	}
	
	public void decrease(){
		number -- ;
	}
	
	public int getNumber(){
		return number ;
	}
	
	public Book getBook(){
		return book ;
	}
	
	public void setNumber(int num){
		this.number = num ;
	}
}

//Dispatcher.java: Servlet
package bookstoreMVC;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.* ;
import javax.servlet.http.*;

public class Dispatcher extends HttpServlet {

	 
	public void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException 
	{
		String bookId = null ;
		String clear = null ;
		Book book = null ;
		BookDB bookDB = new BookDB() ;
		
		HttpSession session = req.getSession() ;
		String selected = req.getServletPath() ;
		
		ShoppingCart cart = (ShoppingCart)session.getAttribute("cart") ;
		
		if(cart == null){
			cart = new ShoppingCart() ;
			session.setAttribute("cart",cart) ;
		}
		if(selected.equals("/bookcatalog")){
			bookId = req.getParameter("Add") ;
			if(bookId != null){
				book = bookDB.getBook(bookId) ;
				cart.add(bookId,book) ;
			}
		}
		else if(selected.equals("/bookshowcart")){
			bookId = req.getParameter("Remove") ;
			if(bookId != null){
				cart.remove(bookId) ;
			}
			clear = req.getParameter("Clear") ;
			if(clear != null && clear.equals("clear")){
				cart.clear() ;
			}
		}
		
		String selectedpage="/src/bookstoreMVC/" + selected + ".jsp" ;
		
		try{
			req.getRequestDispatcher(selectedpage).forward(req, res) ;
		}catch(Exception e){
			e.printStackTrace() ;
		}
		
	}

	 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String selectedpage = "/src/bookstoreMVC/" + request.getServletPath() + ".jsp" ;
		try{
			request.getRequestDispatcher(selectedpage).forward(request, response) ;
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}


//jsp

//head.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Head.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body bgcolor="#EEF9DF">
     <center>
     <font size="4">BookStore</font>
     <hr/><br/>
  
//end.html
<hr/><br/>
<font size="3">BookStore</font>
</center>
</body>
</html>

//Global.jsp
<%@ page import="java.util.*,bookstoreMVC.*"%>
<% ShoppingCart cart = (ShoppingCart)session.getAttribute("cart") ;
	if(cart == null){
		
		cart = new ShoppingCart() ;
		session.setAttribute("cart", cart) ;
	
	}	
%>




//bookstore.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"
		errorPage=""%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd" >

<%@page pageEncoding="gb2312" %>
<%request.setCharacterEncoding("gb2312"); %>
<%@page import="java.util.*,bookstoreMVC.*" %>
<jsp:useBean id="bookDB" class="bookstoreMVC.BookDB" scope="session" />
<%@include file="Head.html" %>
<table>
	<%for(ListIterator it = bookDB.getBooks().listIterator(); it.hasNext();){
	
		Book book = (Book)it.next() ;
	 %>
	 <tr>
	 	<td bgcolor="#99CCCC" height="20" width="150">
	 		<b>
	 		<%=book.getBookName() %>
	 		</b>
	 	</td>
	 	
	 	<td bgcolor="#CCFF99" height="20" width="50">
	 		<font size=2 color="#FF0000">
	 		<%=book.getPrice() %>
	 		</font>
	 	</td>
	 	
	 	<td bgcolor="ffffaa" height="20" width="100">
	 		<a href="bookcatalog?Add=<%=book.getBookId() %>">
	 		<font size="2" color="0000ff">加入购物车
	 		</font></a>
	 	</td>
	 </tr>
    <%}%>
</table>	
<%@include file="end.html" %>	

//bookstorecatalog.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"
		errorPage=""%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd" >

<%@page pageEncoding="gb2312" %>
<%request.setCharacterEncoding("gb2312"); %>
<%@include file="Global.jsp"%>
<%@include file="Head.html"%>
<jsp:useBean id="bookDB" class="bookstoreMVC.BookDB" scope="session"/>
<%
	String bid = request.getParameter("Add");
	Book addBook = null ;
	if(bid != null){
		addBook = bookDB.getBook(bid);
	}		
 %>
 <%
 	if(bid != null){
  %>
  		<font color="red" size="3">
  		<%=addBook.getBookName() %>
  		</font>
  		<br/>
<%}%>

<%
	if(cart.getNumberOfItems()>0)
	{
%>
		<a href="bookshowcart?Clear=0&Remove=0">
		<font size="2" color="#0000FF">
		查看购物车
		</font></a>	
		&nbsp;&nbsp;&nbsp;&nbsp;
		<a href="bookcashier">
		<font size="2" color="#0000FF">
		结账</font></a>
	<%} %>
<table>
	<%for(ListIterator it = bookDB.getBooks().listIterator();it.hasNext();){
			Book book = (Book)it.next(); %>
  			<tr>
  				<td bgcolor="#99CCCC" height="20" width="150">
  					<b>
  					<%=book.getBookName() %>
  					</b>
  				</td>
  				
  				<td bgcolor="#CCFF99" height="20" width="100">
  					<font size=2 color="#FF0000">
  					<%=book.getPrice() %></font>
  				</td>
  				
  				<td bgcolor="ffffaa" height="20" width="100">
  					<a href="bookcatalog?Add=<%=book.getBookId() %>">
  					<font size="2" color="0000ff">
  					加入购物车</font></a>			
  				</td>
  			</tr>
  	<%} %>		
</table>

<%@ include file="end.html"%>

//bookshowcart.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"
		errorPage=""%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd" >

<%@page pageEncoding="gb2312" %>
<%request.setCharacterEncoding("gb2312"); %>
<%@include file="Global.jsp"%>
<%@include file="Head.html"%>
<jsp:useBean id="bookDB" class="bookstoreMVC.BookDB" scope="session" />

<% 
	String clear = request.getParameter("Clear") ;
	String remove = request.getParameter("Remove") ;
%>

<%
	if(clear != null && clear.equals("clear"))
	{
 %>	
 		<font color="red" size="2">
 		购物车已清空</font>
 		<br/><br/>
 <% } %>
 <%
 	if(!remove.equals("0"))
 	{
 		Book removeBook = bookDB.getBook(remove) ;
 %>
 		<font size="2">
 		已删除
 		</font>
 		<font color="red" size="2">
 		<%=removeBook.getBookName() %>
 		</font><br/><br/>
 <% } %>
 <%
 	if(cart.getNumberOfItems()>0)
 	{
  %>
  		<font size="2">
  		购物清单</font><br/>
  		<table>
 			<tr>
 				<th align="left" width="50"><font size="2">数量</font></th>
 				<th align="left" width="150"><font size="2">书名</font></th>
 				<th align="left" width="50"><font size="2">价格</font></th>
 			</tr>
 			<%for(Iterator it=cart.getItems().iterator();it.hasNext();){
 					ShoppingCartItem item = (ShoppingCartItem)it.next() ;
 					Book book = (Book)item.getBook();
 			 %>
 			 <tr bgcolor="#CCFFCC">
 			 	<td align="left">
 			 		<font size="2"><%=item.getNumber() %></font>
 			 	</td>
 			 	<td align="left">
 			 		<%=book.getBookName() %>
 			 	</td>
 			 	<td align="left">
 			 		<font size="2"><%=book.getPrice() %></font>
 			 	</td>
 			 	<td align="left">
 			 		<a href="booksshowcart?Remove=<%=book.getBookId() %>">
 			 		<font size="2" color="#0000FF">删除</font></a>
 			 	</td>
 			 </tr>
 			 <%} %>
  		</table>	
  			<br/>	
  		<table>
			
			<tr>
				<td colspan=2 align=right>
					<font color="#FF0000">总计:</font>
				</td>
				<td align=right>
					<font color="#FF0000"><%=cart.getTotal() %>元</font>
				</td>
			</tr>
			  		
  		</table>
  		
  		<br/>
  		
  		<a href="bookcatalog"><font size=2 color="#0000FF">继续购物</font></a>
  		&nbsp;&nbsp;&nbsp;&nbsp;
  		<a href="bookcashier"><font size=2 color="#0000FF">结账</font></a>
  		&nbsp;&nbsp;&nbsp;&nbsp;
  		<a href="bookshowcart?Clear=clear&Remove=0"><font size=2 color="#0000FF">清空购物车</font></a>
  		&nbsp;&nbsp;&nbsp;&nbsp;
  <%}else{ %>
  		<font size="2">购物车内没有商品</font>	
  		<br/>
  		<a href="bookcatalog"><font size=2 color="#0000FF">继续购物</font></a>
  <%} %>
  <%@include file="end.html" %>			

//bookcashier.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"
		errorPage=""%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd" >

<%@page pageEncoding="gb2312" %>
<%request.setCharacterEncoding("gb2312"); %>
<%@include file="Global.jsp"%>
<%@include file="Head.html"%>
<jsp:useBean id="bookDB" class="bookstoreMVC.BookDB" scope="session" />
总计:
<%=cart.getTotal()%>
<form action="bookreceipt" method="post">
	<table>
		<tr>
			<td>姓名:</td>
			<td><input type="text" name="cardname" value="" size=20/></td>
		</tr>
		<tr>
			<td>信用卡号:</td>
			<td><input type="text" name="cardnumber" value="" size=20/></td>
		</tr>
		<tr>
			<td colspan=2><input type="submit" value="提交"/></td>
		</tr>
	</table>
</form>
<%@includel file="end.html"%>

//bookreceipt.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"
		errorPage=""%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd" >

<%@page pageEncoding="gb2312" %>
<%request.setCharacterEncoding("gb2312"); %>
<%@page import="java.util.Date"%>
<%@include file="Global.jsp"%>
<%@include file="Head.html"%>
<jsp:useBean id="bookDB" class="bookstoreMVC.BookDB" scope="session" />
<%=request.getParameter("cardname")%>,谢谢惠顾
<br/><br/>
发货时间:<%=new Date((new Date()).getTime()+86400000)%>
<br/>br>
<%session.removeAttribute("cart");%>
<a href="bookstore">
	<font size="2" color="#0000FF">继续购物</font>
</a>
<%@include file="end.html" %>





 

 

 

MVC 文件 类型
Model

BookDB.java

Book.java

ShoppingCart.java,

ShoppingCartItem.java

JavaBean
View

bookstore.jsp

bookcatalog.jsp

bookcashier.jsp

bookreceipt.jsp

bookshowcart.jsp

jsp页面
Controller Dispatcher.java Servlet
0
1
分享到:
评论
1 楼 gtandsn 2011-05-11  
还行吧,基础很到位,

相关推荐

Global site tag (gtag.js) - Google Analytics