일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 표충사
- DB연동
- 데이터베이스
- 출근했을때
- 서산
- 군산
- mybatis
- 캐스퍼
- ojdbc
- Controller
- 삼척
- convert heic
- 국내여행
- 스프링
- Spring
- 럽스토리
- maven
- 커플여행
- oracle
- 전국일주
- 티스토리이미지파일
- 목포
- 남해
- JDBC
- STS3
- 전국여행
- JS
- hikaricp
- 이클립스
- JSP
- Today
- Total
꾸릉스토리
[스프링] Spring(STS3)에서 DB연동하기 (5)-DB 데이터 수정 본문
https://nameguhyeon.tistory.com/9
[스프링] Spring(STS3)에서 DB연동하기 (4)-DB에 데이터 추가하기
https://nameguhyeon.tistory.com/8 [스프링] Spring(STS3)에서 DB연동하기 (3)-실제 DB데이터 가져오기우선 간단하게 jsp페이지를 작성해봅니다. 이제 index.jsp가 컨트롤러에의해 요청되면 h1태그안의 내용이 web
nameguhyeon.tistory.com
위 글에 이어서 진행되는 내용입니다.
지난 글은 스프링에서 데이터베이스로 데이터를 추가하는 방법을 작성했습니다.
이번에는 데이터베이스에 있는 데이터를 변경하고 삭제하는 방법을 작성해 보도록 하겠습니다.
우선 전체 리스트에서 userInfo페이지로 이동할 수 있는 링크를 한 만들겠습니다.

forEach문 내부 id가 들어가는 테이블에 a태그를 링크와 함께 사용합니다.
userInfo로 요청을 하고 id=id정보 값을 파라미터로 넘겨줍니다.

컨트롤러로 이동해서 getmapping으로 userInfo 요청을 받아줍니다.
HttpServletRequest 를 사용해서 사용자에게 전달받은 요청을 확인합니다.
req.getParameter("id")로 파라미터값이 id인 데이터를 출력할 수 있습니다.

웹으로 접속해서 확인하면 이미지처럼 링크가 생긴 것을 확인할 수 있습니다.

아이디 아무거나 클릭하면 해당 아이디가 콘솔에 표시되는것을 확인할 수 있습니다.
이제 이 아이디 정보를 가지고 DB에서 해당 사용자의 모든 정보를 불러오겠습니다.

컨트롤러에서 loginservice의 getuser로 id값을 넘겨줍니다.
한 명의 사용자만 받아올것이기 때문에 arraylist가 아닌 dto타입으로 값을 반환받습니다.
추후 결과를 확인하기위해 받아온 데이터의 dto값을 출력합니다.


위 이미지는 loginService 인터페이스이고 아래 이미지는 LoginServiceImpl입니다.
받은 id 값을 mapper로 바로 넘겨줍니다.
마찬가지로 반환되는 데이터 타입은 LoginDTO입니다.


위 이미지는 LoginMapper 인터페이스이고
아래 이미지는 LoginMapper.xml 파일입니다.
반환 데이터 타입은 동일하며 xml에서는 select 문을 사용하는데 전달받은 id값과 맞는 열을 검색합니다.
resultMap으로 컬럼값이 dto값으로 변환되어 dto에 저장이 됩니다.

이후 웹 페이지에서 다시한번 id를 클릭하여 userInfo로 이동하면 컨트롤러에서 설정해 두었던 println이 출력됩니다.
userInfo.jsp 페이지를 하나 생성하고 해당 페이지로 데이터를 넘겨주겠습니다.

컨트롤러입니다.
필요없는 println은 삭제하고 매개변수로 Model을 적용했습니다.
model.addAttribute를 사용하여 dto값을 전달합니다.
jsp페이지에서는 user라는 변수명으로 사용할 수 있습니다.

userInfo페이지 작성 내용입니다.

