
์ ๋ฒ์ ํ์๊ฐ์ ์์ `join.jsp` ๊น์ง ๋ง๋ค์๋ค.
์ค๋์ userDAO ํด๋์ค์ ํ์๊ฐ์ ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ํ๋ ์ถ๊ฐํด ์ค๊ฒ์ด๋ค.
DAO ํด๋์ค๋ ์ค์ ๋ก DB์ ์ ๊ทผํด์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์ญํ ์ ํ๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ ธ์์ View ์ฒ๋ฆฌํ๋ `join Action.jsp` ๊น์ง ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค.

๋จผ์ userDAO ํด๋์ค๋ก ๊ฐ๋ค.
login ๋ฉ์๋ ์๋์ join ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.
// ํ์๊ฐ์
์ฒ๋ฆฌ ๋ก์ง
public int join(User user) {
String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, ?)";
try {
psmt = conn.prepareStatement(SQL);
psmt.setString(1, user.getUserID());
psmt.setString(2, user.getUserPassword());
psmt.setString(3, user.getUserName());
psmt.setString(4, user.getUserGender());
psmt.setString(5, user.getUserEmail());
return psmt.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}
return -1; // DB์ค๋ฅ
// INSERT ์ฟผ๋ฆฌ ์คํํ๋ฉด 0 ์ด์ ๋ฐํํ๋ฏ๋ก -1์ด ์๋ ๊ฒฝ์ฐ์ ์ฑ๊ณต์ ์ผ๋ก ํ์๊ฐ์
๋ ๊ฒ!
}

์ด์ ํ์๊ฐ์ ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ ๋ณด์ฌ์ค jspํ์ด์ง `joinAction.jsp`๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๊ธฐ์กด์ ๋ง๋ `loginAction.jsp` ํ์ผ์ ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ด๋ฆ์ `joinAction.jsp`๋ก ๊ณ ์ณ์ฃผ์๋ค.
์๋จ ํ๊ทธ๋ฆฝ์ `userID`์ `userPassword`๋ง ์๋ฐ๋น ํ๋กํผํฐ๋ก ์ค์ ์ด ๋์ด ์๋๋ฐ
`userName`, `userGender`, `userEmail`๋ ์ถ๊ฐํด ์ฃผ๊ธฐ

