11번가 api
http://openapi.11st.co.kr/openapi/OpenApiGuide.tmall?commonGuideNo=2#none
xml 파싱을 위한 라이브러리 추가
https://mvnrepository.com/ 에서 xml-apis 검색후 다운로드
https://mvnrepository.com/artifact/xml-apis/xml-apis/1.4.01
<!-- https://mvnrepository.com/artifact/xml-apis/xml-apis -->
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
Api11stProductSearchParsing
package store;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//상품검색 - 기본정보조회
public class Api11stProductSearchParsing {
private static Api11stProductSearchParsing instance = null;
private final static String KEY ="키값";
private final static String API_CODE="ProductSearch";
private final static String URL_11ST="http://openapi.11st.co.kr/openapi/OpenApiService.tmall?key="+KEY+"&apiCode="+API_CODE;
private Api11stProductSearchParsing(){
}
public static Api11stProductSearchParsing getInstance() {
if(instance == null) {
instance = new Api11stProductSearchParsing();
}
return instance;
}
private String getCharacterDataFromElement(Element e) {
try {
Node child = e.getFirstChild();
if(child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
}catch(Exception ex) {
ex.printStackTrace();
}
return "";
}
private String getElementValue(Element parent,String label) {
return getCharacterDataFromElement((Element)parent.getElementsByTagName(label).item(0));
}
/**
key String O OpenAPI 가입 시 발급받는 32자리 문자 Key
apiCode String O OpenAPI 서비스 코드 → 상품검색 : ProductSearch
Keyword String O 검색 요청 값
pageNum String O 페이지 넘버(Default 1)
pageSize String X 한페이지에 출력되는 상품 수(Default 50, 최대 200)
sortCd String X 정렬순서
→ CP : 인기도순
→ A : 누적판매순
→ G : 평가높은순
→ I : 후기/리뷰많은순
→ L : 낮은가격순
→ H : 높은가격순
→ N : 최근등록순
option String X Default로 제공되는 상품리스트 이외의 부가정보 요청 파라메터 입니다.
Categories : 카테고리 검색 결과 요청
targetSearchPrd String X 상품 검색 대상(Default KOR) → ENG : 영문상품 → KOR : 국문상품
*/
//url 파라미터 셋팅
protected static String urlParameterSetting(String keyword,String pageNum,String pageSize,String sortCd, String option, String categories,
String targetSearchPrd, String categoryCode,boolean parameterValue) {
String url=URL_11ST;
String parameter="";
if(keyword!=null && !keyword.equals("")) {
try {
parameter=parameter+"&keyword="+URLEncoder.encode(keyword , "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}else{
parameter=parameter+"&keyword=";
}
if(pageNum!=null && !pageNum.equals("")) parameter=parameter+"&pageNum="+pageNum;
if(pageSize!=null && !pageSize.equals("")) parameter=parameter+"&pageSize="+pageSize;
if(sortCd!=null && !sortCd.equals("")) parameter=parameter+"&sortCd="+sortCd;
if(option!=null && !option.equals("")) parameter=parameter+"&option="+option;
if(categories!=null && !categories.equals("")) parameter=parameter+"&Categories="+categories;
if(targetSearchPrd!=null && !targetSearchPrd.equals("")) parameter=parameter+"&targetSearchPrd="+targetSearchPrd;
if(categoryCode!=null && !categoryCode.equals("")) parameter=parameter+"&option=Categories&dispCtgrNo="+categoryCode;
if(parameterValue){ //파라미터값 만 반환 할 경우 true 값
return parameter;
}
System.out.println("url+parameter : " +url+parameter);
return url+parameter;
}
public List<ProductSearch11stVO> xmlParsingProductList(String Keyword,String pageNum,String pageSize,String sortCd, String option, String Categories, String targetSearchPrd, String categoryCode) {
List<ProductSearch11stVO> productSearchList=null;
try {
String url=urlParameterSetting(Keyword,pageNum,pageSize,sortCd,option,Categories,targetSearchPrd,categoryCode,false);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
URL u = new URL(url);
Document doc = builder.parse(u.openStream());
//전체 갯수
NodeList nodesProductsRoot = doc.getElementsByTagName("Products");
Element rootElement = (Element)nodesProductsRoot.item(0);
String totalCount=getElementValue(rootElement,"TotalCount");
NodeList nodesProducts = doc.getElementsByTagName("Product");
productSearchList=new ArrayList<ProductSearch11stVO>();
for(int i=0;i<nodesProducts.getLength();i++) {
Element element = (Element)nodesProducts.item(i);
ProductSearch11stVO productSearch =new ProductSearch11stVO();
productSearch.setTotalCount(totalCount);
productSearch.setProductCode(getElementValue(element,"ProductCode"));
productSearch.setProductName(getElementValue(element,"ProductName"));
productSearch.setProductPrice(getElementValue(element,"ProductPrice"));
productSearch.setProductImage(getElementValue(element,"ProductImage"));
productSearch.setProductImage100(getElementValue(element,"ProductImage100"));
productSearch.setProductImage110(getElementValue(element,"ProductImage110"));
productSearch.setProductImage120(getElementValue(element,"ProductImage120"));
productSearch.setProductImage130(getElementValue(element,"ProductImage130"));
productSearch.setProductImage140(getElementValue(element,"ProductImage140"));
productSearch.setProductImage150(getElementValue(element,"ProductImage150"));
productSearch.setProductImage170(getElementValue(element,"ProductImage170"));
productSearch.setProductImage200(getElementValue(element,"ProductImage200"));
productSearch.setProductImage250(getElementValue(element,"ProductImage250"));
productSearch.setProductImage270(getElementValue(element,"ProductImage270"));
productSearch.setProductImage300(getElementValue(element,"ProductImage300"));
productSearch.setText1(getElementValue(element,"Text1"));
productSearch.setText2(getElementValue(element,"Text2"));
productSearch.setSellerNick(getElementValue(element,"SellerNick"));
productSearch.setSeller(getElementValue(element,"Seller"));
productSearch.setSellerGrd(getElementValue(element,"SellerGrd"));
productSearch.setRating(getElementValue(element,"Rating"));
productSearch.setDetailPageUrl(getElementValue(element,"DetailPageUrl"));
productSearch.setSalePrice(getElementValue(element,"SalePrice"));
productSearch.setDelivery(getElementValue(element,"Delivery"));
productSearch.setReviewCount(getElementValue(element,"ReviewCount"));
productSearch.setBuySatisfy(getElementValue(element,"BuySatisfy"));
productSearch.setMinorYn(getElementValue(element,"MinorYn"));
// Benefit 태그
NodeList benefit = element.getElementsByTagName("Benefit");
for(int a = 0; a < benefit.getLength(); a++){
Node nodeBenefit = benefit.item(a);
if(nodeBenefit.getNodeType() == Node.ELEMENT_NODE){
Element eleBenefit = (Element)nodeBenefit;
productSearch.setDiscount(getElementValue(eleBenefit,"Discount"));
productSearch.setMileage(getElementValue(eleBenefit,"Mileage"));
}
}
productSearchList.add(productSearch);
}
}catch(Exception ex) {
productSearchList=null;
ex.printStackTrace();
}
return productSearchList;
}
public List<Categories11stVO> xmlParsingCategories11st() {
List<Categories11stVO> categories11st=null;
try {
String url=URL_11ST;
String parameter="&keyword=&option=Categories";
url=url+parameter;
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
URL u = new URL(url);
Document doc = builder.parse(u.openStream());
NodeList nodesCategorys = doc.getElementsByTagName("Category");
categories11st=new ArrayList<Categories11stVO>();
for(int i=0;i<nodesCategorys.getLength();i++) {
Element element = (Element)nodesCategorys.item(i);
Categories11stVO categories11stVO =new Categories11stVO();
categories11stVO.setCategoryPrdCnt(getElementValue(element,"CategoryPrdCnt"));
categories11stVO.setCategoryName(getElementValue(element,"CategoryName"));
categories11stVO.setCategoryUrl(getElementValue(element,"CategoryUrl"));
categories11st.add(categories11stVO);
}
}catch(Exception ex) {
categories11st=null;
ex.printStackTrace();
}
return categories11st;
}
}
ProductSearch11stVO
package store;
public class ProductSearch11stVO {
private String totalCount;
private String productCode; //상품 코드
private String productName; // 상품명
private String productPrice; //상품 가격
private String productImage; // 상품 대표 이미지
private String productImage100;
private String productImage110;
private String productImage120;
private String productImage130;
private String productImage140;
private String productImage150;
private String productImage170;
private String productImage200;
private String productImage250;
private String productImage270;
private String productImage300;
private String text1;
private String text2;
private String sellerNick; //핸드맥스
private String seller; // koreca
private String sellerGrd; // 핸드맥스
private String rating; // 29
private String detailPageUrl; // http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=786813507
private String salePrice; //3500
private String delivery; // 무료 , /착불/선결제
private String reviewCount; //262
private String buySatisfy; //97
private String minorYn; // Y , N
// Benefit 태그
private String discount; // 141000
private String mileage; //
public String getTotalCount() {
return totalCount;
}
public void setTotalCount(String totalCount) {
this.totalCount = totalCount;
}
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getProductPrice() {
return productPrice;
}
public void setProductPrice(String productPrice) {
this.productPrice = productPrice;
}
public String getProductImage() {
return productImage;
}
public void setProductImage(String productImage) {
this.productImage = productImage;
}
public String getProductImage100() {
return productImage100;
}
public void setProductImage100(String productImage100) {
this.productImage100 = productImage100;
}
public String getProductImage110() {
return productImage110;
}
public void setProductImage110(String productImage110) {
this.productImage110 = productImage110;
}
public String getProductImage120() {
return productImage120;
}
public void setProductImage120(String productImage120) {
this.productImage120 = productImage120;
}
public String getProductImage130() {
return productImage130;
}
public void setProductImage130(String productImage130) {
this.productImage130 = productImage130;
}
public String getProductImage140() {
return productImage140;
}
public void setProductImage140(String productImage140) {
this.productImage140 = productImage140;
}
public String getProductImage150() {
return productImage150;
}
public void setProductImage150(String productImage150) {
this.productImage150 = productImage150;
}
public String getProductImage170() {
return productImage170;
}
public void setProductImage170(String productImage170) {
this.productImage170 = productImage170;
}
public String getProductImage200() {
return productImage200;
}
public void setProductImage200(String productImage200) {
this.productImage200 = productImage200;
}
public String getProductImage250() {
return productImage250;
}
public void setProductImage250(String productImage250) {
this.productImage250 = productImage250;
}
public String getProductImage270() {
return productImage270;
}
public void setProductImage270(String productImage270) {
this.productImage270 = productImage270;
}
public String getProductImage300() {
return productImage300;
}
public void setProductImage300(String productImage300) {
this.productImage300 = productImage300;
}
public String getText1() {
return text1;
}
public void setText1(String text1) {
this.text1 = text1;
}
public String getText2() {
return text2;
}
public void setText2(String text2) {
this.text2 = text2;
}
public String getSellerNick() {
return sellerNick;
}
public void setSellerNick(String sellerNick) {
this.sellerNick = sellerNick;
}
public String getSeller() {
return seller;
}
public void setSeller(String seller) {
this.seller = seller;
}
public String getSellerGrd() {
return sellerGrd;
}
public void setSellerGrd(String sellerGrd) {
this.sellerGrd = sellerGrd;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getDetailPageUrl() {
return detailPageUrl;
}
public void setDetailPageUrl(String detailPageUrl) {
this.detailPageUrl = detailPageUrl;
}
public String getSalePrice() {
return salePrice;
}
public void setSalePrice(String salePrice) {
this.salePrice = salePrice;
}
public String getDelivery() {
return delivery;
}
public void setDelivery(String delivery) {
this.delivery = delivery;
}
public String getReviewCount() {
return reviewCount;
}
public void setReviewCount(String reviewCount) {
this.reviewCount = reviewCount;
}
public String getBuySatisfy() {
return buySatisfy;
}
public void setBuySatisfy(String buySatisfy) {
this.buySatisfy = buySatisfy;
}
public String getMinorYn() {
return minorYn;
}
public void setMinorYn(String minorYn) {
this.minorYn = minorYn;
}
public String getDiscount() {
return discount;
}
public void setDiscount(String discount) {
this.discount = discount;
}
public String getMileage() {
return mileage;
}
public void setMileage(String mileage) {
this.mileage = mileage;
}
@Override
public String toString() {
return "ProductSearch [totalCount=" + totalCount + ", productCode=" + productCode + ", productName="
+ productName + ", productPrice=" + productPrice + ", productImage=" + productImage
+ ", productImage100=" + productImage100 + ", productImage110=" + productImage110 + ", productImage120="
+ productImage120 + ", productImage130=" + productImage130 + ", productImage140=" + productImage140
+ ", productImage150=" + productImage150 + ", productImage170=" + productImage170 + ", productImage200="
+ productImage200 + ", productImage250=" + productImage250 + ", productImage270=" + productImage270
+ ", productImage300=" + productImage300 + ", text1=" + text1 + ", text2=" + text2 + ", sellerNick="
+ sellerNick + ", seller=" + seller + ", sellerGrd=" + sellerGrd + ", rating=" + rating
+ ", detailPageUrl=" + detailPageUrl + ", salePrice=" + salePrice + ", delivery=" + delivery
+ ", reviewCount=" + reviewCount + ", buySatisfy=" + buySatisfy + ", minorYn=" + minorYn + ", discount="
+ discount + ", mileage=" + mileage + "]";
}
}
Categories11stVO
카테고리만 파싱
package store;
public class Categories11stVO {
private String categoryPrdCnt;
private String categoryName;
private String categoryUrl;
public String getCategoryPrdCnt() {
return categoryPrdCnt;
}
public void setCategoryPrdCnt(String categoryPrdCnt) {
this.categoryPrdCnt = categoryPrdCnt;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public String getCategoryUrl() {
return categoryUrl;
}
public void setCategoryUrl(String categoryUrl) {
this.categoryUrl = categoryUrl;
}
@Override
public String toString() {
return "Categories11st [categoryPrdCnt=" + categoryPrdCnt + ", categoryName=" + categoryName + ", categoryUrl="
+ categoryUrl + "]";
}
}
PageMakerAndSearch
페이징 처리
package store;
//MySQL PageMaker
public class PageMakerAndSearch {
// mysql 들어갈 값은 page 가 아니라 pageStart, perPageNum 이다.
// limit #{pageStart}, #{perPageNum}
private int page;
private int perPageNum;
private int pageStart;
// 하단 페이징 << 1 2 3 4 5 6 7 8 9 10 >>
private int totalCount; // 전체 개수
private int startPage; // 시작 페이지
private int endPage; // 끝페이지
private boolean prev; // 이전 여부
private boolean next; // 다음 여부
private int displayPageNum = 10;
private int tempEndPage; // 마지막 페이지
// 검색처리 추가
private String searchType;
private String keyword;
private String sortCd;
private String option;
private String categories;
private String targetSearchPrd;
private String categoryCode;
public PageMakerAndSearch() {
this.page = 1; // 초기 페이지는 1
this.perPageNum = 50; // limit 50 개씩 보여준다.
}
public void setPage(int page) {
// 페이지 번호가 0이거나 0보다 작으면 1페이지로 한다.
//
if (page <= 0) {
this.page = 1;
return;
}
this.page = page;
}
// MyBatis SQL 의 Mapper 에서 인식해서 가져가는 파라미터 값 메소드 #{perPageNum}
public void setPerPageNum(int perPageNum) {
// 몇개 씩 보여줄것인가 이다. 최대 100개씩 보여 줄것으로 설정한다.
// 만약 0보다 작거나 100 보다 크면 10으로 초기화 시킨다.
if (perPageNum <= 0 || perPageNum > 200) {
this.perPageNum = 50;
return;
}
this.perPageNum = perPageNum;
}
// MyBatis SQL 의 Mapper 에서 인식해서 가져가는 파라미터 값 메소드 #{pageStart}
public int getPageStart() {
// 실질적으로 Mybatis 에서 파라미터로 인식해서 가져오는 것은 get 이다.
// 따라서 getPageStart 에서 값을 설정한다.
// 시작 데이터 번호 = (페이지 번호 -1 ) * 페이지당 보여지는 개수
this.pageStart = (this.page - 1) * perPageNum;
return this.pageStart;
}
// 전체 페이지 설정과 동시에 하단에 뿌려질 페이지 계산하기
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
calcData();
}
private void calcData() {
// 현재 페이지 번호 / 하단 페이지번호 수
endPage = (int) (Math.ceil(page / (double) displayPageNum) * displayPageNum);
startPage = (endPage - displayPageNum) + 1;
tempEndPage = (int) (Math.ceil(totalCount / (double) perPageNum));
if (endPage > tempEndPage) {
endPage = tempEndPage;
}
prev = startPage == 1 ? false : true;
next = endPage * perPageNum >= totalCount ? false : true;
}
// 검색 추가 페이지 파라미터
public String makeSearch(int page) {
//pageSize String X 한페이지에 출력되는 상품 수(Default 50, 최대 200)
String pageNum= String.valueOf(page);
String pageSize=String.valueOf(this.perPageNum);
return Api11stProductSearchParsing.urlParameterSetting(this.keyword, pageNum, pageSize, this.sortCd, this.option, this.categories, this.targetSearchPrd, this.categoryCode, true);
}
// 검색 추가 페이징 부트스트랩 출력
public String bootStrapPagingSearchHTML(String url) {
StringBuffer sBuffer = new StringBuffer();
sBuffer.append("<ul class='pagination'>");
if (prev) {
sBuffer.append("<li><a href='" + url + makeSearch(1) + "'><<</a></li>");
}
if (prev) {
sBuffer.append("<li><a href='" + url + makeSearch(startPage - 1) + "'><</a></li>");
}
String active = "";
for (int i = startPage; i <= endPage; i++) {
if (page == i) {
active = "class=active";
} else {
active = "";
}
sBuffer.append("<li " + active + " >");
sBuffer.append("<a href='" + url + makeSearch(i) + "'>" + i + "</a></li>");
sBuffer.append("</li>");
}
if (next && endPage > 0) {
sBuffer.append("<li><a href='" + url + makeSearch(endPage + 1) + "'>></a></li>");
}
if (next && endPage > 0) {
//sBuffer.append("<li><a href='" + url + makeSearch(tempEndPage) + "'>마지막</a></li>");
}
sBuffer.append("</ul>");
return sBuffer.toString();
}
public int getPage() {
return page;
}
public int getPerPageNum() {
return perPageNum;
}
public void setPageStart(int pageStart) {
this.pageStart = pageStart;
}
public int getTotalCount() {
return totalCount;
}
public int getStartPage() {
return startPage;
}
public void setStartPage(int startPage) {
this.startPage = startPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public boolean isPrev() {
return prev;
}
public void setPrev(boolean prev) {
this.prev = prev;
}
public boolean isNext() {
return next;
}
public void setNext(boolean next) {
this.next = next;
}
public int getDisplayPageNum() {
return displayPageNum;
}
public void setDisplayPageNum(int displayPageNum) {
this.displayPageNum = displayPageNum;
}
public String getSearchType() {
return searchType;
}
public void setSearchType(String searchType) {
this.searchType = searchType;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public int getTempEndPage() {
return tempEndPage;
}
public void setTempEndPage(int tempEndPage) {
this.tempEndPage = tempEndPage;
}
public String getSortCd() {
return sortCd;
}
public void setSortCd(String sortCd) {
this.sortCd = sortCd;
}
public String getOption() {
return option;
}
public void setOption(String option) {
this.option = option;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public String getTargetSearchPrd() {
return targetSearchPrd;
}
public void setTargetSearchPrd(String targetSearchPrd) {
this.targetSearchPrd = targetSearchPrd;
}
public String getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(String categoryCode) {
this.categoryCode = categoryCode;
}
@Override
public String toString() {
return "PageMakerAndSearch [page=" + page + ", perPageNum=" + perPageNum + ", pageStart=" + pageStart
+ ", totalCount=" + totalCount + ", startPage=" + startPage + ", endPage=" + endPage + ", prev=" + prev
+ ", next=" + next + ", displayPageNum=" + displayPageNum + ", tempEndPage=" + tempEndPage
+ ", searchType=" + searchType + ", keyword=" + keyword + ", sortCd=" + sortCd + ", option=" + option
+ ", categories=" + categories + ", targetSearchPrd=" + targetSearchPrd + ", categoryCode="
+ categoryCode + "]";
}
}
store.jsp
<%@page import="store.Categories11stVO"%>
<%@page import="store.PageMakerAndSearch"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="store.ProductSearch11stVO"%>
<%@page import="java.util.List"%>
<%@page import="store.Api11stProductSearchParsing"%>
<%@ page import="java.text.*" %>
<%
NumberFormat nf = NumberFormat.getNumberInstance();
%>
<%
String keyword = request.getParameter("keyword");
String pageNum = request.getParameter("pageNum");
String pageSize = request.getParameter("pageSize");
String sortCd = request.getParameter("sortCd");
String option = request.getParameter("option");
String categories =request.getParameter("categories");
String targetSearchPrd = request.getParameter("targetSearchPrd");
String categoryCode=request.getParameter("categoryCode");
int totalCount=0;
String paging=null;
//현재 페이지 url
StringBuffer currentURL=request.getRequestURL();
Api11stProductSearchParsing api11st = Api11stProductSearchParsing.getInstance();
List<ProductSearch11stVO> productList = api11st.xmlParsingProductList(keyword, pageNum, pageSize, sortCd, option, categories,targetSearchPrd, categoryCode);
if(productList!=null && productList.size() >0){
PageMakerAndSearch pageMaker=new PageMakerAndSearch();
if(pageNum!=null && !pageNum.equals("")){
pageMaker.setPage(Integer.parseInt(pageNum));
}
if(pageSize!=null && !pageSize.equals("")){
pageMaker.setPerPageNum(Integer.parseInt(pageSize));
}
totalCount=Integer.parseInt(productList.get(0).getTotalCount());
pageMaker.setKeyword(keyword);
if(pageSize==null || pageSize.equals("")) {
pageMaker.setPerPageNum(50);
}else{
pageMaker.setPerPageNum(Integer.parseInt(pageSize));
}
pageMaker.setSortCd(sortCd);
pageMaker.setOption(option);
pageMaker.setCategories(categories);
pageMaker.setTargetSearchPrd(targetSearchPrd);
pageMaker.setTotalCount(totalCount);
paging=pageMaker.bootStrapPagingSearchHTML(currentURL.toString()+"?");
}
List<Categories11stVO> categories11st=api11st.xmlParsingCategories11st();
//System.out.println("카테고리 목록 :" + categories11st.size());
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/custom.css">
<title>SPROUT</title>
</head>
<body>
<%@ include file="common/menu.jsp"%>
<div class="container">
<div class="row">
<form class="form-inline" id="searchFrm">
<div class="form-group">
<select name="categoryCode" class="form-control">
<option value="" <%if(categoryCode==null||categoryCode.equals("")) out.print("selected");%> >카테고리 검색</option>
<%
for(Categories11stVO vo : categories11st ){
%>
<option value="<%= vo.getCategoryPrdCnt() %>" <%if(categoryCode!=null&& categoryCode.equals(vo.getCategoryPrdCnt() )) out.print("selected");%> ><%= vo.getCategoryName() %></option>
<%
}
%>
</select>
</div>
<div class="form-group">
<select name="pageSize" class="form-control">
<option value="5" <%if(pageSize!=null&&pageSize.equals("5")) out.print("selected");%> >5</option>
<option value="10" <%if(pageSize!=null&&pageSize.equals("10")) out.print("selected");%> >10</option>
<option value="30" <%if(pageSize!=null&&pageSize.equals("30")) out.print("selected");%> >30</option>
<option value="50" <%if(pageSize ==null ||pageSize.equals("50")) out.print("selected");%> >50</option>
<option value="100" <%if(pageSize!=null&&pageSize.equals("100")) out.print("selected");%> >100</option>
<option value="150" <%if(pageSize!=null&&pageSize.equals("150")) out.print("selected");%>>150</option>
<option value="200" <%if(pageSize!=null&&pageSize.equals("200")) out.print("selected");%> >200</option>
</select>
</div>
<!-- sortCd String X 정렬순서
→ CP : 인기도순
→ A : 누적판매순
→ G : 평가높은순
→ I : 후기/리뷰많은순
→ L : 낮은가격순
→ H : 높은가격순
→ N : 최근등록순
-->
<div class="form-group">
<select name="sortCd" class="form-control">
<option value="X" <%if(sortCd!=null&&sortCd.equals("X")) out.print("selected");%> >정렬순서</option>
<option value="CP" <%if(sortCd!=null&&sortCd.equals("CP")) out.print("selected");%> >인기도순</option>
<option value="A" <%if(sortCd!=null&&sortCd.equals("A")) out.print("selected");%> >누적판매순</option>
<option value="G" <%if(sortCd!=null&&sortCd.equals("G")) out.print("selected");%> >평가높은순</option>
<option value="I" <%if(sortCd!=null&&sortCd.equals("I")) out.print("selected");%> >후기/리뷰많은순</option>
<option value="L" <%if(sortCd!=null&&sortCd.equals("L")) out.print("selected");%> >낮은가격순</option>
<option value="H <%if(sortCd!=null&&sortCd.equals("H")) out.print("selected");%> ">높은가격순</option>
<option value="N" <%if(sortCd!=null&&sortCd.equals("N")) out.print("selected");%> >최근등록순</option>
</select>
</div>
<div class="form-group">
<select name="targetSearchPrd" class="form-control">
<option value="" <%if(targetSearchPrd==null||targetSearchPrd.equals("")) out.print("selected");%> >상품 검색 대상</option>
<option value="KOR" <%if(targetSearchPrd!=null&&targetSearchPrd.equals("KOR")) out.print("selected");%> >국문상품</option>
<option value="ENG" <%if(targetSearchPrd!=null&&targetSearchPrd.equals("ENG")) out.print("selected");%> >영문상품</option>
</select>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="검색어를 입력하세요" name="keyword" maxlength="20" id="keyword" value="<%if(keyword!=null&& !keyword.equals("")) out.print(keyword);%>">
</div>
<div class="form-group">
<button class="btn btn-primary">검색</button>
<button type="button" class="btn btn-primary" onclick="searchReset()">검색 초기화</button>
</div>
<div class="text-right totalCount">
<%=nf.format(totalCount)%> 건
</div>
</form>
<table class="table table-hover table-responsive" id="products_11_st">
<thead class="text-center">
<tr>
<th class="text-center">상품</th>
<th class="text-center" width="10%">가격</th>
</tr>
</thead>
<tbody>
<%
if (productList != null && productList.size() > 0) {
for (ProductSearch11stVO product : productList) {
%>
<tr class="text-center">
<td class="text-left">
<div class="row">
<div class="col-12 col-sm-3">
<a href="<%=product.getDetailPageUrl()%>" target="_blank">
<img src="<%=product.getProductImage170()%>">
</a>
</div>
<div class="col-12 col-sm-9">
<div class="row">
<div class="c_prd_name col-sm-12">
<a href="<%=product.getDetailPageUrl()%>" target="_blank"><strong><%=product.getProductName()%></strong></a>
</div>
<div class="col-sm-12 c_prd_meta">
<div class="wrap-star">
<div class='star-rating'>
<span style ="width:<%=product.getRating()%>%"></span>
</div>
<%
if(product.getReviewCount()!=null && !product.getReviewCount().equals("") ){
if(Integer.parseInt(product.getReviewCount()) >0){
%>
<a href="#" class="c_review" onclick="return false">
<span class="title">리뷰</span>
<em><%=product.getReviewCount()%></em><span class="unit">건</span>
</a>
<%
}
}
%>
</div>
</div>
<div class="col-sm-12">
<div class="text-delivery">
<%
if(product.getDelivery()!=null & !product.getDelivery().equals("")){
if(product.getDelivery().equals("무료")){
out.print(product.getDelivery());
}else{
out.print("배송비 2,500원");
}
}
%>
</div>
</div>
<div class="col-sm-12">
<div class="c_prd_sellerNick">
<span class="name"><%=product.getSellerNick()%></span>
</div>
</div>
</div>
</div>
</div>
</td>
<td><strong class="price_seller"><%=nf.format(Integer.parseInt(product.getSalePrice()))%></strong>
<span class="text-unit">원</span>
</td>
</tr>
<%
}
} else {
%>
<tr class="text-center">
<td colspan="3" class="text-center"><h3>검색결과가 없습니다.</h3></td>
</tr>
<%
}
%>
</tbody>
<tfoot>
<tr>
<td colspan="3" class="text-center">
<% if(paging!=null)out.print(paging);%>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="js/bootstrap.js"></script>
<script type="text/javascript">
function searchReset(){
location.href="<%=currentURL.toString()+"?&keyword="%>";
}
</script>
</body>
</html>















댓글 ( 4)
댓글 남기기