https://dev-eunse.tistory.com/198 여기 list에서 삭제,수정
👀 삭제
1. shop_main.java 에 추가 : @GetMapping("/coupon_del.do")
/*-- 쿠폰 delete --*/
@GetMapping("/coupon_del.do")
public void coupon_del(int cidx, HttpServletResponse res) throws Exception{
res.setContentType("text/html;charset=utf-8");
String callback = new coupon_insert().del_result(dbInfo, cidx);
this.pw= res.getWriter();
if(callback == "Y") {
this.pw.write("<script>"
+ "alert('정상적으로 쿠폰이 삭제되었습니다.');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}else {
this.pw.write("<script>"
+ "alert('데이터 오류로 인하여 삭제 실패');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}
this.pw.close();
}
삭제 : view페이지 필요없음 => void 사용
2. coupon_insert.java 에 삭제기능 메소드 추가 ( database 실행만 하는 메소드 : shop_main에서 실행됨 )
Connection con = null;
PreparedStatement ps = null;
String rs = null; //결과값을 담을 전역 변수
/*-- 삭제기능 추가 - 실행하고 , 성공여부 결과값 this.rs로 출력 --*/
public String del_result(BasicDataSource dbinfo, int cidx) throws Exception{
//dao는 필요없음 - 고유값이 정해져서 날라오니까
try {
this.con = dbinfo.getConnection();
String sql = "delete from coupon where cidx=?";
this.ps = this.con.prepareStatement(sql);
this.ps.setInt(1, cidx);
this.ps.executeUpdate();
this.rs = "Y";
}catch(Exception e) {
System.out.println("db 쿼리문 오류 발생!");
this.rs = "N";
}finally {
//여기에 try~catch 넣어주기 싫으면 위에 throws Exception 적어주면댐
this.ps.close();
this.con.close();
}
return this.rs;
}
❓ 선택삭제 버튼을 만들고 싶다면? (del_result 공통 사용 - 수정없음)
@PostMapping("/choice_del.do")
public void choice_del(String cp_ck[] , HttpServletResponse res) throws Exception{
res.setContentType("text/html;charset=utf-8");
int f;
String callback = "";
for(f=0; f<cp_ck.length; f++) {
callback = new coupon_insert().del_result(dbInfo, Integer.parseInt(cp_ck[f]));
}
this.pw= res.getWriter();
if(callback == "Y") {
this.pw.write("<script>"
+ "alert('정상적으로 쿠폰이 삭제되었습니다.');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}else {
this.pw.write("<script>"
+ "alert('데이터 오류로 인하여 삭제 실패');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}
this.pw.close();
}
👀 수정
select (shop_main.java과 연결된 coupon_update.java에서 getter,setter로 배열에 담음,shop_main.java에서 jsp로 보냄)
-> jsp로 수정할 해당 data 배열로 출력
-> 수정 버튼 클릭 ( coupon_modifyok.do 로 보냄)
-> data update
방법 1. data 1개 값을 dao로 setter값에 모두 적용 후 Controller에서 해당 배열을 Model->View 적용
- 요거로 해봄 더어려움 ㅠ
방법 2. 해당 module에서 1차 배열을 미리 만든 후 control로 return 후 Model -> View 적용
1. shop_main.java 에 추가 : @GetMapping("/coupon_modify.do")
coupon_modify.jsp 페이지로 해당 data를 출력 (select)
//쿠폰정보 수정 : 한개의 데이터만 로드되도록 하는 메소드
@GetMapping("/coupon_modify.do")
public String coupon_modify(int cidx, coupon_dao dao,Model m) {
coupon_update cu = new coupon_update();
//여기서 throws Exception 해줘서 여기서도 예외처리 해줘야함
try {
//db정보, dao, db고유값을 해당 메소드로 전달 : setter 쓰려구
cu.select_one(dbInfo, dao , cidx);
m.addAttribute("info",dao.lists());
//최종값은 배열로 getter값을 모두 제작 후 view(jsp) 로 이관
//dao.lists() : coupon_dao 에서 getter로 배열 출력
}catch(Exception e) {
}
return null;
}
수정 : view페이지 필요함 => String - return 사용
=> 여기서 Model 이용해서 jsp로 배열을 던짐
2. coupon_update.java 생성 : shop_main.java에서 호출
package shop;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import org.apache.commons.dbcp.BasicDataSource;
public class coupon_update {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
// new 를 사용하지 않는 이상 dao는 Module과 Controller 모두 동일한 값을 공유할 수 있음
public void select_one(BasicDataSource dbinfo , coupon_dao dao , int cidx) throws Exception{
try {
String sql = "select * from coupon where cidx=?";
this.con = dbinfo.getConnection();
this.ps = this.con.prepareStatement(sql);
this.ps.setInt(1, cidx);
this.rs = this.ps.executeQuery();
this.rs.next();
//database에 하나의 row값을 dao에 setter 메소드에 값을 이관시킴
dao.setCidx(Integer.parseInt(this.rs.getString(1)));
dao.setCpname(this.rs.getString(2));
dao.setCprate(Integer.parseInt(this.rs.getString(3)));
dao.setCpuse(this.rs.getString(4));
dao.setCpdate(this.rs.getString(5));
dao.setIndate(this.rs.getString(6));
}catch(Exception e) {
System.out.println("error");
}finally {
this.rs.close();
this.ps.close();
this.con.close(); //얜 안해두댐
}
}
}
3. coupon_modify.jsp : 이게 coupon_modify.do로 보여짐!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="cp" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠폰 수정 프로세서</title>
</head>
<body>
<form id="frm">
<input type="hidden" name="cidx" value="${info.get(0)}">
쿠폰명 : <input type="text" name="cpname" value="${info.get(1)}"><br>
쿠폰할인율 : <input type="text" name="cprate" value="${info.get(2)}"><br>
쿠폰활성화 : <input type="radio" name="cpuse" value="Y">사용함
<input type="radio" name="cpuse" value="N">사용안함<br>
쿠폰만료일 : <input type="date" name="cpdate" value="${info.get(4)}"><br>
쿠폰 생성일 : <input type="text" name="indate" value="${info.get(5)}" readonly><br><br>
<input type="button" value="쿠폰수정" onclick="cpmodify()">
</form>
</body>
<script type="text/javascript">
//checkbox는 js로 핸들링 - jstl로도 할수있음
var checkin = "${info.get(3)}";
var cpuse = document.getElementsByName("cpuse");
if(checkin == "Y"){
cpuse[0].checked=true;
}else{
cpuse[1].checked=true;
}
function cpmodify(){
frm.method = "POST";
frm.action = "./coupon_modifyok.do";
frm.submit();
}
</script>
</html>
4. 수정버튼 눌렀을때 실행되는 부분(update) : shop_main.java 에 추가
@RequestMapping(value="/coupon_modifyok.do",method=RequestMethod.POST)
@RequestMapping(value="/coupon_modifyok.do",method=RequestMethod.POST)
public void coupon_modifyok(coupon_dao dao,HttpServletResponse res) {
res.setContentType("text/html;charset=utf-8");
ArrayList<String> arr = new ArrayList<String>();
arr.add(String.valueOf(dao.getCidx()));
arr.add(dao.getCpname());
arr.add(String.valueOf(dao.getCprate()));
arr.add(dao.getCpuse());
arr.add(dao.getCpdate());
try {
this.pw= res.getWriter();
coupon_update cu = new coupon_update();
String callback = cu.cp_modify(dbInfo, arr);
if(callback == "Y") {
this.pw.write("<script>"
+ "alert('정상적으로 쿠폰이 수정되었습니다.');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}else {
this.pw.write("<script>"
+ "alert('데이터 오류로 인하여 수정 실패');"
+ "location.href='./coupon_list.do';"
+ "</script>");
}
this.pw.close();
}catch(Exception e) {
}
}
5. shop_main.java 에서 호출하는 메소드 : coupon_update.java에 추가
: 쿼리 실행 및 결과값 출력
public String cp_modify(BasicDataSource dbinfo, ArrayList<String> arr) throws Exception{
String result="";
try {
String sql = "update coupon set cpname=?,cprate=?,cpuse=?,cpdate=? where cidx=?";
this.con = dbinfo.getConnection();
this.ps = this.con.prepareStatement(sql);
this.ps.setString(1, arr.get(1));
this.ps.setString(2, arr.get(2));
this.ps.setString(3, arr.get(3));
this.ps.setString(4, arr.get(4));
this.ps.setInt(5, Integer.parseInt(arr.get(0)));
this.ps.executeUpdate();
result="Y";
this.ps.close();
this.con.close();
}catch(Exception e) {
result="N";
System.out.println("database 오류");
}
return result;
}
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#4-2 / gallery board insert-write (spring + I/O + database) (1) | 2024.07.11 |
---|---|
#4-1 / spring + I/O (0) | 2024.07.11 |
#3-1 / coupon insert,select (spring + database) (0) | 2024.07.10 |
#2-2 / spring + database 연결,회원가입 JSTL+spring+Datasource (0) | 2024.07.09 |
#2-1 / spring 규칙2, JSTL 사용법 기초 (0) | 2024.07.09 |