Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-05-16(월) 075일차 [Oracle, Spring Framework, Mybatis Framework] 서브쿼리, 상품 게시판 전체 선택(SelectALL) 만들기

옌炎 2022. 6. 17. 19:08
728x90

수업내용


1교시 (09:30-10:20)

  • 앞으로의 수업 방식 변경
    • 수업 시간에 집중해서 할 것
    • 배우지 않아서 모른다 (X) → 이것 하고 싶어요(O)

2교시 (10:30-11:20)

  • 서브쿼리
-- 복문, 단문
-- 메인 쿼리, 서브 쿼리

--서브쿼리 유형
--단일 행(Single-Row) 서브쿼리
--다중 행(Multi-Row) 서브쿼리
--다중 열(컬럼)(Multi-Column) 서브쿼리 
--인라인 뷰(Inline view) 서브쿼리
--스칼라(Scala) 서브쿼리

--서브쿼리 
--SELECT : 셀렉트 절 
--    SELECT * FROM DUAL; : 스칼라 서브쿼리 : 셀렉트 절에 SELECT 구문을 사용하는 것 
--      일부 OUTER JOIN 효과가 있다. 
--FROM : 프럼 절 
--    SELECT * FROM DUAL; : 인라인 뷰 서브쿼리 : 프럼 절에 SELECT 구문을 사용하는 것
--      인라인 뷰 서브쿼리를 사용하는 이유는 
--      테이블에 있는 전체 데이터를 사용하지 않고 
--      그 조건에 필요한 컬럼만 먼저 추출해서 사용하기 위해서 
--      파일의 크기를 줄이기 위해서 사용하는 것 
--      INLINE VIEW SUBQUERY 는 INNSER JOIN 효과가 있다. 
--WHERE : 웨어 절 
--    SELECT * FROM DUAL; : 서브쿼리 : 웨어 절에 SELECT 구문을 사용하는 것

-- 스칼라 서브쿼리
-- SELECT 절의 단일행 단일열을 조회할 때 사용
-- NULL을 허용하는 컬럼에서 사용

-- 인라인 뷰 서브쿼리
--------------------------------------
SELECT * FROM EMP A, EMP B;

SELECT * FROM EMP A, EMP B
WHERE A.EMPNO = B.EMPNO;

SELECT * FROM EMP A, EMP B
WHERE A.JOB = B.JOB;
----------------------------------------

-- SCOTT 사원의 부서 이름을 조회하시오
SELECT ENAME, DNAME
FROM EMP A
JOIN DEPT D ON A.DEPTNO = D.DEPTNO
WHERE ENAME = 'SCOTT';

SELECT ENAME FROM EMP;

SELECT * FROM EMP WHERE ENAME='SCOTT';

SELECT * FROM DEPT WHERE DEPTNO = 20;

SELECT DNAME FROM DEPT WHERE DEPTNO = 20;

SELECT DNAME FROM DEPT
WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME='SCOTT');

-- ALLEN 사원의 부서이름을 조회하시오
SELECT * FROM EMP WHERE ENAME = 'ALLEN';

SELECT DNAME FROM DEPT
WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'ALLEN');

SELECT A.ENAME, B.DNAME
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO
AND A.ENAME = 'SCOTT';


select * from KOSMO_PRODUCT;
desc KOSMO_PRODUCT;

3교시 (11:30-12:20)

상품 게시판 전체 선택(SelectALL) 만들기

  • spring_product.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
          
<mapper namespace="a.b.c.com.kosmo.product.dao.KosmoProductDAO">

<insert id="kosmoProductInsert" parameterType="kosmoproductvo" >
	
	INSERT INTO KOSMO_PRODUCT (	KPNUM
							   ,KPID
							   ,KPNAME
							   ,KPCOMPANY
							   ,KPFILE
							   ,KPCNT
							   ,KPPRICE
							   ,KPDESC
							   ,DELETEYN
							   ,INSERTDATE
							   ,UPDATEDATE)
            			VALUES( #{kpnum}
							   ,#{kpid}
							   ,#{kpname}
							   ,#{kpcompany}
							   ,#{kpfile}
							   ,#{kpcnt}
							   ,#{kpprice}
							   ,#{kpdesc}
							   ,'Y'
							   ,SYSDATE
							   ,SYSDATE)
