[스프링] Spring(STS3)에서 DB연동하기 (4)-DB에 데이터 추가하기
https://nameguhyeon.tistory.com/8
[스프링] Spring(STS3)에서 DB연동하기 (3)-실제 DB데이터 가져오기
우선 간단하게 jsp페이지를 작성해봅니다. 이제 index.jsp가 컨트롤러에의해 요청되면 h1태그안의 내용이 web브라우저 화면에 출력이 될 것입니다. 컨트롤러로 이동해서 코드를 작성합니다.
nameguhyeon.tistory.com
해당 글에 이어서 작성되는 내용입니다.
지난 글에 이어 이번에는 DB에 데이터를 추가하는 방법을 설명하고자 합니다.
allList.jsp 파일에 a태그를 만들어 계정 추가로 연결되도록 작성합니다.
하단에 <a href="addUser">사용자 추가</a>
를 추가했습니다.
addUser에 대한 요청을 받을 수 있도록 컨트롤러에 코드를 추가합니다.
LoginController 파일에 해당 내용을 추가합니다.
addUser요청을 받아주고 사용자에게는 addUserForm페이지를 반환합니다.
addUserForm.jsp 가 없으니 생성합니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="addUserProcess" method="post">
번호 : <input type="text" name="num" placeholder="번호 입력"><br>
아이디 : <input type="text" name="id" placeholder="아이디 입력"><br>
비밀번호 : <input type="text" name="pwd" placeholder="비밀번호 입력"><br>
<input type="submit" value="추가">
<a href="allList">리스트</a>
</form>
</body>
</html>
해당 내용을 추가합니다.
서버를 다시 시작하고 웹에서 확인하면 조잡하지만 위와 같은 구성으로 출력됩니다.
각 text필드의 내용은 form태그 안에 있기 때문에
추가 버튼을 누르면 addUserProcess경로로 요청되며 전달되는 데이터 바디에 포함되어 넘어갑니다.
리스트를 클릭하면 allList페이지로 이동됩니다.
post형식으로 넘어간 파라미터는 @RequestParam으로 매핑할 수 있습니다.
각 파라미터의 이름은 form태그 내부에 있는 name과 일치해야하며 타입도 일치해야합니다.
제대로 받아오는지 확인을 위해 println으로 출력을 해봅니다.
입력 후 추가 클릭
웹페이지 자체는 에러가 발생하지만
sts3의 콘솔을 확인하면 정보가 표시되는것을 확인할 수 있습니다.
파라미터를 받는 방식이 @requestParam 말고 다른방법도 있습니다.
파라미터를 DTO값에 바로 대입을 해서 받을 수 있습니다.
조건은 jsp 파일의 form 태그 내부의 input 필드 의 name값이 dto의 객체값과 동일해야합니다.
결과는 마찬가지로 동일하게 출력됩니다.
저는 dto방식으로 사용하도록 하겠습니다.
불러온 데이터를 service로 넘기고 다시 service 에서 mapper로 넘겨주면 됩니다.
최종적으로 mapper.xml에서 insert 쿼리문을 작성하여 데이터를 db에 저장하면 됩니다.
결과값은 성공(1)/실패(0)로 구분됩니다.
따라서 반환되는 데이터는 int형식으로 받아줍니다.
Service 인터페이스에 메서드를 추가합니다.
ServiceImpl에 해당 메서드를 오버라이드 합니다.
mapper.addUser에서 실행된 결과값을 반환합니다.
mapper에 addUser메서드를 생성하여 mybatis에서 실행될 수 있도록 합니다.
mapper.xml에 해당 내용을 추가하여 실제로 db에 sql쿼리문을 전달합니다.
저장 후 서버를 다시 시작하고 웹에서 데이터를 적어 추가를 클릭합니다.
웹 페이지는 에러가 발생하지만 자바 콘솔에서는 정상적으로 출력됩니다.
num값이 1로 변한것을 확인할 수 있습니다.
url에 allList페이지를 다시 요청하면 데이터가 추가된 것을 확인할 수 있습니다.
지금은 데이터를 추가하면 에러가 발생하니까 컨트롤러에서 코드 수정을 하겠습니다.
메서드의 반환타입은 String으로 변경하고
반환값은 "redirect:allList"로 변경합니다.
이렇게 되면 위의 코드가 처리되고 allList페이지를 요청하여 해당 페이지로 이동하게됩니다.
addUserProcess에서 직접 login폴더의 allList.jsp파일을 열어주는게 아닌
url로 요청하는 것 처럼 컨트롤러의 allList를 찾아가서 다시 처리과정을 거칩니다.
이처럼 DB에 데이터 추가하는 방법을 적어 봤습니다.