ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ERMaster] shoppingmall - main
    WEB/ERMaster 2022. 9. 10. 12:03

    Run 시작페이지

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>index.jsp</title>
    </head>
    <body>
    <%
    response.sendRedirect("shop.do?command=index");
    %>
    </body>
    </html>

     

    Servlet

    package com.sam.shop.controller;
    
    import java.io.IOException;
    
    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 com.sam.shop.controller.action.Action;
    
    @WebServlet("/shop.do")
    public class ShoppingMallServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        public ShoppingMallServlet() {
            // TODO Auto-generated constructor stub
        }
    
    	protected void doGet(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		String command=request.getParameter("command");
    		ActionFactory af=ActionFactory.getInstance();
    		Action ac=af.getAction(command);
    		if(ac!=null) ac.execute(request,response);
    		else System.out.println("ac=null");
    	}
    
    	protected void doPost(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    }

     

    ActionFactory

    package com.sam.shop.controller;
    import com.sam.shop.controller.action.Action;
    public class ActionFactory {
    	private ActionFactory() {}
    	private static ActionFactory itc = new ActionFactory();
    	public static ActionFactory getInstance() { return itc; }
    	
    	public Action getAction(String command) {
    		Action ac = null;
            // 이 안에 command가 실행될 코드 들어감
            // *배경색 줄무늬로 표시*
            return ac;
    	}
    }

     

    Action interface

    package com.sam.shop.controller.action;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public interface Action {
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response)
    			throws ServletException, IOException;
    }

     

     

    Server에 Resource 코드 추가

     

     
    server.xml 파일 코드 수정
     
    해당 프로젝트 이름: WEB12_ShoppingMall
    <Context docBase="WEB12_ShoppingMall"
    	path="/WEB12_ShoppingMall" reloadable="true"
    	source="org.eclipse.jst.jee.server:WEB12_ShoppingMall">
    	<Resource auth="Container" 
    	driverClassName="oracle.jdbc.OracleDriver" 
    	maxIdle="10" maxTotal="20" maxWaitMillis="-1" 
    	name="jdbc/myoracle" 
    	password="tiger" type="javax.sql.DataSource" 
    	url="jdbc:oracle:thin:@127.0.0.1:1521:xe" username="scott"/>
    </Context>

     

    *jsp 파일 코드는 배경 검은색으로 표시

    쇼핑몰 메인 페이지 제작

    1. 페이지 상단 제작
    <%@ 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>
    <meta charset="UTF-8">
    <title>hearder.jsp</title>
    <link href="css/shopping.css" rel="stylesheet">
    </head>
    <body>
    
    <div id="wrap">
    
    	<header>
    
    <!-- 로고, 주 상단 메뉴, 카테고리 메뉴가 표시되는 영역 -->		
    		<div id="logo">
    			<a href="">
    			   <img src="images/logo.png" width="180" height="100">
    			</a>
    		</div>
    		
    		<nav id="top_menu"><!-- LOGIN CART MYPAGE 등등 -->
    			<ul>
    				<c:choose>
    					<c:when test="${empty loginUser}">
    						<li><a href="">LOGIN</a></li>
    						<li><a href="">JOIN</a></li>
    					</c:when>
    					<c:otherwise>
    						<li>${loginUser.name}(${loginUser.id})</li>
    						<li><a href="">정보수정</a></li>
    						<li><a href="">LOGOUT</a></li>
    					</c:otherwise>
    				</c:choose>
    				<li><a href="">CART</a></li>
    				<li><a href="">MY PAGE</a></li>
    				<li><a href="">Q&amp;A</a></li>
    			</ul>
    		</nav>
    		
    <!-- 카테고리 메뉴 Heels Boots Sandals ...등 -->
    		<nav id="catagory_menu">
    			<ul>
    				<li><a href="">Heels</a></li>
    				<li><a href="">Boots</a></li>
    				<li><a href="">Sandals</a></li>
    				<li><a href="">Sneakers</a></li>
    				<li><a href="">Sleeper</a></li>
    				<li><a href="">On Sale</a></li>
    			</ul>
    		</nav>
    		
    	</header>
    	
    </body>
    </html>

    2. 쇼핑몰 하단 제작

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%-- footer.jsp --%>
    <div class="clear"></div>
    <footer>
    	<hr>
    	<div id="copy">
    	All contents Copyright 2022 HJKang.co Inc. all rights
    	reserved<br>Content mail : abc@abc.com Tel : +82 02 1234 1234
    	Fax : +82 02 1233 1233</div>
    </footer>
    </div>
    </body>
    </html>

    3. 쇼핑몰 메인 제작

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%-- main.jsp --%>
    <%@ include file="header.jsp" %>
    
    <!-- 메인 이미지 시작: 각 기능별 페이지를 대표하는 이미지 -->
    <div id="main_img">
    	<img src="images/main_img.jpg" 
    		style="border-radius:20px 20px 20px 20px; 
    		border:2px solid white;">
    </div>
    
    <!-- 신상품 -->
    <h2>New Item</h2>
    <div id="bestProduct">
    	<c:forEach items="${newList}" var="productVO">
    	<div id="item"><!-- 상품 한개, 한칸 -->
    		<a href="">
    			<img src="product_images/${productVO.image }"/>
    			<h3>${productVO.name }
    				- <fmt:formatNumber value="${productVO.price2}"
    					type="currency"/></h3>
    			</a>
    	</div>
    	</c:forEach>
    </div>
    
    <!-- 베스트 상품 -->
    <h2>Best Item</h2>
    <div id="bestProduct">
    	<c:forEach items="${bestList}" var="productVO">
    	<div id="item"><!-- 상품 한개, 한칸 -->
    		<a href="">
    			<img src="product_images/${productVO.image }"/>
    			<h3>${productVO.name }
    				- <fmt:formatNumber value="${productVO.price2}"
    					type="currency"/></h3>
    			</a>
    	</div>
    	</c:forEach>
    </div>
    
    <%@ include file="footer.jsp" %>

     

    ActionFatory에 index command 추가

    if(command.equals("index")) ac=new IndexAction();
    package com.sam.shop.controller.action;
    
    import java.io.IOException;
    import java.util.ArrayList;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class IndexAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    // 베스트 상품과 신상품 목록을 조회&리퀘스에 담아서 main.jsp로 이동
    		ProductDao pdao = ProductDao.getInstance();
    		
    		ArrayList<ProductVO> bestList = pdao.getBestList();
    		ArrayList<ProductVO> newList = pdao.getNewList();
    		
    		request.setAttribute("bestList", bestList);
    		request.setAttribute("newList", newList);
    		
    		RequestDispatcher dispatcher 
    			= request.getRequestDispatcher("main.jsp");
    		dispatcher.forward(request, response);
    	}
    }

     

    Product Dto

    package com.sam.shop.dto;
    
    import java.sql.Timestamp;
    
    public class ProductVO {
    	private Integer pseq;
        private String name;
        private String kind;   
        private Integer price1;
        private Integer price2;
        private Integer price3;
        private String content;
        private String image;
        private String useyn;
        private String bestyn;
        private Timestamp indate;
        
    	public Integer getPseq() {
    		return pseq;
    	}
    	public void setPseq(Integer pseq) {
    		this.pseq = pseq;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getKind() {
    		return kind;
    	}
    	public void setKind(String kind) {
    		this.kind = kind;
    	}
    	public Integer getPrice1() {
    		return price1;
    	}
    	public void setPrice1(Integer price1) {
    		this.price1 = price1;
    	}
    	public Integer getPrice2() {
    		return price2;
    	}
    	public void setPrice2(Integer price2) {
    		this.price2 = price2;
    	}
    	public Integer getPrice3() {
    		return price3;
    	}
    	public void setPrice3(Integer price3) {
    		this.price3 = price3;
    	}
    	public String getContent() {
    		return content;
    	}
    	public void setContent(String content) {
    		this.content = content;
    	}
    	public String getImage() {
    		return image;
    	}
    	public void setImage(String image) {
    		this.image = image;
    	}
    	public String getUseyn() {
    		return useyn;
    	}
    	public void setUseyn(String useyn) {
    		this.useyn = useyn;
    	}
    	public String getBestyn() {
    		return bestyn;
    	}
    	public void setBestyn(String bestyn) {
    		this.bestyn = bestyn;
    	}
    	public Timestamp getIndate() {
    		return indate;
    	}
    	public void setIndate(Timestamp indate) {
    		this.indate = indate;
    	}
    }

     

    Product Dao

    package com.sam.shop.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class ProductDao {
    	private ProductDao() {}
    	private static ProductDao itc = new ProductDao();
    	public static ProductDao getInstance() { return itc; }
    	
    	Connection con=null;
    	PreparedStatement pstmt=null;
    	ResultSet rs=null;
    }

     

    ProductDao에 getBestList, getNewList 추가

    public ArrayList<ProductVO> getBestList() {
    	ArrayList<ProductVO> list = new ArrayList<ProductVO>();
    	String sql = "select * from best_pro_view";
    con = Dbman.getConnection();
    try {
    	pstmt = con.prepareStatement(sql);
    	rs = pstmt.executeQuery();
    	while( rs.next() ) {
    		ProductVO pvo = new ProductVO();
    		pvo.setPseq( rs.getInt("pseq") );
    		pvo.setName( rs.getString("name") );
    		pvo.setPrice2( rs.getInt("price2") );
    		pvo.setImage( rs.getString("image") );
    			list.add(pvo);
    		}
    	} catch (SQLException e) {  e.printStackTrace();
    	} finally { Dbman.close(con, pstmt, rs);   }		
    	return list;
    }
    
    public ArrayList<ProductVO> getNewList() {
    	ArrayList<ProductVO> list = new ArrayList<ProductVO>();
    	String sql = "select * from new_pro_view";
    con = Dbman.getConnection();
    try {
    	pstmt = con.prepareStatement(sql);
    	rs = pstmt.executeQuery();
    	while( rs.next() ) {
    		ProductVO pvo = new ProductVO();
    		pvo.setPseq( rs.getInt("pseq") );
    		pvo.setName( rs.getString("name") );
    		pvo.setPrice2( rs.getInt("price2") );
    		pvo.setImage( rs.getString("image") );
    			list.add(pvo);
    		}
    	} catch (SQLException e) {  e.printStackTrace();
    	} finally { Dbman.close(con, pstmt, rs);   }		
    	return list;
    }

     

    css

    body{background:#FDE8FF; margin:0; padding:0; 
    font-size:0.75em;}
    #wrap{width:971px; text-align:left; margin:0 auto; 
    			background:#FDE8FF; min-height:780px;}
    #logo{float:left; width:180px; height:100px; margin:40px 0 0 40px;}
    
    nav#top_menu{float:right; margin:20px 64px 0 0;}
    nav#top_menu ul li{display:block; height:30px; float:left; 
    				   font-family:Verdana; font-size:130%;}
    nav#top_menu a{text-decoration:none; display:inline-block; 
    			   width:100px; text-align:center; color:#6F0C78; 
    			   font-weight:bold;}
    nav#top_menu a:hover{color:blue; font-weight:bold;}
    
    nav#catagory_menu{margin:20px 0; float:right;}
    nav#catagory_menu ul{list-style:none; font-family:Verdana;}
    nav#catagory_menu ul li{float:left; margin:0 15px; font-size:14pt;}
    nav#catagory_menu a{display:block; height:20px;  padding:10px;
    					text-decoration:none; color:#6F0C78;}
    nav#catagory_menu a:hover{background-repeat:repeat-x;
    						  background-position:bottom;
     					background-image:url(../images/purple.gif);}
    .clear{clear:both;}
    footer{margin:10px 0 0 0; height:70px; 
    	   background-image:url(../images/bottom_logo.png);
    	 background-repeat:no-repeat; background-position:60px center;}
    footer #copy{margin:5px 0 0 300px; width:600px;}
    
    #bestProduct{border:solid 3px #FFFFFF; border-radius:0px;
    			 width:910px; min-height:260px; background:#F4CBFA; 
    			 padding:10px; text-align:center; margin:0 auto;}
    #item{width:200px; float:left; margin:0 13px; text-align:center;}
    #item img{width:190px; height:200px; overflow:hidden;
    		 border-radius:20px 20px 20px 20px; border:3px solid gray;}
    #main_img{text-align:center;}
    #main_img img{margin:9px 0 0 0;}
     

     

    생성된 메인 화면

     

    댓글

Designed by Tistory.