์คํฌ๋ฆฝํธ๋ฆฝ์ ์ด๊ณ ๋จผ์ null ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํด์ค if๋ฌธ์ ํ๋ ์์ฑํ๋ค.
๊ฐ ๋ณ์์ ํ๋๋ผ๋ ๊ฐ์ด ์ ๋ค์ด์ค๋ฉด ํ์๊ฐ์ ์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
`null` ๊ฐ์ด ๋ด๊ธด ๋ณ์๊ฐ ์ ๋ค๋ฉด '์ ๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค'๋ผ๋ ์๋ฆผ์ฐฝ์ ๋์ฐ๊ณ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ์คํ๋ ์ ์๋๋ก ํ๋ค.
ํ์๊ฐ์ ์ ํ์ํ ๋ชจ๋ ๊ฐ์ด DB๋ก ์ ๋ค์ด๊ฐ๋ค๋ฉด, DB์ `์ฝ์ ๋ ํ(row)์ ๊ฐ์`๊ฐ ๋ฐํ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก result๊ฐ 1์ด์์ด๋ฉด DB์ ๋ฐ์ดํธ๊ฐ ์ ๋๊ฒ์ด๋ค.
ํ์ง๋ง join ๋ฉ์๋๊ฐ -1์ ๋ฐํํ๋ค๋ฉด ์ค๋ฅ๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด ์ฃผ์ด์ผ ํ๋ค. ์ผ๋จ, DB์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ์ด ์ ๋๊ณ ์๋ค๋ ๊ฒ์ ์์ด๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ์ด๋ค. `userID` ๊ฐ์ ๊ธฐ๋ณธ ํค๋ก ์ง์ ๋์ด ์๊ธฐ ๋๋ฌธ์ user ํ ์ด๋ธ์์ ์ ์ผํ ๊ฐ์ด ๋์ด์ผ ํ๋ค. ๋ฐ๋ผ์ `result == -1`์ด๋ฉด '์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์ ๋๋ค'๋ผ๋ ์๋ ์ฐฝ์ ๋์์ค๋ค.
ํ์๊ฐ์ ์ด ์ฑ๊ณตํ๋ฉด `main.jsp` ํ์ด์ง๋ก ์ด๋๋ ์ ์๊ฒ ํด์ค๋ค.
<%
// ์๋ฌด๊ฒ๋ ์
๋ ฅ ์ํ๊ณ ํ์๊ฐ์
๋ฒํผ ๋๋ฅด๋ฉด ๊ฐ ๋ณ์์ null ๊ฐ ๋ค์ด๊ฐ
// null์ฒ๋ฆฌ
if (user.getUserID() == null || user.getUserPassword() == null ||
user.getUserName() == null || user.getUserGender() == null ||
user.getUserEmail() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.')");
script.println("history.back()");
script.println("</script>");
} else {
UserDAO userDAO = new UserDAO();
int result = userDAO.join(user);
if (result == -1) { // DB์ค๋ฅ ๋ฐ์(ํด๋น ์์ด๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ)
// ์ ์ ์์ด๋๋ PK(๊ธฐ๋ณธํค)๋ผ์ ํ
์ด๋ธ์ ๋จ ํ๋๋ง ์กด์ฌํด์ผ ํจ
// ๋์ผํ ์์ด๋๊ฐ ์
๋ ฅ๋๋ฉด -1 ๋ฐํ
// ๋ค๋ก๊ฐ๊ธฐ
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์
๋๋ค.')");
script.println("history.back()");
script.println("</script>");
}
else { // ํ์๊ฐ์
์ฑ๊ณต -> ๋ฉ์ธ ๋ฉ์ด์ง(main.jsp)๋ก ์ด๋
// result ๊ฐ -1 ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ๋ฑ๋ก์ด ๋ ๊ฒ!
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
}
%>
์ด์ `join.jsp`ํ์ด์ง์์ ํฐ์บฃ ์๋ฒ๋ฅผ ์คํํด์ ํ ์คํธ ํด ๋ณด์
`Ctrl` + `F11`๋๋ฌ ์ฃผ์.
ํ์๊ฐ์ ํ๋ฉด์์ ์์์ ๋ชจ๋ ์ ๋ ฅํด ์ฃผ๊ณ ํ์๊ฐ์ ๋ฒํผ์ ํด๋ฆญ!

๋ถ๋ช ํผ์ ๋ค ์ฑ์ ๋๋ฐ๋ `์ ๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค. `๋ผ๋ alert์ฐฝ์ด ๋์จ๋ค.
๋ญ๊ฐ ์คํ๊ฐ ์์ด์ ๋ฐ์ดํฐ๊ฐ ์๋์ด๊ฐ ๋ชจ์์ด๋ค.
๋ค์ `join.jsp`์ `<form>` ํ๊ทธ๋ `<input>` ํ๊ทธ์์ ์คํ๋ ์์ฑ๊ฐ์ด ์๋ชป๋ ๋ถ๋ถ์ด ์๋์ง ํ์ธํด ์ฃผ์.

inputํ๊ทธ name๊ฐ์ ์คํ๊ฐ ์์๋ค. userEmail ์ธ๋ฐ l์ ๋ ๋ฒ ์จ ์ฃผ์ด์ ์ด๋ฉ์ผ ๊ฐ์ด ์ ๋์ด ๊ฐ๊ณ ์์๋ค.


์์ ํด ์ฃผ๊ณ , ์ฌ์๋ ํ์.
์? ํ์๊ฐ์ ์ ์ฑ๊ณตํ๋๋ฐ ์๊พธ `joinAction.jsp` ํ์ด์ง๋ก ๋์ด๊ฐ๋ค.
locaion.href ์ค์ ์ด ์๋ชป๋์ด ์๋ ๊ฒ ๊ฐ๋ค.

ํ์ธ ํด ๋ณด๋ ๋ซ๋ ๋ถ๋ถ์ ' ์์ ๋ฐ์ดํ ํ๋๊ฐ ๋น ์ ธ ์์๋ค.
ํด๋น ๋ถ๋ถ์ ์์ ํด ์ฃผ์๋ค.


๋ค์ ํ์๊ฐ์ ํ๋ฉด์ผ๋ก ๋์์์ ํ ์คํธ!

์ด๋ ๊ฒ ๊ธฐ์กด ํ ์ด๋ธ์ dain3 ์ ์ ์ ํ์ ์ ๋ณด๊ฐ ์ ๋ค ์ด์จ ๊ฒ์ ํ์ธ ํด ๋ณผ ์ ์๋ค.

๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์ ์ ์ฑ๊ณตํ๋ฉด `main.jsp` ํ์ด์ง๋ก ์ด๋์ด ๋๋ ๊ฑธ URL ์ ํตํด ํ์ธํ ์ ์๋ค.
์์ง `main.jsp`๋ฅผ ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ HTTP ์๋ต์ฝ๋ 404 ์๋ฌ๊ฐ ๋จ๋ ๊ฒ์ด ์ ์์ด๋ค!!

์ค๋์ ์ฌ๊ธฐ๊น์ง ๋ง๋ฌด๋ฆฌ
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Spring&JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

์ ๋ฒ์ ํ์๊ฐ์
์์ join.jsp
๊น์ง ๋ง๋ค์๋ค.
์ค๋์ userDAO ํด๋์ค์ ํ์๊ฐ์ ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ํ๋ ์ถ๊ฐํด ์ค๊ฒ์ด๋ค.
DAO ํด๋์ค๋ ์ค์ ๋ก DB์ ์ ๊ทผํด์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์ญํ ์ ํ๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ ธ์์ View ์ฒ๋ฆฌํ๋ join Action.jsp
๊น์ง ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค.

๋จผ์ userDAO ํด๋์ค๋ก ๊ฐ๋ค.
login ๋ฉ์๋ ์๋์ join ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.
// ํ์๊ฐ์
์ฒ๋ฆฌ ๋ก์ง public int join(User user) { String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, ?)"; try { psmt = conn.prepareStatement(SQL); psmt.setString(1, user.getUserID()); psmt.setString(2, user.getUserPassword()); psmt.setString(3, user.getUserName()); psmt.setString(4, user.getUserGender()); psmt.setString(5, user.getUserEmail()); return psmt.executeUpdate(); } catch(Exception e) { e.printStackTrace(); } return -1; // DB์ค๋ฅ // INSERT ์ฟผ๋ฆฌ ์คํํ๋ฉด 0 ์ด์ ๋ฐํํ๋ฏ๋ก -1์ด ์๋ ๊ฒฝ์ฐ์ ์ฑ๊ณต์ ์ผ๋ก ํ์๊ฐ์
๋ ๊ฒ! }