회원 아이디를 누르면 해당 페이지가 표시되며 사용자의 정보가 출력됩니다.
여기서 수정을 누르면 번호, 아이디, 비밀번호 값이 url 파라미터로 전달됩니다.
(해당 방식은 데이터가 노출될 수 있어서 중요한 정보는 body로 전달되는 것으로 알고 있습니다.
post방식을 사용해야 하지만 파라미터 테스트를 위해..)
수정을 누르면 modify로 이동되니 컨트롤러에 추가하도록 하겠습니다.

마찬가지로 httpservletrequest를 매개변수로 받고 데이터를 잘 받아오는지 테스트합니다.

웹에서 수정하기를 누르면 콘솔에 출력이 되는 걸 확인할 수 있습니다.

modifyForm.jsp파일을 만들고 해당 내용으로 작성합니다.
데이터를 받아와서 value값으로 text필드에 채워 넣고
submit을 누르면 modifyChk 경로로 이동되면서 input태그들의 정보가 넘어갑니다.
modifyChk로 요청이 되니 컨트롤러에서 경로를 추가합니다.

이번엔 dto값으로 받아보겠습니다.
(httpservletrequest 또는 @requestparam 으로도 받을 수 있습니다.)

웹에서 수정 버튼을 누르면

역시나 아이디가 출력되는 걸 확인할 수 있습니다.
이제 수정된 데이터를 서비스로 넘기고 서비스에서는 mapper로 연결해서 데이터를 업데이트하겠습니다.

컨트롤러에서 해당 내용으로 modifyChk를 수정합니다.
@GetMapping("modifyChk")
public void modifyChk(LoginDTO dto, HttpServletResponse res) throws IOException {
Writer out = res.getWriter();
res.setContentType("text/html; charset=utf-8");
int result = ls.modifyUser(dto);
System.out.println("result : " + result);
if (result == 1) {
out.write("<script>alert('수정이 완료되었습니다.'); location.href='allList'</script>");
} else {
out.write("<script>alert('문제가 발생하였습니다'); location.href=history.back()</script>");
}
}
반환될 때 새로운 페이지를 띄워주지 않고 안내 메시지를 보여준 후 결과에 따라 다른 페이지로 이동할 것입니다.
그러기 위해서 Writer클래스를 사용했고 res를 매개변수로 받아 사용자에게 보낼 준비를 합니다.
modifyUser에 dto값을 전달하여 업데이트하고 업데이트가 성공했을 경우
수정이 완료되었습니다. 라는 안내창과 함께 전체 리스트 페이지로 돌아갑니다.
실패했을 경우 이전 페이지로 돌아가게 됩니다.


service 인터페이스와 클래스파일입니다.
mapper로 바로 넘겨줍니다.


xml에서는 id를 기준으로 데이터를 찾고 그 데이터에서 num값과 pwd값을 수정합니다.
결과는 0 또는 1로 구분될 것이며 0일 경우 실패, 1이면 성공입니다.

웹에서 내용을 수정 후 수정 버튼을 클릭하면

해당 안내창이 표시되고 전체 리스트로 돌아가게 됩니다.
수정과 삭제를 모두 작성하려 했는데 수정만 작성이 됐네요
다음글은 삭제하는 방법을 간단히 작성하겠습니다.
'개발' 카테고리의 다른 글
[스프링] Websocket 사용하여 1:1 채팅 구현하기 (1) - 프로젝트 생성 (0) | 2024.05.28 |
---|---|
[스프링] Spring(STS3)에서 DB연동하기 (6)-DB 데이터 삭제 (1) | 2024.05.28 |
[스프링] Spring(STS3)에서 DB연동하기 (4)-DB에 데이터 추가하기 (0) | 2024.05.27 |
[스프링] Spring(STS3)에서 DB연동하기 (3)-실제 DB데이터 가져오기 (0) | 2024.05.27 |
[스프링] Spring(STS3)에서 DB연동하기 (2)-라이브러리설치 및 설정 (0) | 2024.05.27 |