본문 바로가기
카테고리 없음

서블릿 jsp 12(admin페이지에서 checkbox값 삭제하기)

by 킹차니 2021. 4. 9.

관리자 공지사항 페이지

위와 같이 관리자가 공지사항의 글을 input checkbox를 사용해서 일괄적으로 삭제하는 법을 봐보자.

 

각 글에는 id값이 있다. 체크박스가 선택될 때 해당 글들의 id값들이 선택되서 날라가게 하면 된다.

list.jsp 체크박스

위처럼 value를 각 글의 id값으로 하고, name을 open-id, del-id로 해준다.

name값은 해당 체크박스가 선택되었을 때 선택된 것이 삭제인지 공개인지를 controller에서 구분하기 위해 필요하다.

 

빨간색 동그라미의 버튼 html을 보자.

list.jsp 버튼

또한 버튼에도 name이 있다. 버튼을 누르면 key는 name으로, value는 버튼에 따라서 openAll 또는 deleteAll 이 controller로 post방식으로 날라간다.

 

이제 이들을 받는 controller를 봐보자.

ListController

위의 빨간색 강조 부분에서 보이듯이 name은 key가 되어 request.getParamterValues() 메소드로 이를 캐치하고, key의 value 값을 각각 openIds, delIds, btn에 담는다. 

( 여러개가 같은 name으로 post되어 날라오면 이 value들은 list에 담겨서 온다.)

또한 switch문 또는 if 문을 사용하여 날라온 btn의 value가 openAll이라면 if문을, delAll 이라면 else문을 실행해서 선택된 글들을 삭제하게 한다. (위에서는 switch문도 있는데 그냥 없다고 생각할 것.)

 

controller에서는 service가 데이터처리를 편하게 할 수 있도록 String 배열로 날라온 id값들을 모두 정수형으로 바꾸어 다시 ids라는 배열에 담고, 이를 service의 deleteNoticeAll메소드에 인자로 전달한다. 이제 service쪽을 봐보자.

 

NoticeService의 deleteNoticeAll메소드

 쿼리문은 그냥 일반적 delete + in 문이고 

빨간색으로 강조한 부분이 중요하다.

sql문의 in(  )에 정수들을 컴마로 이어붙여 전달하기 위해 반복문을 사용하였다.

 

외와 같이 작성하면 여러개의 글들을 다중 선택하여 일괄 삭제기능을 구현할 수 있다.