eclipse 웹 프로젝트 자바 웹 카 트 구현 방법

본 고 는 eclipse 로 쓴 첫 번 째 자바 웹 프로젝트 C 심 플 카 트 를 실현 하도록 이 끌 것 이다.글 은 문제 분석,구체 적 실현 과 흔히 볼 수 있 는 문제 세 가지 부분 에서 여러분 에 게 상세 하 게 설명 할 것 입 니 다.
문제 분석:
우선 우 리 는 우리 가 완성 해 야 할 것 이 무엇 인지 알 아야 한다.-카 트.그리고 카 트 를 실현 하 는 것 은 무엇 일 까요?카 트 에 마음 에 드 는 상품 을 추가 하 는 거 아 닙 니까?그럼 가격 계산 도 해 야 되 는 거 아니 야?기왕 우리 가 문제 의 본질 을 이해 한 이상,우 리 는 이어서 구체 적 으로 실현 해 야 한다.
구체 적 인 실현:
우선 우 리 는 프로젝트 전체의 구 조 를 살 펴 봐 야 한다.

다음은 우리 가 먼저 실체 류 를 만들어 야 한다.바로 우리 의 상품,예매 상품 과 카 트 등 세 가지 실체 류 이다.
Beans
카 트 류(이 종 류 는 카 트 실체 류 로 카 트 에 추 가 된 상품 과 총 두 가지 속성 을 포함한다.)

package Beans;

import java.util.HashMap;

public class Cart {
 private HashMap<String,CartItem> cartItems=new HashMap<String,CartItem>();//         
 
 private double total;//  
 
 public HashMap<String, CartItem> getCartItems() {
 return cartItems;
 }
 public void setCartItems(HashMap<String, CartItem> cartItems) {
 this.cartItems = cartItems;
 }
 
 public double getTotal() {
 return total;
 }
 
 public void setTotal(double total) {
 this.total = total;
 }

}
카 트 아 이 템 류(카 트 에 추 가 된 상품 류 로 상품,상품 개수,소계 포함)

package Beans;

public class CartItem {
  private Product product;//  
 
 private int buyNum;//  
 
 private double subTotal;//  
 
 public Product getProduct() {
 return product;
 }
 
 public void setProduct(Product product) {
 this.product = product;
 }
 
 public int getBuyNum() {
 return buyNum;
 }
 
 public void setBuyNum(int buyNum) {
 this.buyNum = buyNum;
 }
 
 public double getSubTotal() {
 return subTotal;
 }
 
 public void setSubTotal(double subTotal) {
 this.subTotal = subTotal;
 }

}
제품 류(여 기 는 구체 적 인 상품 류 로 상품 번호,상품 명 과 상품 가격 의 세 가지 속성 을 포함 합 니 다)

package Beans;

public class Product {
 private String pid;//    
 private String name;//   
 private double price;//    
 public String getPid() {
 return pid;
 }
 public void setPid(String pid) {
 this.pid = pid;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public double getPrice() {
 return price;
 }
 public void setPrice(double price) {
 this.price = price;
 }
 
 public Product(String pid,String name,double price) {
 // TODO Auto-generated constructor stub
 this.pid = pid;
 this.name = name;
 this.price = price;
 }
 
}
Service
이 가방 아래 에는 한 가지 종류 만 있 는데 주요 한 역할 은 상품 을 저장 하고 상품 번호 에 따라 상품 을 찾 을 수 있 습 니 다.
제품 서비스 클래스

package Service;

import java.util.HashMap;

import Beans.CartItem;
import Beans.Product;

public class ProductService {
 
 private HashMap<String,CartItem> cartItems=new HashMap<String,CartItem>();
 
 public ProductService() //    
 {
  CartItem cartltem1=new CartItem();
  CartItem cartltem2=new CartItem();
  Product product1=new Product("001","Mobilephone",1000);
  Product product2=new Product("002","Watch",100);
  cartltem1.setProduct(product1);
  cartltem2.setProduct(product2);
 cartItems.put("001",cartltem1);
 cartItems.put("002", cartltem2);
 }
 
