ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • List : Detail , Modify, Delete
    Spring 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으로 준다.

    Detail의 결과

     


    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
Designed by Tistory.