1.entity 생성
2. 컨트롤러
3. DB
4. DBImpl
이미지 추가
// 이미지 추가
// byte 배열
private byte[] filedata = null;
private String filetype = null;
private String filename = null;
private Long filesize = 0L;
insertImg.jsp 호출명령
일단 사용자 입력 페이지가 나와야함
입력 후에 추가하는건 이후 일( 5. 에서 PostMapping)
// 127.0.0.1:8080/item/insertimg
@GetMapping(value = "/insertimg")
public String insertImgGET() {
// item 폴더의 insert.jsp
return "item/insertImg";
}
Service 파일임을 명시
: @Service
(int) -1, 0, 1로 반환값 받음
: public int insertImgItem(Item item);
Service 파일임을 명시
: @Service
설계도를 불러옴
: implements ItemDB
implement 안된 메소드 자동으로 오버라이딩
새 시퀀스 사용
: long code = sequenceService.generationSequence("SEQ_ITEM4_CODE");
Item 타입의 item을 insert함
: Item result = mongodb.insert(item);
@Override
public int insertImgItem(Item item) {
try {
long code = sequenceService.generationSequence("SEQ_ITEM4_CODE");
// _id
item.setCode(code);
// 현재시간
item.setRegdate(new Date());
Item result = mongodb.insert(item);
// System.out.println("result ===> " + result);
if (result.getCode() == code) {
return 1;
}
return 0;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
insertimg.jsp 에서 post메소드로 받아왔기 때문에 POST로 맵핑함
: @PostMapping(value = "/insertimg")
insertimg.jsp 에서 임의의 name인 image
로 이미지파일을 넘겼기 때문에 image로 받음
: @RequestParam(name = "image") MultipartFile image,
: 이미지의 타입은 MultipartFile
MultipartFile
타입의 image에 item형태의, entity에서 설정한 변수를 전송받은 image에서 찾아서 추가함
: item.setFiledata(image.getBytes());
: item.setFilename(image.getOriginalFilename());
: item.setFilesize(image.getSize());
: item.setFiletype(image.getContentType());
item에 들어있는 모든것을 추가(POST) 함
: @ModelAttribute Item item)
insertImgItem 수행 후 int로 리턴값을 받음
: int ret = itemDB.insertImgItem(item);
// 127.0.0.1:8080/item/insertimg
@PostMapping(value = "/insertimg")
public String insertImgPOST(
@RequestParam(name = "image") MultipartFile image,
@ModelAttribute Item item) throws IOException {
// System.out.println("item.toString() ===> " + item.toString());
if (image.isEmpty() == false) { // 첨부됐을때
// System.out.println("image첨부됨");
item.setFiledata(image.getBytes());
item.setFilename(image.getOriginalFilename());
item.setFilesize(image.getSize());
item.setFiletype(image.getContentType());
}
// System.out.println("item.toString() ===> " + item.toString());
int ret = itemDB.insertImgItem(item);
// System.out.println("ret ===> " + ret);
if (ret == 1) {
// GET으로 변경 127.0.0.1:8080/item/insertimg
return "redirect:/item/seletlist";
}
return "redirect:/item/insertimg";
}
thymeleaf 사용 정의
: <html lang="en" xmlns:th="http://www.thymeleaf.org">
Bootstrap 사용 정의
: <link rel="stylesheet" type="text/css" th:href="@{/css/bootstrap.css}" />
: <script type="text/javascript" th:src="@{/js/bootstrap.min.js}"></script>
form - submit으로 보낼때, 파일이 첨부되면 전송 타입을 설정해야한다.
: <form th:action="@{/item/insertimg}" method="post" enctype="multipart/form-data">
: 에서 enctype="multipart/form-data"
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" th:href="@{/css/bootstrap.css}" />
<script type="text/javascript" th:src="@{/js/bootstrap.min.js}"></script>
<title>InsertImg</title>
</head>
<body>
<div class="style2">
<div class="style1">
<h3>item/insert.jsp</h3>
** 물품코드 등록일은 자동 생성
<form th:action="@{/item/insertimg}" method="post" enctype="multipart/form-data">
<div class="mb-3" style="width: 400px;">
<label class="lbl1">품명</label>
<input name="name" class="form-control form-control-sm" type="text" placeholder="품명" >
</div>
<div class="mb-3" style="width: 400px;">
<label class="lbl1">가격</label>
<input name="price" class="form-control form-control-sm" type="number" placeholder="가격" >
</div>
<div class="mb-3" style="width: 400px;">
<label class="lbl1">수량</label>
<input name="quantity" class="form-control form-control-sm" type="number" placeholder="수량" >
</div>
<div class="mb-3" style="width: 400px;">
<label style="width : 100px;display:inline-block;">아이디</label>
<input name="image" class="form-control form-control-sm" type="file" placeholder="아이디" >
</div>
<input type="submit" class="btn btn-primary" value="회원가입">
</form>
</div>
</div>
</body>
</html>
<style>
.lbl1{
width : 100px;
display : inline-block;
}
.style1 {
border: 1px solid #cccccc;
padding: 20px;
width: 60%;
}
.style2 {
display: flex;
justify-content: center;
}
</style>