์ ๋ฒ์ ํ์๊ฐ์ ์์ `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 ์๋ฌ๊ฐ ๋จ๋ ๊ฒ์ด ์ ์์ด๋ค!!
์ค๋์ ์ฌ๊ธฐ๊น์ง ๋ง๋ฌด๋ฆฌ