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
관리 메뉴

기록

JAVA SPRING create만들기 (+파일업로드 포함) 본문

카테고리 없음

JAVA SPRING create만들기 (+파일업로드 포함)

9400 2023. 1. 30. 12:47

LprodVO 

public class LprodVO {
	private int lprodId ;
	private String lprodGu;
	private String lprodNm;
	private MultipartFile[] uploadFile; 
	//<input class="form-control" type="file" id="input_imgs" name="uploadFile" multiple>
	//상품분류 : 첨부파일 = 1:N
	
	private List<AttachVO> attachVOList;
    }

 

AttachVO

@Data
public class AttachVO {
	private int seq;
	private String filename;
	private int filesize;
	private String thumbnail;
	private Date regdate;
}

 

crate get

	@GetMapping("/create")
	public String create(Model model) {
		
		//상품분류 아이디 자동생성 
		int lprodId = this.lprodService.getLprodId();
		
		//lprodId 데이터를 model에 담아서 create.jsp로 보내줌
		model.addAttribute("lprodId",lprodId);
		
		//상품 대분류 등록 jsp를 forwarding
		//1.tiles의 index.jsp우선적용
		//2.<definition name="*/*" extends="tiles-layout">
		//    /WEB-INF/views/lprod/create.jsp =>tiles의 body로 include됨
		return "lprod/create";
	}

 

create.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<script type="text/javascript"  src="/resources/js/jquery-3.6.0.js"></script>
<script type="text/javascript">
$(function(){
	//이미지 미리보기 시작//////////////////
 	$('#input_imgs').on('change',handleImgFileSelect);
	
	function handleImgFileSelect(e){
		let files = e.target.files;
		let fileArr = Array.prototype.slice.call(files);
		fileArr.forEach(function(f){
			if(!f.type.match("image.*")){
				alert("이미지만 가능합니다.");
				return;
			}
			
			let reader = new FileReader();
			reader.onload = function(e){
				let img_html = "<img src=\""+e.target.result+"\" />";
				$(".bg-register-image").html(img_html);
//				$('#imag').toggleClass("bg-register-image");
			}
				reader.readAsDataURL(f);
		});
	} 
	
	
	//이미지 미리보기 끝////////////////////
	
	
	
		$(".btn-icon-split").on('click',function(){
			//url : 요청 경로
			//contentType : 보내는 데이터의 타입
			//dataType : 응답 데이터 타입
			//data : 요청 시 전송할 데이터
			//type : 요청방식. get,post,put
			$.ajax({
				url : "/lprod/getLprodGu",
				type : "post",
				success : function(result){
					console.log('result : '+result);
					$("input[name='lprodGu']").val(result);
				}
				
			}); //ajax끝
		});
		
		
		$('#btnRegist').on('click',function(){
			let lprodGu = $('#lprodGu').val();
			let lprodNm = $('#lprodNm').val();
			
			if(jQuery.trim(lprodGu)==""){
				alert("상품 분류코드를 작성해주세요");
				$('#lprodGu').focus();
				return false;
			}
			
			if(jQuery.trim(lprodNm)==""){
				alert("상품 분류명을 작성해주세요");
				$('#lprodNm').focus();
				return false;
			}
			
			//submit을 실행
			//달러('#frm').submit();
			//<form id="frm" class="user" action="/lprod/createPost" method="post">
			/*
			요청URI : /lprod/creatPost
			요청파라미터 : {"lprodId" : "10","lprodGu" : "P404"}
			요청방식 : POST
			*/
			$('form').submit();
/* 			$('form').submit(function(){
				alert('등록이 진행됩니다.');
			}); */
			
		});
});

</script>
<div class="container">

	<div class="card o-hidden border-0 shadow-lg my-5">
		<div class="card-body p-0">
			<!-- Nested Row within Card Body -->
			<div class="row">
				<div class="col-lg-5 d-none d-lg-block bg-register-image" id="imag"></div>
				<div class="col-lg-7">
					<div class="p-5">
						<div class="text-center">
							<h1 class="h4 text-gray-900 mb-4">Create an Account!</h1>
						</div>
						<form id="frm" class="user" action="/lprod/createPost" method="post" enctype="multipart/form-data">
							<div class="form-group row">
								<div class="col-sm-6 mb-3 mb-sm-0">
								<!-- 변경제약
								disabled : 값이 전달 안됨
								readonly : 파라미터로 값이 전달됨 -->
									<input type="text" class="form-control form-control-user"
										id="lprodId" name="lprodId" placeholder="상품분류 아이디" value="${lprodId}" readonly>
								</div>
								<div class="col-sm-6">
										<a href="#" class="btn btn-warning btn-icon-split">
	                                        <span class="icon text-white-50">
	                                            <i class="fas fa-exclamation-triangle"></i>
	                                        </span>
	                                        <span class="text">분류코드 자동생성</span>
	                                    </a>
								</div>
							</div>
							<div class="form-group">
								<input type="text" class="form-control form-control-user"
									id="lprodGu" name="lprodGu" placeholder="상품분류 코드" value="${lprodVO.lprodGu}"required />
							</div>
							<div class="form-group">
								<input type="text" class="form-control form-control-user"
									id="lprodNm" name="lprodNm" placeholder="상품분류 명" value="${lprodVO.lprodNm}" required />
							</div>
							<div class="mb-3">
								  <input class="form-control" type="file" id="input_imgs" name="uploadFile" multiple>
							</div>
							<a href="#" class="btn btn-primary btn-user btn-block" id="btnRegist">
								등록 </a>
							<hr>
							<a href="/lprod/list" class="btn btn-google btn-user btn-block">
								<i class="fab fa-google fa-fw"></i> 목록보기
							</a> <a href="index.html" class="btn btn-facebook btn-user btn-block">
								<i class="fab fa-facebook-f fa-fw"></i> Register with Facebook
							</a>
						</form>
						<hr>
						<div class="text-center">
							<a class="small" href="forgot-password.html">Forgot Password?</a>
						</div>
						<div class="text-center">
							<a class="small" href="login.html">Already have an account?
								Login!</a>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>

</div>

 

 

 

http://localhost/lprod/create

 

 

Comments