Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

기록

JSP 상품등록 페이지 (유효성검사,상품코드 +1 메서드) 추가 본문

JSP

JSP 상품등록 페이지 (유효성검사,상품코드 +1 메서드) 추가

9400 2023. 1. 10. 13:43
<%@page import="kr.or.ddit.dao.ProductRepository"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 상품정보를 등록하는 페이지 만들기 -->
<%
	ProductRepository productRepository = ProductRepository.getInstance();
	String productId = productRepository.getNextProductId();
%>
<!--  scope(영역) : page(pageContext)- 생략가능(기본), request, session, application -->
<c:set var="productId" value="<%=productId%>" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/css/bootstrap.min.css" />
<script src="/js/jquery-3.6.3.min.js"></script>
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
<title>상품 등록</title>
<script type="text/javascript">
//핸들러 함수
function checkAddProduct(){
	let productId = $("input[name=productId]").val();
	let pname = $("input[name=pname]").val();
	let unitPrice =$('input[name=unitPrice]').val();
	let unitsInStock = $('input[name=unitsInStock]').val();
	//input type="file"
	let productImage = $("input[name=productImage]").val();
	
	let regExpProductId = /^p[0-9]{4,11}$/;
//	let regExpProductId = /^p\d{4,11}$/

	//소수점둘째자리
	// ? : 있을수도있고, 없을수도있다.
	let rehExpUnitPrice = /^\d+(?:[.]?[\d]?[\d]?)$/;
	
	console.log("productId"+productId);
	console.log("pname"+pname);
	console.log("unitPrice"+unitPrice);
	console.log("unitsInStock"+unitsInStock);
	//상품 아이디 체크
	//1) 첫글자는 반드시 p로 시작하고 숫자를 조합하여 5~12자리까지 입력하세요
	//정규표현식.test(대상문자열)
	if(!regExpProductId.test(productId)){
		alert("첫글자는 반드시 p로 시작하고 숫자를 조합하여 5-12까지 입력하세요");
		$("input[name=productId]").focus();
		return false;
	}
	
	//상품명 체크
	//2) 최소 4자에서 최대 12자까지 입력하세요.
	if(pname.length<4 || pname.length>12){
		alert("[상품명]\n최소4자에서 최대 12까지 까지 입력하세요");
		$("input[name=pname]").focus();
		return false;
	}
	
	//상품가격체크
	//3)숫자만 입력하세요. 음수는 입력할수 없습니다. 소수점 둘째 자리까지만 입력하세요
	// isNaN : is Not a Number
	if(unitPrice.length==0 || isNaN(unitPrice)){
		alert("[가격]\n숫자만 입력하세요");
		$('input[name=unitPrice]').focus();
		return false;
	}
	if(unitPrice <0){ //음수면
		alert("[가격]\n음수는 입력할수없습니다.");
		$('input[name=unitPrice]').focus();
		return false;
	}else{ //양수면
		if(!rehExpUnitPrice.test(unitPrice)){
			alert("[가격]\n소수점 둘째자리까지만 입력가능합니다.");
			$('input[name=unitPrice]').focus();
			return false;
		}
	}
	//재고수체크
	//4)숫자만 입력하세요.
	if(isNaN(unitsInStock)){  //숫자가 아니라면
		alert("[재고수]\n숫자만 입력하세요");
		$('input[name=unitsInStock]').focus();
		return false;
	}
	
	//파일체크
	//5) 파일을 선택하세요
	if(productImage==""){
		alert("[상품이미지]\n파일을 선택하세요");
		return false;
	}
	
	$("#newProduct").submit();
	
	
}
</script>
</head>
<body>

<jsp:include page="menu.jsp"></jsp:include>

<div class="jumbotron">
	<div class="container">
		<h1 class="display-3">상품등록</h1>
	</div>
