본문 바로가기
공부기록

5월 15일 (1) Spring - CRUD(수정)

by project100 2023. 5. 15.

Get 방식 전송에 사용되는 URL 인코딩용 특수 문자

get전송 url

http://my.home.com/some?data1=어떤값&data2=또+다른값 

url/메소드?데이터변수이름

원래 사용하는 get 방식

같은 페이지라면 url은 생략 가능

 

- ? : url과 데이터의 구분, url?이름=값

- & : 데이터 간 구분. url?이름1=값1&이름2=값2.....

- + : 값에 들어간 공백. 값+문자열 => '값 문자열', 공백문자 ' '를 사용하지 않음(띄어쓰기 허용 안됨)

 

사용하는 위치 :  브라우저 주소 칸. <a> 태그의 href 속성. 자바스크립트 location.href

<a href="detail?tcode=${item.tcode}">${item.tname}</a>

 

PathVariable :  경로 형식으로 데이터를 전송하는 방식

url/data => @GetMapping("url/{data}")

매개변수 앞에 (@PathVariable("data") String data)

 

<a href="detail/${item.tcode}">${item.tname}</a>
@GetMapping("detail/{tcode}")
    public ModelAndView detail(@PathVariable("tcode") Integer tcode){
        log.info("detail()");
        // log.info("detail() - tcode:" + tcode);
        mv = tServ.getData(tcode);
        return mv;
    }

<a href="detail/${item.tcode}/${item.tname}">${item.tname}</a>
 @GetMapping("detail/{tcode}/{tname}")
    public ModelAndView detail(@PathVariable("tcode") Integer tcode, @PathVariable("tname") String tname){
        log.info("detail()");
        log.info("tname : " + tname);
        // log.info("detail() - tcode:" + tcode);
        mv = tServ.getData(tcode);
        return mv;
    }

 

다수 데이터 전송

url/data1/data2 => @GetMapping("url/{data1}/{data2}")

각 매개변수 앞에 (@PathVariable("data1") String data1, @PathVaribale("data2") int data2)

 


데이터 수정

수정과 삭제는 항상 검색 기능이 앞에 먼저 처리되어야 한다. 그래서 상세보기 화면에서 진행!

 

수정기능 = 검색 + 입력

화면의 구조는 입력양식과 유사

 

1. view폴더에 updateFome.jsp 파일 만들기

2. detail.jsp에 알람 띄우기 수정여부 확인

3. controller updateForm 

4. dao 데이터 수정용 메소드 선언

5. dao.xml 데이터 쿼리문작성

6. service

7. sevice - controller 연결

 

 

데이터 삭제

1. detail.jsp

dbtn.addEventListener("click", function (){
let yn = confirm("삭제하시겠습니까?");
if(yn){
location.href = "/deleteData?tcode=${data.tcode}"
}

2. controller deleteData

@GetMapping("deleteData")
public String deleteData(Integer tcode, RedirectAttributes rttr){
log.info("deleteData()");
String view = null;
return view;
}

 

3. dao 데이터삭제 용 메소드 선언

void deleteData(Integer tcode);
4. dao.xml 쿼리문작성
<delete id="deleteData" parameterType="integer">
DELETE FROM testtb1 WHERE tcode=#{tcode}
</delete>

5. sevice

public String deleteData(Integer tcode, RedirectAttributes rttr){
log.info("deleteData()");
String view = null;
String msg = null;

try{
tDao.deleteData(tcode);
view = "redirect:outputData";
msg = "삭제 성공";
}catch (Exception e){
e.printStackTrace();
view = "redirect:detail?tcode=" + tcode;
msg = "삭제 실패";
}
rttr.addFlashAttribute("msg", msg);
return view;
}
6. controller 연결
@GetMapping("deleteData")
public String deleteData(Integer tcode, RedirectAttributes rttr){
log.info("deleteData()");
String view = tServ.deleteData(tcode, rttr);
return view;
}