1차 프로젝트 스타트 ( 회원가입, 로그인, 게시판 )
스프링MVC, JDBC 템플릿 ( 추후 시간되면 마이바티스로 변경 예정 ), 메이븐,
1. index.jsp ( 메인 )
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="u" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html>
<html>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Jua&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/css.css">
<title>회원제 게시판 예제</title>
</head>
<body>
<%--
<c:if test="${! empty authUser}">
${authUser.name}님, 안녕하세요.
<a href="logout.do">[로그아웃하기]</a>
<a href="changePwd.do">[암호변경하기]</a>
</c:if>
<c:if test="${empty authUser}">
<a href="join.do">[회원가입하기]</a>
<a href="login.do">[로그인하기]</a>
</c:if>
--%>
<u:isLogin>
<div class="login-box">
<h2>${authUser.name}님, 안녕하세요.</h2>
<form>
<div class="buttons">
<a href="logout.do">
<span></span>
<span></span>
<span></span>
<span></span>
로그아웃
</a>
<a href="changePwd.do">
<span></span>
<span></span>
<span></span>
<span></span>
암호변경
</a>
<a href="article/list.do">
<span></span>
<span></span>
<span></span>
<span></span>
게시판
</a>
</div>
</div>
</form>
</div>
</u:isLogin>
<u:notLogin>
<div class="login-box">
<h2>Main</h2>
<form>
<div class="buttons">
<a href="join.do">
<span></span>
<span></span>
<span></span>
<span></span>
회원가입
</a>
<a href="login.do">
<span></span>
<span></span>
<span></span>
<span></span>
로그인하기
</a>
</div>
</form>
</div>
</u:notLogin>
<br/>
</body>
</html>
처음 notLogin tag 부분 실행 ( 회원가입, 로그인 )
로그인 완료되면 isLogin tag 부분 실행 로그인한 user 이름 출력, 로그아웃, 암호변경, 게시판이동
밑에는 tags 폴더 파일들
isLogin.tag
<%@ tag body-content="scriptless" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:if test="${not empty sessionScope.authUser}">
<jsp:doBody />
</c:if>
notLogin.tag
<%@ tag body-content="scriptless" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:if test="${empty sessionScope.authUser}">
<jsp:doBody />
</c:if>
pre.tag
<%@ tag body-content="empty" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ attribute name="value" type="java.lang.String" required="true"%>
<%
value = value.replace("&", "&");
value = value.replace("<", "<");
value = value.replace(" ", " ");
value = value.replace("\n", "\n<br>");
%>
<%= value %>
2. join.jsp ( 회원가입)
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>가입</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Jua&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/css.css">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="js/js.js"></script>
</head>
<body>
<div class="login-box">
<form action="join.do" method="post">
<div class="user-box">
<p>
<label>아이디</label><br/>
<input type="text" name="id" value="${param.id}" id="id" placeholder="아이디">
<input type="button" id="checkId" value="중복검사" class="buttonC">
<div id="result_checkId" style="font-size:12px;"></div>
</p>
</div>
<div class="user-box">
<p>
<label>이름</label><br/><input type="text" name="name" value="${param.name}">
<c:if test="${errors.name}">이름을 입력하세요.</c:if>
</p>
</div>
<div class="user-box">
<p>
<label>패스워드</label><br/><input type="password" name="password" id="password">
<c:if test="${errors.password}">암호를 입력하세요.</c:if>
</p>
</div>
<div class="user-box">
<p>
<label>패스워드 확인</label><br/><input type="password" name="confirmPassword">
<c:if test="${errors.confirmPassword}">확인을 입력하세요.</c:if>
<c:if test="${errors.notMatch}"><h4>암호가 일치하지 않습니다.</h4></c:if>
<c:if test="${errors.duplicateId}"><h4>이미 사용중인 아이디입니다.</h4></c:if>
</p>
</div>
<div style="display: flex; justify-content: center;">
<button class="buttonS">가입
<span></span>
<span></span>
<span></span>
<span></span>
</button>
</div>
</form>
</div>
</body>
</html>
회원가입 Ajax ( 빈칸 확인, 비밀번호 일치 여부, 중복 검사 후 가입 가능 기능 등 )
중요한 건 Ajax로 DB에서 memberid값을 count(*)로 해서 값이 1이면 중복, 값이 0이면 사용 가능
/*가입완료*/
$(document).ready(function() {
$(".buttonS").click(function(event) {
event.preventDefault(); // 기본 동작 중단
// 입력값 확인
var id = $("input[name='id']").val();
var name = $("input[name='name']").val();
var password = $("input[name='password']").val();
var confirmPassword = $("input[name='confirmPassword']").val();
if (id === "" || name === "" || password === "" || confirmPassword === "") {
alert("빈 칸을 모두 입력하세요.");
return;
}
if (password !== confirmPassword) {
alert("비밀번호가 일치하지 않습니다.");
return;
}
// 중복 검사 결과 확인
var result_checkId = $("#result_checkId").text();
if (result_checkId !== "사용 가능한 아이디입니다.") {
alert("아이디 중복 검사 후 가입 버튼을 눌러주세요.");
return;
}
// 회원가입 데이터를 서버로 전송
$.ajax({
type: "POST",
url: "join.do",
data: $("form").serialize(),
success: function(response) {
// 회원가입 완료 후 알림 표시
alert("회원가입이 완료되었습니다. 로그인 페이지로 이동합니다.");
// 로그인 페이지로 이동
window.location.href = "login.do"; // 로그인 페이지 경로로 수정하세요.
},
error: function(xhr, status, error) {
alert("회원가입 중 오류가 발생했습니다. 다시 시도해주세요.");
}
});
});
/*아이디 중복 검사*/
$("#checkId").click(function() {
let id = $("#id").val();
if (id === "") {
alert("아이디를 입력해주세요.");
return;
}
$.ajax({
type: 'post',
url: "checkId.do", // 컨트롤러로 가는 mapping 입력
data: { "id": id },
dataType: "json",
success: function(data) {
if (data.status === "N") {
result = "사용 가능한 아이디입니다.";
$("#result_checkId").html(result).css("color", "green");
$("#password").trigger("focus");
} else {
result = "이미 사용중인 아이디입니다.";
$("#result_checkId").html(result).css("color", "red");
$("#id").val("").trigger("focus");
}
},
error: function(error) {
alert("error: " + error);
}
});
});
});
'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글
2023-08-18 64일차 (0) | 2023.08.20 |
---|---|
2023-08-17 63일차 (0) | 2023.08.17 |
2023-08-11 61일차 (0) | 2023.08.11 |
2023-08-10 60일차 (0) | 2023.08.10 |
2023-08-09 59일차 (0) | 2023.08.09 |