</div>
<div class="container">
	<!-- 폼페이지 시작 -->
	<form name="newProduct" id="newProduct" action="processAddProduct.jsp"
		class="form-horizontal" method="post" enctype="multipart/form-data">
		<!-- 가로방향(행=로우=튜플=레코드) -->
	<div class="form-group row">
		<label class="col-sm-2">상품코드</label>
		<div class="col-sm-3">
			<input type="text" name="productId" class="form-control" value="${productId}" readonly/>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">상품명</label>
		<div class="col-sm-3">
			<input type="text" name="pname" class="form-control" required/>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">가격</label>
		<div class="col-sm-3">
			<input type="text" name="unitPrice" class="form-control" required/>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">상세정보</label>
		<div>
		<!-- 세로 : cols, 가로 : rows -->
			<textarea class="form-control" cols="100" rows="2" id="description" name="description"></textarea>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">제조사</label>
		<div class="col-sm-3">
			<input type="text" name="manufacturer" class="form-control"/>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">분류</label>
		<div class="col-sm-3">
		<!-- 
			input type="checkbox" / "radio" => checked
		 -->
		
			<select class="form-select" id="category" name="category" aria-label="Disabled select example" >
			  <option selected>분류를 선택하세요</option>
			  <option value="Smart Phone">Smart Phone</option>
			  <option value="Notebook" selected>Notebook</option>
			  <option value="Tablet">Tablet</option>
			</select>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">재고 수</label>
		<div class="col-sm-3">
			<input type="text" name="unitsInStock" class="form-control"/>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">상태</label>
		<div class="col-sm-5">
			<input type="radio" id="New" name="condition" value="New" checked/>
			<label for="new">신규제품</label>
			<input type="radio" id="Old" name="condition" value="Old"/>
			<label for="old">중고제품</label>
			<input type="radio" id="Refurbished" name="condition" value="Refurbished"/>
			<label for="Refurbished">재생제품</label>
		</div>
	</div>
	<div class="form-group row">
		<label class="col-sm-2">이미지</label>
		<div class="col-sm-5">
			<input type="file" name="productImage" class="form-control">
		</div>
	</div>
	<div class="form-group row">
		<div class="col-sm-offset-2 col-sm-10">
			<!-- <button type="submit" .. </button> -->
			<!-- checkAddProduct() : 핸들러함수 -->
			<input type="button" class="btn btn-primary" value="등록" onclick="checkAddProduct()"/>
			<input type="reset" class="btn btn-danger" value="초기화"/>
			<input type="button" class="btn btn-success" value="목록"
			onclick="javascript:location.href='products.jsp'" />
		</div>
	</div>
	</form>
	<!-- 폼페이지 끝 -->
</div>

  <script>
  CKEDITOR.replace('description');
  </script>


<jsp:include page="footer.jsp"></jsp:include>

</body>
</html>

 

 

상품코드 + 1 해주기 메소드 

	public String getNextProductId() {
	//	List<ProductVO> listOfProducts => 상품목록
	//  list는 0부터 샘. 리스트의 size가 3이면 0,1,2
	//  즉 index의 마지막 번호는 크기 -1
		ProductVO productVO = listOfProducts.get(listOfProducts.size()-1);
	System.out.println("productVO : "+productVO);
	//마지막 상품의 상품코드를 가져옴
		String productId = productVO.getProductId();
		System.out.println("productId : "+productId);
		//상품코드 +1 : p1236 + 1 = > p1237
		int id = Integer.parseInt(productId.substring(1,5));
		System.out.println("id : "+id);
		id++;
		productId = "p"+id;
		System.out.println("productId : "+ productId);
		return productId;
	}

 

<%
	ProductRepository productRepository = ProductRepository.getInstance();
	String productId = productRepository.getNextProductId();
%>
<!--  scope(영역) : page(pageContext)- 생략가능(기본), request, session, application -->
<c:set var="productId" value="<%=productId%>" scope="page"/>

	<div class="form-group row">
		<label class="col-sm-2">상품코드</label>
		<div class="col-sm-3">
			<input type="text" name="productId" class="form-control" value="${productId}" readonly/>
		</div>
	</div>
    
    상품코드에 붙여넣기

붙여넣기 성공! 

Comments