์ด์ ํ์๊ฐ์
๋ก์ง์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ ๋ณด์ฌ์ค jspํ์ด์ง joinAction.jsp
๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๊ธฐ์กด์ ๋ง๋ loginAction.jsp
ํ์ผ์ ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ด๋ฆ์ joinAction.jsp
๋ก ๊ณ ์ณ์ฃผ์๋ค.
์๋จ ํ๊ทธ๋ฆฝ์ userID
์ userPassword
๋ง ์๋ฐ๋น ํ๋กํผํฐ๋ก ์ค์ ์ด ๋์ด ์๋๋ฐ
userName
, userGender
, userEmail
๋ ์ถ๊ฐํด ์ฃผ๊ธฐ

์คํฌ๋ฆฝํธ๋ฆฝ์ ์ด๊ณ ๋จผ์ null ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํด์ค if๋ฌธ์ ํ๋ ์์ฑํ๋ค.
๊ฐ ๋ณ์์ ํ๋๋ผ๋ ๊ฐ์ด ์ ๋ค์ด์ค๋ฉด ํ์๊ฐ์ ์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
null
๊ฐ์ด ๋ด๊ธด ๋ณ์๊ฐ ์ ๋ค๋ฉด '์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค'๋ผ๋ ์๋ฆผ์ฐฝ์ ๋์ฐ๊ณ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ์คํ๋ ์ ์๋๋ก ํ๋ค.
ํ์๊ฐ์
์ ํ์ํ ๋ชจ๋ ๊ฐ์ด DB๋ก ์ ๋ค์ด๊ฐ๋ค๋ฉด, DB์ ์ฝ์
๋ ํ(row)์ ๊ฐ์
๊ฐ ๋ฐํ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก result๊ฐ 1์ด์์ด๋ฉด DB์
๋ฐ์ดํธ๊ฐ ์ ๋๊ฒ์ด๋ค.
ํ์ง๋ง join ๋ฉ์๋๊ฐ -1์ ๋ฐํํ๋ค๋ฉด ์ค๋ฅ๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด ์ฃผ์ด์ผ ํ๋ค. ์ผ๋จ, DB์์ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ์ด ์ ๋๊ณ ์๋ค๋ ๊ฒ์ ์์ด๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ์ด๋ค. userID
๊ฐ์ ๊ธฐ๋ณธ ํค๋ก ์ง์ ๋์ด ์๊ธฐ ๋๋ฌธ์ user ํ
์ด๋ธ์์ ์ ์ผํ ๊ฐ์ด ๋์ด์ผ ํ๋ค. ๋ฐ๋ผ์ result == -1
์ด๋ฉด '์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์
๋๋ค'๋ผ๋ ์๋ ์ฐฝ์ ๋์์ค๋ค.
ํ์๊ฐ์
์ด ์ฑ๊ณตํ๋ฉด main.jsp
ํ์ด์ง๋ก ์ด๋๋ ์ ์๊ฒ ํด์ค๋ค.
<% // ์๋ฌด๊ฒ๋ ์
๋ ฅ ์ํ๊ณ ํ์๊ฐ์
๋ฒํผ ๋๋ฅด๋ฉด ๊ฐ ๋ณ์์ null ๊ฐ ๋ค์ด๊ฐ // null์ฒ๋ฆฌ if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null || user.getUserGender() == null || user.getUserEmail() == null) { PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.')"); script.println("history.back()"); script.println("</script>"); } else { UserDAO userDAO = new UserDAO(); int result = userDAO.join(user); if (result == -1) { // DB์ค๋ฅ ๋ฐ์(ํด๋น ์์ด๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ) // ์ ์ ์์ด๋๋ PK(๊ธฐ๋ณธํค)๋ผ์ ํ
์ด๋ธ์ ๋จ ํ๋๋ง ์กด์ฌํด์ผ ํจ // ๋์ผํ ์์ด๋๊ฐ ์
๋ ฅ๋๋ฉด -1 ๋ฐํ // ๋ค๋ก๊ฐ๊ธฐ PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์
๋๋ค.')"); script.println("history.back()"); script.println("</script>"); } else { // ํ์๊ฐ์
์ฑ๊ณต -> ๋ฉ์ธ ๋ฉ์ด์ง(main.jsp)๋ก ์ด๋ // result ๊ฐ -1 ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ๋ฑ๋ก์ด ๋ ๊ฒ! PrintWriter script = response.getWriter(); script.println("<script>"); script.println("location.href = 'main.jsp'"); script.println("</script>"); } } %>
์ด์ join.jsp
ํ์ด์ง์์ ํฐ์บฃ ์๋ฒ๋ฅผ ์คํํด์ ํ
์คํธ ํด ๋ณด์
Ctrl
+ F11
๋๋ฌ ์ฃผ์.
ํ์๊ฐ์ ํ๋ฉด์์ ์์์ ๋ชจ๋ ์ ๋ ฅํด ์ฃผ๊ณ ํ์๊ฐ์ ๋ฒํผ์ ํด๋ฆญ!

