admin_modifyForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상품 수정</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css" type="text/css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
window.onload=function(){
const myForm = document.getElementById('modify_form');
//이벤트 연결
myForm.onsubmit=function(){
const radio = document.querySelectorAll('input[type=radio]:checked');
if(radio.length < 1){
alert('상품표시여부를 지정하세요');
return false;
}
const items = document.querySelectorAll('.input-check');
for(let i=0; i<items.length; i++){
if(items[i].value.trim()==''){
const label = document.querySelector('label[for="'+items[i].id+'"]');
alert(label.textContent+' 항목은 필수 입력');
items[i].value = '';
items[i].focus();
return false;
}
}
};
//이미지 미리보기
$('#photo1, #photo2').change(function(){
let my_photo = this.files[0];
let $item_photo =$(this).parent().find('.my-photo');
if(!my_photo){ //선택한 상황에서 취소를 눌렀을 경우 다시 원래사진으로 돌아가게한다.
$item_photo.attr('src','${pageContext.request.contextPath}/upload/'+$item_photo.attr('data-img'));
return;
}
if(my_photo.size > 1024*1024){
alert(Math.round(my_photo.size/1024)+'kbytes(1024kbytes까지만 업로드 가능)');
$item_photo.attr('src','${pageContext.request.contextPath}/upload/'+$item_photo.attr('data-img'));
$(this).val(''); //리턴하기전에 파일명을 지운다.
return;
}
const reader = new FileReader();
reader.readAsDataURL(my_photo);
reader.onload=function(){
$item_photo.attr('src',reader.result);
}
});
};
</script>
</head>
<body>
<div class="page-main">
<jsp:include page="/WEB-INF/views/common/header.jsp"/>
<div class="content-main">
<h2>상품수정</h2>
<form id="modify_form" action="adminModify.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="item_num" value="${item.item_num}">
<ul>
<li>
<label>상품표시여부</label>
<input type="radio" name="status" value="1" id="status1"<c:if test="${item.status ==1}">checked</c:if>>미표시
<input type="radio" name="status" value="2" id="status2"<c:if test="${item.status ==2}">checked</c:if>>표시
</li>
<li>
<label for="name">상품명</label>
<input type="text" name="name" id="name" value="${item.name}" maxlength="10" class="input-check">
</li>
<li>
<label for="price">가격</label>
<input type="number" name="price" id="price" value="${item.price}" min="1" max="999999999" class="input-check">
</li>
<li>
<label for="quantity">수량</label>
<input type="number" name="quantity" id="quantity" value="${item.quantity}" min="0" max="9999999" class="input-check">
</li>
<li>
<label for="photo1">상품사진1</label>
<img src="${pageContext.request.contextPath}/upload/${item.photo1}" data-img="${item.photo1}" width="50" height="50" class="my-photo">
<br>
<input type="file" name="photo1" id="photo1"
class="form-notice" accept="image/gif,image/png,image/jpeg">
</li>
<li>
<label for="photo2">상품사진2</label>
<img src="${pageContext.request.contextPath}/upload/${item.photo2}" data-img="${item.photo2}" width="50" height="50" class="my-photo">
<br>
<input type="file" name="photo2" id="photo2"
class="form-notice" accept="image/gif,image/png,image/jpeg">
</li>
<li>
<label for="detail">상품설명</label>
<textarea rows="5" cols="30" name="detail" id="detail" class="input-check">${item.detail}</textarea>
</li>
</ul>
<div class="align-center">
<input type="submit" value="수정">
<input type="button" value="삭제" onclick="location.href='adminDelete.do?item_num=${item.item_num}'">
<input type="button" value="목록" onclick="location.href='adminlist.do'">
</div>
</form>
</div>
</div>
</body>
</html>
ItemDAO 내용추가
//관리자 - 상품 수정
public void updateItem(ItemVO item)throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
String sql =null;
String sub_sql="";
int cnt=0;
try {
//커넥션풀로부터 커넥션 할당
conn = DBUtil.getConnection();
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
sub_sql += ",photo1=?";
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
sub_sql += ",photo2=?";
}
//SQL문 작성
sql = "UPDATE zitem SET name=?,price=?,quantity=?,detail=?,"
+ "modify_date=SYSDATE,status=?"+sub_sql
+" WHERE item_num=?";
//PreparedStatment 객체 생성
pstmt = conn.prepareStatement(sql);
//?에 데이터 바인딩
pstmt.setString(++cnt,item.getName());
pstmt.setInt(++cnt,item.getPrice());
pstmt.setInt(++cnt,item.getQuantity());
pstmt.setString(++cnt,item.getDetail());
pstmt.setInt(++cnt,item.getStatus());
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
pstmt.setString(++cnt,item.getPhoto1());
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
pstmt.setString(++cnt,item.getPhoto2());
}
pstmt.setInt(++cnt,item.getItem_num());
//SQL실행
pstmt.executeUpdate();
}catch(Exception e) {
throw new Exception(e);
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
AdminModifyAction
package kr.item.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.item.dao.ItemDAO;
import kr.item.vo.ItemVO;
import kr.util.FileUtil;
public class AdminModifyAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num==null) {
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth !=9) {
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인한 경우
//전송된 데이터 인코딩 타입 지정
request.setCharacterEncoding("utf-8");
int item_num = Integer.parseInt(request.getParameter("item_num"));
//DB에 저장된 정보를 불러옴
ItemDAO dao = ItemDAO.getInstance();
ItemVO db_item = dao.getItem(item_num);
//전송된 데이터를 자바빈(VO)에 저장
ItemVO item = new ItemVO();
item.setItem_num(item_num);
item.setName(request.getParameter("name"));
item.setPrice(Integer.parseInt(request.getParameter("price")));
item.setQuantity(Integer.parseInt(request.getParameter("quantity")));
item.setDetail(request.getParameter("detail"));
item.setPhoto1(FileUtil.createFile(request,"photo1"));
item.setPhoto2(FileUtil.createFile(request,"photo2"));
item.setStatus(Integer.parseInt(request.getParameter("status")));
dao.updateItem(item);
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
FileUtil.removeFile(request,db_item.getPhoto1());
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
FileUtil.removeFile(request,db_item.getPhoto2());
}
request.setAttribute("notice_msg","정상적으로 수정되었습니다.");
request.setAttribute("notice_url",request.getContextPath()+"/item/adminModifyForm.do?item_num="+item_num);
return "/WEB-INF/views/common/alert_view.jsp";
}
}
'쌍용교육(JAVA) > MVC' 카테고리의 다른 글
쌍용교육 -JSP수업 77일차 - ch06_mvcPageMVC(22) (0) | 2024.06.12 |
---|---|
쌍용교육 -JSP수업 75일차 - ch06_mvcPageMVC(20) (0) | 2024.06.10 |
쌍용교육 -JSP수업 74일차 - ch06_mvcPageMVC(19) (0) | 2024.06.05 |
쌍용교육 -JSP수업 73일차 - ch06_mvcPageMVC(18) (0) | 2024.06.04 |
쌍용교육 -JSP수업 72일차 - ch06_mvcPageMVC(17) (0) | 2024.06.03 |
admin_modifyForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상품 수정</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css" type="text/css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
window.onload=function(){
const myForm = document.getElementById('modify_form');
//이벤트 연결
myForm.onsubmit=function(){
const radio = document.querySelectorAll('input[type=radio]:checked');
if(radio.length < 1){
alert('상품표시여부를 지정하세요');
return false;
}
const items = document.querySelectorAll('.input-check');
for(let i=0; i<items.length; i++){
if(items[i].value.trim()==''){
const label = document.querySelector('label[for="'+items[i].id+'"]');
alert(label.textContent+' 항목은 필수 입력');
items[i].value = '';
items[i].focus();
return false;
}
}
};
//이미지 미리보기
$('#photo1, #photo2').change(function(){
let my_photo = this.files[0];
let $item_photo =$(this).parent().find('.my-photo');
if(!my_photo){ //선택한 상황에서 취소를 눌렀을 경우 다시 원래사진으로 돌아가게한다.
$item_photo.attr('src','${pageContext.request.contextPath}/upload/'+$item_photo.attr('data-img'));
return;
}
if(my_photo.size > 1024*1024){
alert(Math.round(my_photo.size/1024)+'kbytes(1024kbytes까지만 업로드 가능)');
$item_photo.attr('src','${pageContext.request.contextPath}/upload/'+$item_photo.attr('data-img'));
$(this).val(''); //리턴하기전에 파일명을 지운다.
return;
}
const reader = new FileReader();
reader.readAsDataURL(my_photo);
reader.onload=function(){
$item_photo.attr('src',reader.result);
}
});
};
</script>
</head>
<body>
<div class="page-main">
<jsp:include page="/WEB-INF/views/common/header.jsp"/>
<div class="content-main">
<h2>상품수정</h2>
<form id="modify_form" action="adminModify.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="item_num" value="${item.item_num}">
<ul>
<li>
<label>상품표시여부</label>
<input type="radio" name="status" value="1" id="status1"<c:if test="${item.status ==1}">checked</c:if>>미표시
<input type="radio" name="status" value="2" id="status2"<c:if test="${item.status ==2}">checked</c:if>>표시
</li>
<li>
<label for="name">상품명</label>
<input type="text" name="name" id="name" value="${item.name}" maxlength="10" class="input-check">
</li>
<li>
<label for="price">가격</label>
<input type="number" name="price" id="price" value="${item.price}" min="1" max="999999999" class="input-check">
</li>
<li>
<label for="quantity">수량</label>
<input type="number" name="quantity" id="quantity" value="${item.quantity}" min="0" max="9999999" class="input-check">
</li>
<li>
<label for="photo1">상품사진1</label>
<img src="${pageContext.request.contextPath}/upload/${item.photo1}" data-img="${item.photo1}" width="50" height="50" class="my-photo">
<br>
<input type="file" name="photo1" id="photo1"
class="form-notice" accept="image/gif,image/png,image/jpeg">
</li>
<li>
<label for="photo2">상품사진2</label>
<img src="${pageContext.request.contextPath}/upload/${item.photo2}" data-img="${item.photo2}" width="50" height="50" class="my-photo">
<br>
<input type="file" name="photo2" id="photo2"
class="form-notice" accept="image/gif,image/png,image/jpeg">
</li>
<li>
<label for="detail">상품설명</label>
<textarea rows="5" cols="30" name="detail" id="detail" class="input-check">${item.detail}</textarea>
</li>
</ul>
<div class="align-center">
<input type="submit" value="수정">
<input type="button" value="삭제" onclick="location.href='adminDelete.do?item_num=${item.item_num}'">
<input type="button" value="목록" onclick="location.href='adminlist.do'">
</div>
</form>
</div>
</div>
</body>
</html>
ItemDAO 내용추가
//관리자 - 상품 수정
public void updateItem(ItemVO item)throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
String sql =null;
String sub_sql="";
int cnt=0;
try {
//커넥션풀로부터 커넥션 할당
conn = DBUtil.getConnection();
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
sub_sql += ",photo1=?";
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
sub_sql += ",photo2=?";
}
//SQL문 작성
sql = "UPDATE zitem SET name=?,price=?,quantity=?,detail=?,"
+ "modify_date=SYSDATE,status=?"+sub_sql
+" WHERE item_num=?";
//PreparedStatment 객체 생성
pstmt = conn.prepareStatement(sql);
//?에 데이터 바인딩
pstmt.setString(++cnt,item.getName());
pstmt.setInt(++cnt,item.getPrice());
pstmt.setInt(++cnt,item.getQuantity());
pstmt.setString(++cnt,item.getDetail());
pstmt.setInt(++cnt,item.getStatus());
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
pstmt.setString(++cnt,item.getPhoto1());
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
pstmt.setString(++cnt,item.getPhoto2());
}
pstmt.setInt(++cnt,item.getItem_num());
//SQL실행
pstmt.executeUpdate();
}catch(Exception e) {
throw new Exception(e);
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
AdminModifyAction
package kr.item.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.item.dao.ItemDAO;
import kr.item.vo.ItemVO;
import kr.util.FileUtil;
public class AdminModifyAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num==null) {
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth !=9) {
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인한 경우
//전송된 데이터 인코딩 타입 지정
request.setCharacterEncoding("utf-8");
int item_num = Integer.parseInt(request.getParameter("item_num"));
//DB에 저장된 정보를 불러옴
ItemDAO dao = ItemDAO.getInstance();
ItemVO db_item = dao.getItem(item_num);
//전송된 데이터를 자바빈(VO)에 저장
ItemVO item = new ItemVO();
item.setItem_num(item_num);
item.setName(request.getParameter("name"));
item.setPrice(Integer.parseInt(request.getParameter("price")));
item.setQuantity(Integer.parseInt(request.getParameter("quantity")));
item.setDetail(request.getParameter("detail"));
item.setPhoto1(FileUtil.createFile(request,"photo1"));
item.setPhoto2(FileUtil.createFile(request,"photo2"));
item.setStatus(Integer.parseInt(request.getParameter("status")));
dao.updateItem(item);
if(item.getPhoto1()!=null && !"".equals(item.getPhoto1())) {
FileUtil.removeFile(request,db_item.getPhoto1());
}
if(item.getPhoto2()!=null && !"".equals(item.getPhoto2())) {
FileUtil.removeFile(request,db_item.getPhoto2());
}
request.setAttribute("notice_msg","정상적으로 수정되었습니다.");
request.setAttribute("notice_url",request.getContextPath()+"/item/adminModifyForm.do?item_num="+item_num);
return "/WEB-INF/views/common/alert_view.jsp";
}
}
'쌍용교육(JAVA) > MVC' 카테고리의 다른 글
쌍용교육 -JSP수업 77일차 - ch06_mvcPageMVC(22) (0) | 2024.06.12 |
---|---|
쌍용교육 -JSP수업 75일차 - ch06_mvcPageMVC(20) (0) | 2024.06.10 |
쌍용교육 -JSP수업 74일차 - ch06_mvcPageMVC(19) (0) | 2024.06.05 |
쌍용교육 -JSP수업 73일차 - ch06_mvcPageMVC(18) (0) | 2024.06.04 |
쌍용교육 -JSP수업 72일차 - ch06_mvcPageMVC(17) (0) | 2024.06.03 |