📅2024. 01. 25 34일차
아이디 중복 체크
DB에 저장되 있는 loginId을 가져와서 input하는 loginId와 같은지 다른지 알아야 하지 않을까????
회원가입 아이디 입력창에서 아이디 입력하고 중복체크를 버튼식으로 만들고 버튼을 누르면 DB에 저장된 loginId을 가져와 비교해서 알려주게 만들면 되나???
어떻게 해야함????;;;;
버튼을 누르면 중복아이디 체크할 수 있는 jsp 파일로 넘어가야 할 것 같은데?? 지금 join.jsp 파일의 form action경로는 dojoin인데?? 경로를 두 개로 가질 수 있을 까???
insert 될 때 그 아이디가 DB에 있는지 한 번 찾는 과정이 필요할 것 같은데 select 쿼리문 하나 추가 하면 될 것 같음
SELET count 해서 아이디가 있으면 1, 없으면 0으로 불린값을 가져온다. 중복 아이디가 없어 참이면 회원가입이되고 중복 아이디이면 알림창이 뜨게하고 다시 회원가입 창으로 돌린다.
SecSql sql = SecSql.from("SELECT COUNT(*) AS cnt");
sql.append("FROM `member`");
sql.append("WHERE loginId = ?;", loginId);
boolean isJoinableLoginId = DBUtil.selectRowIntValue(conn, sql) == 0;
if (isJoinableLoginId == false) {
response.getWriter().append(String.format(
"<script>alert('%s는 이미 사용중입니다'); location.replace('../member/join');</script>", loginId));
return;
}
일단 비슷한 memberJoin을 가져오자 로그인을 하려면 로그인 form을 만들어야겠네??? 이거 그냥 회원가입 만들 때 만든거 가져와서 수정하자 그리고???? 로그인 하려면 일단 DB에 저장되있는 아이디를 쳤는지 알아야하는데??? 중복 체크 할 때 쓴 걸 가져와서 없는 아이디일 경우 팝업창 뜨게 하고 다시 로그인 창으로 되돌리면 될 것 같은데??? 그럼 만약 있는 아이디이면?? 비밀번호도 체크해야하지 않을까? 그럼 DB에서 로그인 하려는 아이디의 1행 짜리의 정보를 가져오고 입력한 비밀번호랑 비교하면 될 것 같음
String loginId = request.getParameter("loginId");
String loginPw = request.getParameter("loginPw");
String name = request.getParameter("name");
SecSql sql = SecSql.from("SELECT COUNT(*) AS cnt");
sql.append("FROM `member`");
sql.append("WHERE loginId = ?;", loginId);
boolean isJoinableLoginId = DBUtil.selectRowIntValue(conn, sql) == 0;
if (isJoinableLoginId == true) {
response.getWriter().append(String.format(
"<script>alert('%s는 없는 아이디입니다.'); location.replace('../member/login');</script>", loginId));
return;
}
sql = SecSql.from("SELECT *");
sql.append("FROM `member`");
sql.append("WHERE loginId = ?;", loginId);
Map<String, Object> memberRow = DBUtil.selectRow(conn, sql);
if (loginPw.equals(memberRow.get("loginPw")) == false) {
response.getWriter().append(String.format(
"<script>alert('%s의 비밀번호가 틀립니다.'); location.replace('../member/login');</script>", loginId));
return;
}else {
response.getWriter().append(String.format(
"<script>alert('%s님, 로그인 되었습니다.'); location.replace('../article/list');</script>", loginId));
}
@WebServlet("/member/login")
public class MemberLoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/jsp/member/login.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
<%
Map<String, Object> articleRow = (Map<String, Object>) request.getAttribute("memberRow");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<div>
<a href="../home/main">메인으로 돌아가기</a>
</div>
<!-- <a href="https://www.naver.com" -->
<!-- onclick="if(confirm('진짜 이동 할거임????') == false) return false;">naver</a> -->
<h2>로그인</h2>
<script type="text/javascript">
var LoginForm__submitDone = false;
function LoginForm__submit(form) {
if (LoginForm__submitDone) {
alert('이미 처리중입니다');
return;
}
// form.loginId.value = form.loginId.value.trim();
var loginId = form.loginId.value.trim();
var loginPw = form.loginPw.value.trim();
console.log('form.loginId.value : ' + loginId);
console.log('form.loginPw.value : ' + loginPw);
if (loginId.length == 0) {
alert('아이디를 입력해주세요');
form.loginId.focus();
return;
}
if (loginPw.length == 0) {
alert('비밀번호를 입력해주세요');
form.loginPw.focus();
return;
}
JoinForm__submitDone = true;
form.submit();
}
</script>
<form method="POST" action="doLogin"
onsubmit="LoginForm__submit(this); return false;">
<div>
로그인 아이디 : <input autocomplete="off" type="text"
placeholder="아이디를 입력해주세요" name="loginId" />
</div>
<div>
로그인 비밀번호 : <input autocomplete="off" type="text"
placeholder="비밀번호를 입력해주세요" name="loginPw" />
</div>
<button type="submit">로그인</button>
</form>
<div>
<a style="color: green" href="../article/list">리스트로 돌아가기</a>
</div>
</body>
</html>
try {
Class.forName(Config.getDbDriverClassName());
} catch (ClassNotFoundException e) {
System.out.println("클래스가 없습니다.");
e.printStackTrace();
}
Connection conn = null;
try {
conn = DriverManager.getConnection(Config.getDbUrl(), Config.getDbUser(), Config.getDbPw());
HttpSession session = request.getSession();
session.removeAttribute("loginedMemberId");
session.removeAttribute("loginedMemberLoginId");
session.removeAttribute("loginedMember");
response.getWriter().append(
String.format("<script>alert('로그아웃 되었습니다.'); location.replace('../article/list');</script>"));