kjh95.tistory.com/286

     

    JSP | 웹스토어 이클립스 | JDBC연동 상품등록 | get 방식으로 페이지 활용 | 상품수정(Update) | 상품삭

    kjh95.tistory.com/285 스토어.." data-og-host="kjh95.tistory.com" data-og-source-url="https://kj.." data-og-host="kjh95.tistory.com" data-og-source-url=".." data-og-host="kjh95.tistory.com" data-og-s..

    kjh95.tistory.com

    웹 사이트 구축 (흐름)

                                   9. 예외처리 페이지 만들기

                                    10. 로그 기록하기

    1. 시작페이지 만들기    

     

    2. 상품목록 표시하기 (DB연결추가) ==> 3. 상품 상세정보 표시하기 ==> 4. 상품 등록 페이지 만들기 => 11. 장바구니 페이지 만들기 => (@현단계)12. 주문처리 페이지 만들기

     

     13. Database ==> 회원가입   5. 상품 이미지 등록하기

     

     14. 게시판 만들기     6. 유효성 검사하기 ==> 7. 다국어 처리하기 ==> 8. 보안 처리하기

    *주문처리 페이지
    - 배송 정보 패키지 => 주문 정보 => 주문 완료
       => 주문 취소    


    DAO

    DB접속에 따른 필요한 기능 구현

     

    getConnection() 구현 -> DB접속하는 메서드(Connection 객체 리턴하는 메서드)

    getAllProducts() 구현 -> 물품목록 출력 (모든 상품정보를 넘겨주는 getter메서드)

    getProductById(String productId)  구현-> listOfProducts에 저장된 모든 상품 목록을 조회해서 상품아이디와 일치하는 상품을 리턴하는 메서드

    ProductRepository.java

    package kr.gov.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    
    import kr.gov.dto.Product;
    
    public class ProductRepository {
    	
    	private ArrayList<Product> listOfProducts = new ArrayList<>();
    	
    	//ProductRepository인스턴스를 하나만 공유하게끔 싱글톤 패턴 사용
    	private static ProductRepository instance = new ProductRepository();
    	
    	//DB 접속에 필요한 멤버
    	private Connection conn = null;
    	private PreparedStatement pstmt = null;
    	private ResultSet rs = null;
    	private static String url = "jdbc:mysql://localhost:3306/webstoredb?serverTimezone=UTC";
    	private static String user = "root";
    	private static String password = "7496";
    	
    	//ProductRepository인스턴스를 리턴하는 getter메서드 
    	public static ProductRepository getInstance() {
    		return instance;
    	}
    	
    	public ProductRepository() {
    		
    		
    		
    		//DB 연동전 임시데이터로 활용
    		
    //		Product phone = new Product("P1234", "iPhone 12 Pro Max", 1490000);
    //		phone.setDescription("6.7-unch, 2778*1284-pixel, OLED Super Retina XDR display, cameras");
    //		phone.setCategory("Smart Phone");
    //		phone.setMenufecturer("Apple");
    //		phone.setUnitprice(1490000);
    //		phone.setNumberOfstock(7000);
    //		phone.setCondition("New");
    //		phone.setFilename("iphone-12-pro-max-gold-hero.jpg");
    //		
    //		Product notebook = new Product("P1235", "LG 울트라 기어", 1930000);
    //		notebook.setDescription("15-unch, 1920*1080-pixel, IPS LED display, 10세대 인텔 코어 i7-10510U 프로세서");
    //		notebook.setCategory("notebook");
    //		notebook.setMenufecturer("LG");
    //		notebook.setUnitprice(1930000);
    //		notebook.setNumberOfstock(5000);
    //		notebook.setCondition("Refurbished");
    //		notebook.setFilename("usp_0103.jpg");
    //		
    //		Product tablet = new Product("P1236", "갤럭시 탭 S7+", 1149500);
    //		tablet.setDescription("12-unch, 2800*1752-pixel, Super AMOLED display, Octa-Core 프로세서");
    //		tablet.setCategory("Tablet");
    //		tablet.setMenufecturer("SAMSUNG");
    //		tablet.setUnitprice(1149500);
    //		tablet.setNumberOfstock(3000);
    //		tablet.setCondition("Old");
    //		tablet.setFilename("b008b623-6fe8-4191-82bd-d988db87e6e6.jpg");
    //		
    //		listOfProducts.add(phone);
    //		listOfProducts.add(notebook);
    //		listOfProducts.add(tablet);
    		
    	}
    	//항목을 리턴해주는 객체 추가
    	
    	//모든 상품정보를 넘겨주는 getter메서드
    	public ArrayList<Product> getAllProducts() {
    		String sql = "select * from product";
    		
    		try {
    			conn = getConnection(); //커넥션 얻기
    			pstmt = conn.prepareStatement(sql);
    			rs = pstmt.executeQuery();	//DB에 저장되어 있는 상품 모두 가져와 ResultSet에 담음
    			
    			while(rs.next()) {
    				Product product = new Product();	//빈 객체인 product에 각각 DB에서 가져온 값을 저장
    				product.setProductId(rs.getString("productId"));
    				product.setPname(rs.getString("pname"));
    				product.setUnitprice(rs.getInt("unitprice"));
    				product.setDescription(rs.getString("description"));
    				product.setMenufecturer(rs.getString("menufecturer"));
    				product.setCategory(rs.getString("category"));
    				product.setNumberOfstock(rs.getLong("numberOfstock"));
    				product.setCondition(rs.getString("conditions"));
    				product.setFilename(rs.getString("filename"));
    				
    				listOfProducts.add(product);		//ArrayList 컬랙션에 product 객체 추가
    			}
    			
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(rs != null) rs.close();
    				if(pstmt != null) pstmt.close();
    				if(conn != null) conn.close();
    				System.out.println("DB연동 해제");
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		
    		
    		return listOfProducts;	// 각 객체가 저장되어 ArrayList 리턴함.
    	}
    	
    	//DB 접속 (Connection 객체 리턴하는 메서드)
    	public Connection getConnection() {
    		// TODO Auto-generated method stub
    		
    		try {
    			Class.forName("com.mysql.cj.jdbc.Driver");		//드라이버명
    			conn = DriverManager.getConnection(url, user, password);	//DB연결 객체 얻음.
    			System.out.println("DB 연동 완료");
    			
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			System.out.println("DB 연동 실패");
    			e.printStackTrace();
    		}
    		
    		
    		return conn;
    	}
    
    	//listOfProducts에 저장된 모든 상품 목록을 조회해서 상품아이디와 일치하는 상품을 리턴하는 메서드
    	public Product getProductById(String productId) {
    		
    		Product productById = new Product();
    		String sql = "select * from product where productId = ?";
    		
    		try {
    			conn = getConnection();
    			pstmt = conn.prepareStatement(sql);
    			pstmt.setString(1, productId);
    			
    			rs = pstmt.executeQuery(); //인자값으로 넘어온 productId에 해당하는 상품을 ResultSet객체에 하나만 저장됨.
    			
    			if(!rs.next()) {
    				return null;		//일치하는 상품이 없는 상태.
    			}
    			
    			//인자값으로 넘어온 productId값이 있다면
    			if(rs.next()) {
    				productById.setProductId(rs.getString("productId"));
    				productById.setPname(rs.getString("pname"));
    				productById.setUnitprice(rs.getInt("unitprice"));
    				productById.setDescription(rs.getString("description"));
    				productById.setMenufecturer(rs.getString("menufecturer"));
    				productById.setCategory(rs.getString("category"));
    				productById.setNumberOfstock(rs.getLong("numberOfstock"));
    				productById.setCategory(rs.getString("conditions"));
    				productById.setFilename(rs.getString("filename"));
    				
    			}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(rs != null) rs.close();
    				if(pstmt != null) pstmt.close();
    				if(conn != null) conn.close();
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		
    //		for(int i = 0; i<listOfProducts.size(); i++) {
    //			Product product = listOfProducts.get(i);
    //			
    //			if(productId != null && product.getProductId() != null && 
    //					product.getProductId().equals(productId)) {
    //				productById = product;
    //				break;
    //			}
    //		}
    		
    		return productById;
    	}
    	
    	//상품을 추가하는 메서드
    	public void addProduct(Product product) {
    		listOfProducts.add(product);
    	}
    	
    	
    }

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading