⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shoppingservlet.java

📁 《JSP2.0技术手册》一书源代码。作者:林上杰
💻 JAVA
字号:
package tw.com.javaworld.CH18;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ShoppingServlet extends HttpServlet {
	public void init(ServletConfig conf) throws ServletException {
		super.init(conf);
	}
	public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException {
		HttpSession session = req.getSession(false);

		// 若session为null时,程序将导向 Error.html
		if (session == null) {
			res.sendRedirect("Error.html");
		}
		Vector buylist = (Vector) session.getAttribute("shoppingcart");
		String action = req.getParameter("action");

		if (!action.equals("CHECKOUT")) {

			//  删除购物车中的书籍
			if (action.equals("DELETE")) {
				String del = req.getParameter("del");
				int d = (new Integer(del)).intValue();
				buylist.removeElementAt(d);
			}
			// 新增书籍至购物车中
			else if (action.equals("ADD")) {
				boolean match = false;

				// 取得后来新增的书籍
				Book abook = getBook(req);

				// 新增第一本书籍至购物车时
				if (buylist == null) {
					buylist = new Vector();
					buylist.addElement(abook);
				} else {
					for (int i = 0; i < buylist.size(); i++) {
						Book book = (Book) buylist.elementAt(i);

						// 假若新增的书籍和购物车的书籍一样时
						if (book.getName().equals(abook.getName())) {
							book.setQuantity(
								book.getQuantity() + abook.getQuantity());
							buylist.setElementAt(book, i);
							match = true;
						} //end of if name matches
					} // end of for

					// 假若新增的书籍和购物车的书籍不一样时
					if (!match)
						buylist.addElement(abook);
				}
			}

			session.setAttribute("shoppingcart", buylist);
			String url = "/CH18/EShop.jsp";
			ServletContext sc = getServletContext();
			RequestDispatcher rd = sc.getRequestDispatcher(url);
			rd.forward(req, res);
		}

		// 结账,计算购物车书籍价钱总数
		else if (action.equals("CHECKOUT")) {
			float total = 0;
			for (int i = 0; i < buylist.size(); i++) {
				Book order = (Book) buylist.elementAt(i);
				float price = order.getPrice();
				int quantity = order.getQuantity();
				total += (price * quantity);
			}

			String amount = new Float(total).toString();
			req.setAttribute("amount", amount);
			String url = "/CH18/Checkout.jsp";
			ServletContext sc = getServletContext();
			RequestDispatcher rd = sc.getRequestDispatcher(url);
			rd.forward(req, res);
		}
	}

	private Book getBook(HttpServletRequest req) {
		
		String name = encoding(req.getParameter("name"));
		String quantity = encoding(req.getParameter("quantity"));
		String author = encoding(req.getParameter("author"));
		String publisher = encoding(req.getParameter("publisher"));
		String price = encoding(req.getParameter("price"));
		
		Book bk = new Book();

		bk.setName(name);
		bk.setAuthor(author);
		bk.setPublisher(publisher);
		bk.setPrice((new Float(price)).floatValue());
		bk.setQuantity((new Integer(quantity)).intValue());
		return bk;
	}
	
	private String encoding(String str) {
	
		try {
			str = new String(str.getBytes("ISO-8859-1"), "GB2312");
		} catch (UnsupportedEncodingException uee) {
			System.out.println("UnsupportedEncodingException:" + uee.getMessage());
		}
		
		return str;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -