ProductDetailAction
package net.macaronics.web.controll;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.macaronics.web.controll.action.Action;
import net.macaronics.web.dao.ProductDAO;
import net.macaronics.web.dto.ProductVO;
public class ProductDetailAction implements Action {
final Logger logger =LogManager.getLogger(ProductDetailAction.class);
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String url="product/productDetail.jsp";
String pseq= request.getParameter("pseq").trim();
ProductDAO productDAO =ProductDAO.getInstance();
request.setAttribute("productVO", productDAO.getProduct(pseq)); //1개의 상품
request.setAttribute("bannerProduct", productDAO.bannerProduct()); //배너 상품 4개
RequestDispatcher dispatcher=request.getRequestDispatcher(url);
dispatcher.forward(request, response);
}
}
ActionFactory
package net.macaronics.web.controll.factory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.macaronics.web.controll.IndexAction;
import net.macaronics.web.controll.ProductDetailAction;
import net.macaronics.web.controll.action.Action;
public class ActionFactory {
final Logger logger =LogManager.getLogger(ActionFactory.class);
//싱글톤설정
private static ActionFactory instance;
private ActionFactory(){
super();
}
public static ActionFactory getInstance(){
if(instance==null){
instance=new ActionFactory();
}
return instance;
}
//command 에서 넘어온 파라미터 값이 존재하면 실행
//즉 ,존재하면 url 만 실행된다.
public Action getAction(String command){
Action action=null;
logger.info("ActionFactory : {} ", command);
if(command.equals("index")) action=new IndexAction();
else if(command.equals("product_detail")) action=new ProductDetailAction();
return action;
}
}
productDetail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<jsp:include page="../include/Header.jsp" />
</head>
<body>
<jsp:include page="../include/HeaderMenu.jsp" />
<!-- product category -->
<section id="aa-product-details">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="aa-product-details-area">
<div class="aa-product-details-content">
<div class="row">
<!-- Modal view slider -->
<div class="col-md-5 col-sm-5 col-xs-12">
<div class="aa-product-view-slider">
<div id="demo-1" class="simpleLens-gallery-container">
<div class="simpleLens-container">
<div class="simpleLens-big-image-container"><a data-lens-image="images/${productVO.image }" class="simpleLens-lens-image">
<img src="images/${productVO.image }" class="simpleLens-big-image">
</a></div>
</div>
</div>
</div>
</div>
<!-- Modal view content -->
<div class="col-md-7 col-sm-7 col-xs-12">
<form action="">
<div class="aa-product-view-content">
<h3>${productVO.name}</h3>
<div class="aa-price-block">
<span class="aa-product-view-price"><fmt:formatNumber pattern="#,### 원" value="${productVO.price2}"/></span>
</div>
<p>${productVO.content}</p>
<h4>수량</h4>
<div class="aa-prod-view-size">
<input type="text" name="quantity" value="1" >
<input type="hidden" name="pseq" value="${productVO.pseq}">
</div>
<div class="aa-prod-view-bottom">
<a class="aa-add-to-cart-btn" href="#" onclick="">장바구니에 담기</a>
<a class="aa-add-to-cart-btn" href="#" >즉시구매</a>
<a class="aa-add-to-cart-btn" href="#" >취소</a>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- Related product -->
<div class="aa-product-related-item">
<h3>메인 상품</h3>
<ul class="aa-product-catg aa-related-item-slider">
<c:forEach items="${bannerProduct }" var="productVO">
<li>
<figure>
<a class="aa-product-img" href="MacaronicsServlet?command=product_detail&pseq=${productVO.pseq}"><img src="images/${productVO.image}" alt="신상품 이미지" width="250" height="300"></a>
<a class="aa-add-card-btn"href="#"><span class="fa fa-shopping-cart"></span>장바구니에 담기</a>
<figcaption>
<h4 class="aa-product-title"><a href="#">${productVO.name}</a></h4>
<span class="aa-product-price"><fmt:formatNumber pattern="#,### 원" value="${productVO.price2}"/></span>
</figcaption>
</figure>
<div class="aa-product-hvr-content">
<a href="#" data-toggle="tooltip" data-placement="top" title="Add to Wishlist"><span class="fa fa-heart-o"></span></a>
<a href="#" data-toggle="tooltip" data-placement="top" title="Compare"><span class="fa fa-exchange"></span></a>
<a href="#" data-toggle2="tooltip" data-placement="top" title="Quick View" data-toggle="modal" data-target="#quick-view-modal"><span class="fa fa-search"></span></a>
</div>
</li>
<!-- start single product item -->
</c:forEach>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- / product category -->
<jsp:include page="../include/Footer.jsp" />
실행 화면
제작 : macaronics.net - Developer Jun Ho Choi
소스 : https://github.com/braverokmc79/jsp_sin
루트 설정( http://macaronics.net/index.php/m01/jsp/view/1352) 및 server.xml 에서 DB 컨넥션 설정은 필수 설정이다.















댓글 ( 4)
댓글 남기기