๋ถ๋ช
ํผ์ ๋ค ์ฑ์ ๋๋ฐ๋ ์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.
๋ผ๋ alert์ฐฝ์ด ๋์จ๋ค.
๋ญ๊ฐ ์คํ๊ฐ ์์ด์ ๋ฐ์ดํฐ๊ฐ ์๋์ด๊ฐ ๋ชจ์์ด๋ค.
๋ค์ join.jsp
์ <form>
ํ๊ทธ๋ <input>
ํ๊ทธ์์ ์คํ๋ ์์ฑ๊ฐ์ด ์๋ชป๋ ๋ถ๋ถ์ด ์๋์ง ํ์ธํด ์ฃผ์.

inputํ๊ทธ name๊ฐ์ ์คํ๊ฐ ์์๋ค. userEmail ์ธ๋ฐ l์ ๋ ๋ฒ ์จ ์ฃผ์ด์ ์ด๋ฉ์ผ ๊ฐ์ด ์ ๋์ด ๊ฐ๊ณ ์์๋ค.


์์ ํด ์ฃผ๊ณ , ์ฌ์๋ ํ์.
์? ํ์๊ฐ์
์ ์ฑ๊ณตํ๋๋ฐ ์๊พธ joinAction.jsp
ํ์ด์ง๋ก ๋์ด๊ฐ๋ค.
locaion.href ์ค์ ์ด ์๋ชป๋์ด ์๋ ๊ฒ ๊ฐ๋ค.

ํ์ธ ํด ๋ณด๋ ๋ซ๋ ๋ถ๋ถ์ ' ์์ ๋ฐ์ดํ ํ๋๊ฐ ๋น ์ ธ ์์๋ค.
ํด๋น ๋ถ๋ถ์ ์์ ํด ์ฃผ์๋ค.


๋ค์ ํ์๊ฐ์ ํ๋ฉด์ผ๋ก ๋์์์ ํ ์คํธ!

์ด๋ ๊ฒ ๊ธฐ์กด ํ ์ด๋ธ์ dain3 ์ ์ ์ ํ์ ์ ๋ณด๊ฐ ์ ๋ค ์ด์จ ๊ฒ์ ํ์ธ ํด ๋ณผ ์ ์๋ค.

๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์
์ ์ฑ๊ณตํ๋ฉด main.jsp
ํ์ด์ง๋ก ์ด๋์ด ๋๋ ๊ฑธ URL ์ ํตํด ํ์ธํ ์ ์๋ค.
์์ง main.jsp
๋ฅผ ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ HTTP ์๋ต์ฝ๋ 404 ์๋ฌ๊ฐ ๋จ๋ ๊ฒ์ด ์ ์์ด๋ค!!

์ค๋์ ์ฌ๊ธฐ๊น์ง ๋ง๋ฌด๋ฆฌ