 public Product findProductbypid(String pid)
 {
 CartItem cartItem=cartItems.get(pid);
 Product product=cartItem.getProduct();
 return product;
 }
}
Servelet
ProductServlet 클래스(여기 서 자주 1,httpservlet 클래스 를 잘못 보고 하여 계승 할 수 없습니다.httpservelet 클래스 는 tomcat 아래 에 있 기 때문에 tomcat 가 항목 에 설정 되 어 있 지 않 거나 httpservelet 클래스 가 가 져 오지 않 았 을 수도 있 으 므 로 tomcat 를 다시 가 져 옵 니 다.2.dopost 와 doget 두 가지 기본 적 인 방법 으로 오 류 를 사용 하여 페이지 에서 보 내 온 데 이 터 를 처리 할 수 없습니다.해결:servelet 클래스 의 방법 은 페이지 선택 방법 과 일치 해 야 합 니 다.3.난 코드,중국어 난 코드;해결:중국어 인 코딩 은 utf-8[servlet 인 코딩 을 바 꾸 는 것 이 req,resp 설정]이 고 페이지 와 배경 에서 사용 하 는 인 코딩 이 일치 해 야 합 니 다.)
이 경로 설정 은 탭(편리)을 사용 하고 xml 설정 도 사용 할 수 있 습 니 다.

package Servlet;


import java.io.IOException;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import Beans.Cart;
import Beans.CartItem;
import Beans.Product;
import Service.ProductService;


@WebServlet("/productServlet")
public class ProductServlet extends HttpServlet{
 
 /**
 * 
 */
 private static final long serialVersionUID = 1L;


 
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
 ProductService productService = new ProductService();
 
 
 String pid=(String)req.getParameter("Product");
 int buyNum=Integer.parseInt(req.getParameter("number"));
 HttpSession session=req.getSession();
 Cart cart=(Cart)session.getAttribute("cart");
 if(cart==null) {
 cart=new Cart();
 }
 CartItem cartItem=new CartItem();
 cartItem.setBuyNum(buyNum);
 
 Product product=productService.findProductbypid(pid);
 cartItem.setProduct(product);
 double subTotal=product.getPrice()*buyNum;
 cartItem.setSubTotal(subTotal);
 
 HashMap<String, CartItem> cartItems=cart.getCartItems();
 double newSubTotal=0;
 if(cartItems.containsKey(pid)) {
 CartItem item=cartItems.get(pid);
 
 int oldBuyNum= item.getBuyNum();
 oldBuyNum=oldBuyNum+buyNum;
 item.setBuyNum(oldBuyNum);
 
 double oldSubTotal= item.getSubTotal();
 newSubTotal=buyNum*product.getPrice();
 oldSubTotal=oldSubTotal+newSubTotal;
 item.setSubTotal(oldSubTotal);
 }
 else {
 cartItems.put(pid, cartItem); 
 newSubTotal=buyNum*product.getPrice();
 }
 double total=cart.getTotal()+newSubTotal;
 cart.setTotal(total);
 cart.setCartItems(cartItems);
 session.setAttribute("cart", cart);
 req.getRequestDispatcher("cart.jsp").forward(req, resp); 
 }
  
}
cart.jsp
다른 종 류 를 가 져 와 야 합 니 다.<%@page import="%>탭 을 사용 하 십시오.

<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
 <%@
 page import="Beans.Cart"
 %>
 <%@
 page import="Beans.CartItem"
 %>
 <%@
 page import="Beans.Product"
 %>
 <%@page import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<% Cart cart=(Cart)request.getSession().getAttribute("cart");
  if(cart==null) {
 %>
 <p>It is nothing!</p>
 <%
  }
  else{
  HashMap<String, CartItem> cartItems=cart.getCartItems();
  double total=cart.getTotal(); 
  %>
  Your product list:<br>
  <%
  Set<String> keys=cartItems.keySet();
  Iterator<String> iter = keys.iterator();
  while(iter.hasNext()){
  String key= iter.next();
  CartItem cartItem=cartItems.get(key);
  Product product=cartItem.getProduct();
  out.print(product.getName()+" ") ;
  out.println("price:"+product.getPrice()+"$") ;
  out.println("number:"+cartItem.getBuyNum());
  };
  %>
 <br>
 <%
 out.print("    total:"+total+"$");
 }
 %>
  
 

</body>
</html>
index.jsp
action="속성의 설정 은 배경 설정 의"/productServlet"경로 만 쓸 수 없습니다.반드시<%=request.getContextPath()%>를 추가 해 야 합 니 다.그렇지 않 으 면 경 로 를 찾 을 수 없습니다.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body> 
 Please select the item you want to buy.<br>
 <form action="<%=request.getContextPath() %>/productServlet" method="post">
 Mobile phone(1000$)
 <input name="Product" type="radio" value="001" checked="checked"><br>
 Watch(100$)
 <input name="Product" type="radio" value="002"><br>
 please input the number!
 number:<input name="number" type="number"><br>
 <input type="submit" value="ok!">
 </form>
</body>
</html>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기