</insert>

<select id="kosmoProductSelectAll" parameterType="kosmoproductvo" resultType="kosmoproductvo">

	SELECT * FROM (
		SELECT  A.KPNUM		KPNUM
			   ,A.KPID		KPID
			   ,A.KPNAME	KPNAME
			   ,A.KPCOMPANY	KPCOMPANY
			   ,A.KPFILE	KPFILE
			   ,A.KPCNT		KPCNT
			   ,A.KPPRICE	KPPRICE
			   ,A.KPDESC	KPDESC
			   ,A.DELETEYN	DELETEYN
			   ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE
			   ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE
			   <!-- ? : 페이지 사이즈 : pageSize -->
			   ,CEIL(ROW_NUMBER() OVER(ORDER BY A.KPNUM) / #{pageSize} ) pageSize
			   ,COUNT(A.KPNUM) OVER() AS totalCount
		FROM	KOSMO_PRODUCT A
		WHERE 	A.DELETEYN = 'Y'
		<!-- ? : 현재 페이지 : curPage -->
	) WHERE pageSize = #{curPage}
</select>
</mapper>
  • KosmoProductVO.java
package a.b.c.com.kosmo.product.vo;

public class KosmoProductVO {

	private String kpnum;
	private String kpid;
	private String kpname;
	private String kpcompany;
	private String kpfile;
	private String kpcnt;
	private String kpprice;
	private String kpdesc;
	private String deleteyn;
	private String insertdate;
	private String updatedate;
	
	// 페이징 이동 필드
	private String pageSize;
	private String groupSize;
	private String curPage;
	private String totalCount;
	
	// generator
	public KosmoProductVO() {
	
	}

	public KosmoProductVO(String kpnum, String kpid, String kpname, String kpcompany, String kpfile, String kpcnt,
			String kpprice, String kpdesc, String deleteyn, String insertdate, String updatedate) {
		
		this.kpnum = kpnum;
		this.kpid = kpid;
		this.kpname = kpname;
		this.kpcompany = kpcompany;
		this.kpfile = kpfile;
		this.kpcnt = kpcnt;
		this.kpprice = kpprice;
		this.kpdesc = kpdesc;
		this.deleteyn = deleteyn;
		this.insertdate = insertdate;
		this.updatedate = updatedate;
	}
	
	
	public KosmoProductVO(String kpnum, String kpid, String kpname, String kpcompany, String kpfile, String kpcnt,
			String kpprice, String kpdesc, String deleteyn, String insertdate, String updatedate, String pageSize,
			String groupSize, String curPage, String totalCount) {

		this.kpnum = kpnum;
		this.kpid = kpid;
		this.kpname = kpname;
		this.kpcompany = kpcompany;
		this.kpfile = kpfile;
		this.kpcnt = kpcnt;
		this.kpprice = kpprice;
		this.kpdesc = kpdesc;
		this.deleteyn = deleteyn;
		this.insertdate = insertdate;
		this.updatedate = updatedate;
		this.pageSize = pageSize;
		this.groupSize = groupSize;
		this.curPage = curPage;
		this.totalCount = totalCount;
	}

	// setters/getters
	public String getKpnum() {
		return kpnum;
	}
	public void setKpnum(String kpnum) {
		this.kpnum = kpnum;
	}
	public String getKpid() {
		return kpid;
	}
	public void setKpid(String kpid) {
		this.kpid = kpid;
	}
	public String getKpname() {
		return kpname;
	}
	public void setKpname(String kpname) {
		this.kpname = kpname;
	}
	public String getKpcompany() {
		return kpcompany;
	}
	public void setKpcompany(String kpcompany) {
		this.kpcompany = kpcompany;
	}
	public String getKpfile() {
		return kpfile;
	}
	public void setKpfile(String kpfile) {
		this.kpfile = kpfile;
	}
	public String getKpcnt() {
		return kpcnt;
	}
	public void setKpcnt(String kpcnt) {
		this.kpcnt = kpcnt;
	}
	public String getKpprice() {
		return kpprice;
	}
	public void setKpprice(String kpprice) {
		this.kpprice = kpprice;
	}
	public String getKpdesc() {
		return kpdesc;
	}
	public void setKpdesc(String kpdesc) {
		this.kpdesc = kpdesc;
	}
	public String getDeleteyn() {
		return deleteyn;
	}
	public void setDeleteyn(String deleteyn) {
		this.deleteyn = deleteyn;
	}
	public String getInsertdate() {
		return insertdate;
	}
	public void setInsertdate(String insertdate) {
		this.insertdate = insertdate;
	}
	public String getUpdatedate() {
		return updatedate;
	}
	public void setUpdatedate(String updatedate) {
		this.updatedate = updatedate;
	}

	public String getPageSize() {
		return pageSize;
	}

	public void setPageSize(String pageSize) {
		this.pageSize = pageSize;
	}

	public String getGroupSize() {
		return groupSize;
	}

	public void setGroupSize(String groupSize) {
		this.groupSize = groupSize;
	}

	public String getCurPage() {
		return curPage;
	}

	public void setCurPage(String curPage) {
		this.curPage = curPage;
	}

	public String getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(String totalCount) {
		this.totalCount = totalCount;
	}
}
  • KosmoProductDAO.java
package a.b.c.com.kosmo.product.dao;

import java.util.List;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;

public interface KosmoProductDAO {

	public int kosmoProductInsert(KosmoProductVO kpvo);
	
	public List<KosmoProductVO> kosmoProductSelectAll(KosmoProductVO kpvo);
}
  • KosmoProductDAOImpl.java
package a.b.c.com.kosmo.product.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;

@Repository
public class KosmoProductDAOImpl implements KosmoProductDAO {
	
	Logger logger = LogManager.getLogger(KosmoProductDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSession sqlSession;
	
	@Override
	public int kosmoProductInsert(KosmoProductVO kpvo) {
		// TODO Auto-generated method stub
		
		logger.info("KosmoProductDAOImpl kosmoProductInsert 함수 진입 >>> : ");
		
		return (Integer)sqlSession.insert("kosmoProductInsert", kpvo);
	}

	@Override
	public List<KosmoProductVO> kosmoProductSelectAll(KosmoProductVO kpvo) {
		// TODO Auto-generated method stub
		
		logger.info("KosmoProductDAOImpl kosmoProductSelectAll 함수 진입 >>> : ");
		
		return sqlSession.selectList("kosmoProductSelectAll", kpvo);
	}
}

4교시 (12:30-13:20)

상품 게시판 전체 선택(SelectALL) 만들기

  • KosmoProductService.java
package a.b.c.com.kosmo.product.service;

import java.util.List;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;

public interface KosmoProductService {

	public int kosmoProductInsert(KosmoProductVO kpvo);
	
	public List<KosmoProductVO> kosmoProductSelectAll(KosmoProductVO kpvo);
}
  • KosmoProductServiceImpl.java
package a.b.c.com.kosmo.product.service;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.product.dao.KosmoProductDAO;

@Service
@Transactional
public class KosmoProductServiceImpl implements KosmoProductService {

	Logger logger = LogManager.getLogger(KosmoProductServiceImpl.class);
	
	// 서비스에서 DAO 연결하기
	// 필드 @Autowired 어노테이션으로 DI (의존성 주입하기)
	@Autowired(required=false)
	private KosmoProductDAO kosmoProductDAO;
	
	@Override
	public int kosmoProductInsert(KosmoProductVO kpvo) {
		// TODO Auto-generated method stub
		
		logger.info("KosmoProductServiceImpl kosmoProductInsert 함수 진입 >>> : ");
		
		return kosmoProductDAO.kosmoProductInsert(kpvo);
	}

	@Override
	public List<KosmoProductVO> kosmoProductSelectAll(KosmoProductVO kpvo) {
		// TODO Auto-generated method stub
		
		logger.info("KosmoProductServiceImpl kosmoProductSelectAll 함수 진입 >>> : ");
		
		return kosmoProductDAO.kosmoProductSelectAll(kpvo);
	}
}

5교시 (14:30-15:20)

상품 게시판 전체 선택(SelectALL) 만들기

  • CommonUtils.java
package a.b.c.com.kosmo.common;

public abstract class CommonUtils {
	
	// 게시판
	public static final String PRODUCT_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\product";	
	public static final int PRODUCT_IMG_FILE_SIZE = 10*1024*1024; // 10MB
	public static final String PRODUCT_EN_CODE = "UTF-8";
	
	// 상품 페이징  
	public static final int PRODUCT_PAGE_SIZE = 3;
	public static final int PRODUCT_GROUP_SIZE = 3;
	public static final int PRODUCT_CUR_PAGE = 1;
	public static final int PRODUCT_TOTAL_COUNT = 0;
}
  • KosmoProductController.java
package a.b.c.com.kosmo.product.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import a.b.c.com.kosmo.common.ChabunUtil;
import a.b.c.com.kosmo.common.CommonUtils;
import a.b.c.com.kosmo.common.FileUploadUtil;
import a.b.c.com.kosmo.common.service.SpringChabunService;
import a.b.c.com.kosmo.product.service.KosmoProductService;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;

@Controller
public class KosmoProductController {
	
	Logger logger = LogManager.getLogger(KosmoProductController.class);
	
	// 필드 오토와이어드
	@Autowired(required=false)
	private SpringChabunService springChabunService;
	
	// 필드 오토와이어드
	@Autowired(required=false)
	private KosmoProductService kosmoProductService;
	
	// 상품 입력 폼
	@RequestMapping(value="kosmoProductInsertForm", method=RequestMethod.GET)
	public String kosmoProductInsertForm() {
		logger.info("KosmoProductController kosmoProductInsertForm 함수 진입 >>> : ");
		return "product/kosmoProductInsertForm";
	}
	
	// 상품 입력
	@RequestMapping(value="kosmoProductInsert", method=RequestMethod.POST)
	public String kosmoProductInsert(HttpServletRequest req) {
		logger.info("KosmoProductController kosmoProductInsert 함수 진입 >>> ");
		
		// 채번 구하기
		String kpnum = ChabunUtil.getProductChabun("D", springChabunService.getProductChabun().getKpnum());
		logger.info("KosmoProductController kosmoProductInsertForm kpnum >>> : " + kpnum);
		
		// 이미지 업로드
		FileUploadUtil fu = new FileUploadUtil(  CommonUtils.PRODUCT_IMG_UPLOAD_PATH
												,CommonUtils.PRODUCT_IMG_FILE_SIZE
												,CommonUtils.PRODUCT_EN_CODE);
		
		// 이미지 파일 원본 사이즈
		boolean bool = fu.imgfileUpload(req);
		// 이미지 파일 원본 사이즈 크기 조절 하기
		// boolean bool = fu.imgfileUploadSize(req);
		logger.info("KosmoProductController kosmoProductInsert bool >>> : " + bool);
		
		KosmoProductVO _kpvo = null;
		_kpvo = new KosmoProductVO();
		
		_kpvo.setKpnum(kpnum);
		_kpvo.setKpid(fu.getParameter("kpid"));
		_kpvo.setKpname(fu.getParameter("kpname"));
		_kpvo.setKpcompany(fu.getParameter("kpcompany"));
		
		_kpvo.setKpfile(fu.getFileName("kpfile"));
		
		_kpvo.setKpcnt(fu.getParameter("kpcnt"));
		_kpvo.setKpprice(fu.getParameter("kpprice"));
		_kpvo.setKpdesc(fu.getParameter("kpdesc"));
		
		int nCnt = kosmoProductService.kosmoProductInsert(_kpvo);
		logger.info("KosmoProductController kosmoProductInsert nCnt >>> : " + nCnt);
		
		if (nCnt > 0) { return "product/kosmoProductInsert"; }
		return "product/kosmoProductInsertForm";
	}
	
	// 상품 목록 페이징 조회
	@RequestMapping(value="kosmoProductSelectAll", method=RequestMethod.GET)
	public String kosmoProductSelectAll(KosmoProductVO kpvo, Model model) {
		logger.info("KosmoProductController kosmoProductSelectAll 함수 진입 >>> : ");
		
		// 페이징 처리 ===================================================
		int pageSize = CommonUtils.PRODUCT_PAGE_SIZE;
		int groupSize = CommonUtils.PRODUCT_GROUP_SIZE;
		int curPage = CommonUtils.PRODUCT_CUR_PAGE;
		int totalCount = CommonUtils.PRODUCT_TOTAL_COUNT;
		
		if (kpvo.getCurPage() != null) {
			curPage = Integer.parseInt(kpvo.getCurPage());
		}
		
		kpvo.setPageSize(String.valueOf(pageSize));
		kpvo.setGroupSize(String.valueOf(groupSize));
		kpvo.setCurPage(String.valueOf(curPage));
		kpvo.setTotalCount(String.valueOf(totalCount));
		
		logger.info("KosmoProductController kosmoProductSelectAll kpvo.getPageSize() >>> : " + kpvo.getPageSize());
		logger.info("KosmoProductController kosmoProductSelectAll kpvo.getGroupSize() >>> : " + kpvo.getGroupSize());
		logger.info("KosmoProductController kosmoProductSelectAll kpvo.getCurPage() >>> : " + kpvo.getCurPage());
		logger.info("KosmoProductController kosmoProductSelectAll kpvo.getTotalCount() >>> : " + kpvo.getTotalCount());
		// 페이징 처리 ===================================================
		
		// 서비스 호출
		List<KosmoProductVO> listAll = kosmoProductService.kosmoProductSelectAll(kpvo);
		if (listAll.size() > 0) {
			logger.info("KosmoProductController kosmoProductSelectAll listAll.size() >>> : " + listAll.size());
			
			model.addAttribute("pagingKPVO", kpvo);
			model.addAttribute("listAll", listAll);
			return "product/kosmoProductSelectAll";
		}
		return "product/kosmoProductInsertForm";
	}
}
  • NumUtil.java
package a.b.c.com.kosmo.common;

import java.text.DecimalFormat;

public class NumUtil {
	
	public static String comma(String s) {	
		int iS = Integer.parseInt(s);
		return new DecimalFormat("###,###").format(iS);
	}
	
	public static String comma_replace(String s) {
		int iS = Integer.parseInt(s);
		return new DecimalFormat("###,###").format(iS);
	}
		
	public static void main(String args[]) {		
		System.out.println(NumUtil.comma("5000"));
	}
	
}

6교시 (15:30-16:20)

상품 게시판 전체 선택(SelectALL) 만들기

  • common.js
function comma(s) {
	let result = s.toString().replace(/\B(?=(d{3})+(?!\d))/g, ',');
	console.log(result);
	return result;
}

function comma_replace(s) {
	let result = s.toString().replace(/,/g, "");
	console.log(result);
	return result;
}
  • kosmoProductInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>kosmoProductInsert.jsp</h3>
	<hr>
	<script>
		location.href="/kosmoSpring/kosmoProductSelectAll.k"
	</script>
</body>
</html>

7교시 (16:30-17:20)

상품 게시판 전체 선택(SelectALL) 만들기

  • productPaging.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.File" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Collection" %>

<%
	/******************************
	  전달해야 할 변수
	*****************************/
	String url = null;
	String str = null;
	
	url = request.getParameter("url");
	System.out.println("url >>> : " + url);
	
	str = request.getParameter("str");
	System.out.println("str >>> : " + str);
	
	if (str != null && str.length() > 0) {
		str = str + "&";
		System.out.println("str + & >>> : " + str);
	}
%>

<%
	/******************************
	페이지 네비게이션 관련 변수
	*****************************/
	// 한 페이지에 보여질 게시물의 수
	int pageSize = 0;
	// 그룹의 크기
	int groupSize = 0;
	// 전체 게시물의 개수
	int totalCount = 0;
	// 현재 페이지
	int curPage = 0;
	// 전체 페이지의 수
	int pageCount = 0;
	
	if (request.getParameter("pageSize") != null) {
		pageSize = Integer.parseInt(request.getParameter("pageSize"));
		System.out.println("pageSize >>> : " + pageSize);
	}
	if (request.getParameter("groupSize") != null) {
		groupSize = Integer.parseInt(request.getParameter("groupSize"));
		System.out.println("groupSize >>> : " + groupSize);
	}
	if (request.getParameter("curPage") != null) {
		curPage = Integer.parseInt(request.getParameter("curPage"));
		System.out.println("curPage >>> : " + curPage);
	}
	if (request.getParameter("totalCount") != null) {
		totalCount = Integer.parseInt(request.getParameter("totalCount"));
		System.out.println("totalCount >>> : " + totalCount);
	}
	
	// 전체 게시물 수와 페이지 크기를 가지고 전체 페이지 개수를 계산함.
	// 소수점에 따라 계산 상의 오류가 없도록 함.
	pageCount = (int)Math.ceil(totalCount / (groupSize + 0.0));
	System.out.println("pageCount >>> : " + pageCount);
	
	// 현재 그룹 설정
	int curGroup = (curPage - 1) / groupSize;
	System.out.println("curGroup >>> : " + curGroup);
	
	int linkPage = curGroup * groupSize;
	System.out.println("linkPage >>> : " + linkPage);
%>
<p align="right">
<%
	// 첫 번쨰 그룹이 아닌 경우
	if (curGroup > 0) {
		
		// boardSelectList.jsp?&curPage=1
		// boardSelectList.jsp?&curPage=0
%>
	<a href="<%=url%>?<%=str%>curPage=1">◁◁</a>&nbsp;&nbsp;&nbsp;
	<a href="<%=url%>?<%=str%>curPage=<%=linkPage%>">◀</a>&nbsp;&nbsp;&nbsp;
<%
	} else {
%>
	◁◁&nbsp;&nbsp;&nbsp;◀&nbsp;&nbsp;&nbsp;
<%
	}

	// 다음 링크를 위해 증가시킴
	linkPage++;
	System.out.println("linkPage++ >>> : " + linkPage);
	
	int loopCount = groupSize;
	System.out.println("loopCount >>> : " + loopCount);
	
	// 그룹 범위 내에서 페이지 링크 만들기
	while ((loopCount > 0) && (linkPage <= pageCount)) {
		
		if (linkPage == curPage) {
			System.out.println("그룹 범위 내에서 페이지 링크 if");
%>
	<%=linkPage %>
<%
		} else {
			System.out.println("그룹 범위 내에서 페이지 링크 else");
%>
	[<a href="<%=url%>?<%=str%>curPage=<%=linkPage%>"><%=linkPage%></a>]&nbsp;
<%
		}
		
		linkPage++;
		loopCount--;
	}
	
	// 다음그룹이 있는 경우
	//		6			40
	if(linkPage <= pageCount){
		System.out.println("다음그룹이 있는 경우 linkPage >>> : " + linkPage);
		System.out.println("다음그룹이 있는 경우pageCount >>> : " + pageCount);
		
	//	boardSelectList.jsp?&curPage=6
	//	boardSelectList.jsp?&curPage=40	
%>
	<a href="<%=url%>?<%=str%>curPage=<%=linkPage%>>">▶</a>&nbsp;&nbsp;&nbsp;
	<a href="<%=url%>?<%=str%>curPage=<%=pageCount%>">▷▷</a>&nbsp;&nbsp;&nbsp;
<%
	} else {
		System.out.println("다음 그룹이 있는 경우 linkPage >>> : " + linkPage);
		System.out.println("다음 그룹이 있는 경우 pageCount >>> : " + pageCount);
		System.out.println("다음 그룹이 있는 경우 else");
%>
	▶&nbsp;&nbsp;&nbsp;▷▷&nbsp;&nbsp;&nbsp;
<%
	}
%>
</p>
  • kosmoProductSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="a.b.c.com.kosmo.product.vo.KosmoProductVO" %> 
<%@ page import="java.util.List" %>  

<%@ page import="a.b.c.com.kosmo.common.NumUtil" %>

<% request.setCharacterEncoding("UTF-8");%> 
<%

	//페이징 변수 세팅
	int pageSize = 0;
	int groupSize = 0;
	int curPage = 0;
	int totalCount = 0;

	Object objPaging = request.getAttribute("pagingKPVO");
	KosmoProductVO pagingKPVO = (KosmoProductVO)objPaging;
	
	Object obj = request.getAttribute("listAll");
	List<KosmoProductVO> list = (List<KosmoProductVO>)obj;
	
	int nCnt = list.size();
	System.out.println("nCnt >>> : " + nCnt);	
%>


<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<script type="text/javascript" src="/kosmoSpring/js/common.js"></script>
	<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
	<script type="text/javascript">
	
		$(document).ready(function(){
			
			
		});	
	
	</script>
	<style type="text/css">
	
		th {
			text-align: center;
		}
	</style>
</head>
<body>
	<h3 align="center">상품목록</h3>
	<hr>
	<form name="productList" id="productList">
		<table border="1" align="center">
			<thead>
			<tr>
				<th>사진</td>
				<th>내용</td>
				<th>가격</td>	
			</tr>
			</thead>
			<%
			String kpnum = "";
			String kpprice = "";
			for (int i=0; i<nCnt; i++) {		
				KosmoProductVO _kpvo = list.get(i);		
				kpnum = _kpvo.getKpnum();
				kpprice = _kpvo.getKpprice();
				kpprice = NumUtil.comma(kpprice);
				
				// 페이징 세팅
				pageSize = Integer.parseInt(pagingKPVO.getPageSize());
				groupSize = Integer.parseInt(pagingKPVO.getGroupSize());
				curPage = Integer.parseInt(pagingKPVO.getCurPage());
				totalCount = Integer.parseInt(_kpvo.getTotalCount());
			%>
			<tbody>
			<tr>
				<td rowspan="5" align="center" style="width:100px;">
					<img src="/kosmoSpring/fileupload/product/<%= _kpvo.getKpfile() %>" width="50" height="50"><br>
					<%= _kpvo.getKpid() %>
				</td>
				<td align="left" style="width:300px;">상품번호 : <%= kpnum %></td>
				<td rowspan="5" align="center" vertical-align="middle" style="width:150px;">
					<%= kpprice %>&nbsp;&nbsp;
					<a href="kosmoProductSelect.h?kpnum=<%= kpnum %>">
						<img src="/kosmoSpring/img/img_mandu/ase.gif" width="25" height="25" alt="image">
					</a>
				</td>
			</tr>
			<tr>
				<td>상품이름 : <%= _kpvo.getKpname() %></td>
			</tr>
			<tr>
				<td>상품설명 : <%= _kpvo.getKpdesc() %></td>
			</tr>
			<tr>
				<td>제조사 : <%= _kpvo.getKpcompany() %></td>
			</tr>
			<tr>
				<td>상품 등록일 : <%= _kpvo.getInsertdate() %></td>
			</tr>
			<%
			} //end of for
			%>	
			</tbody>
			<tfoot>
			<tr>
			<td colspan="3">
			<jsp:include page="productPaging.jsp" flush="true">
				<jsp:param name="url" value="kosmoProductSelectAll.k"/>
				<jsp:param name="str" value=""/>
				<jsp:param name="pageSize" value="<%=pageSize%>"/>
				<jsp:param name="groupSize" value="<%=groupSize%>"/>
				<jsp:param name="curPage" value="<%=curPage%>"/>
				<jsp:param name="totalCount" value="<%=totalCount%>"/>
			</jsp:include>
			</td>
			</tr>							
			</tfoot>			
		</table>
	</form>	
</body>
</html>

8교시 (17:30-18:30)

상품 게시판 전체 선택(SelectALL) 만들기

  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>index.jsp</h3>
	<hr>
	<a href="kosmoProductInsertForm.k">코스모 상품 입력</a><br>
	<a href="kosmoProductSelectAll.k">코스모 상품 전체 조회</a><br>
</body>
</html>


Notes

  • 내일은 장바구니 넣기

728x90