-
List : Detail , Modify, DeleteSpring 2023. 3. 30. 10:12
Detail
1. jsp 작성
ArrayList로 받아와서 만들었던 List.jsp이다.
여기서, 제목을 클릭하면 해당 정보를 상세하게 볼 수 있게 만들 것이다.
<td><a href='http://localhost:8080/list/detail?id=${list.id }'>${list.id}</a></td>
제목에 a태그를 주고, href에 전달하고자 하는 파라미터( id ) 를 ? 뒤쪽에 넣었다.
2.Controller
- MemberController에는 LoginVO 타입의 객체와 , Select 한 값을 받아올 Model 객체를 매개변수로 선언했다.
Select로 특정 id 값을 가진 데이터들을 가지고 올 것이기 때문에,
model.addAttribute( "memDetail", ls.memDetail(member) );
ls.memDetail(member) 로부터 받아온 return 값을 memDetail에 저장하도록 선언했다.
** a 태그에서 id 파라미터에 값을 전달받았고, 해당 명령을 수행하는데 id 값만 필요하기 때문에,
LoginVO member 대신 String id를 매개변수로 적용해도 상관없다.
3. Serviec 에서 interface 생성 / Servicelmpl 에서 함수 선언 ( memDetail )
public LoginVO memDetail(LoginVO member) { return lm.memDetail(member); } -> Select의 결과로 얻을 데이터를 return하도록 하자.
4. Mapper interface / Mapper.xml 선언
- 현재 id 값이 있는 행의 모든 정보를 가지고온다. 이 때 resultType으로 return할 값들의 타입을 정해준다.
5. detail.jsp 생성
- select로 가져온 데이터를 이용해서 해당 id에 대한 세부 정보를 볼 수 있게 만들어준다.
- id는 변경할 수 없지만, value가 form 태그의 submit에 전달 될 수 있게 input type을 hidden으로 준다.
Modify
1. form 태그 submit 생성
위의 detail.jsp에서 form 태그 내부에 수정, 삭제 버튼이 두개가 있다. 두 버튼 모두 현재 form 태그 내부의 정보를 바탕으로
DB와 연결되는 작업이기 때문에, 버튼을 누르면 서로 다른 방향으로 submit 명령이 진행되어야 한다.
<form action="" method="post"> <input type="submit" value="수정" formaction="URL">
form 태그에 action 값을 주지 않고, submit 버튼 내부에 formaction의 URL을 지정한다.
2. Controller
- mySQL에서 update 명령을 수행할 것이기 때문에 LoginVO 객체만 매개변수로 선언하고,
ls.memModify(member); 명령을 수행 한 뒤
사용자에게 값이 수정된 detail 페이지를 보내주기 위해 현재 member의 정보가 담겨있는 member 객체로부터
.getId() 명령을 이용해서 ID 값을 받아왔고
redirect : URL ? 파라미터 형태로 return했다. 해당 return으로 인해, 사용자들은 Mapping value가 /list/detail 인 명령을 특정 ID 값을 가진 채로 수행할 것이다.
3. Serviec 에서 interface 생성 / Servicelmpl 에서 함수 선언 ( memModify )
- memModify() 함수는 update 명령을 수행할 것이기 때문에, return 값이 필요 없으므로 void를 선언했다
4. Mapper interface / Mapper.xml 선언
- member 테이블의 특정 id 값을 가진 행의 데이터를 다음과 같이 set 한다.
이 때, id 는 변경되면 안되는 값이기 때문에 set 명령에 포함시켜서는 안된다.
- ID 가 abcd 인 member의 정보를 변경했다.
** 생일은 JSP에서 String 형태이기 때문에, mySQL에 넘겨줄 때 Date 타입으로 변경해야한다.
Delete
1. JSP 설정
- submit 할 방향을 formaction 속성에 추가했다.
2. Controller
- ls.memDelete(member) 를 실행시키고 Delete 명령을 지정할 ID 값을 넘기기 위해 LoginVO member를 변수로 넘겨줬다.
해당 member를 삭제하고 난 뒤, list로 돌아가기 위해서 redirect: /list 를 리턴했다.
3. Serviec 에서 interface 생성 / Servicelmpl 에서 함수 선언 ( memDelete )
: return 타입이 없는 void 형태로 함수를 선언해준다
4. Mapper interface / Mapper.xml 선언
- Id를 기준으로 행을 찾아서 삭제하는 명령어를 입력한다.
controller에서 설정했던 대로, Delete 명령을 수행하고 나면 /list로 되돌아 올 수 있다.
'Spring' 카테고리의 다른 글
회원가입, 로그인, 게시판 백엔드 실습( main 화면 ) (0) 2023.03.31 RedirectAttribute (0) 2023.03.30 ArrayList / Mapper 사용예제 (0) 2023.03.29 프로젝트의 구조 (0) 2023.03.29 기본 Spring 프로젝트 둘러보기 (0) 2023.03.28