joinForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<script src="checkreg.js"></script>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
</head>
<body>
<div align="center">
<form id="f1" action="joinChk.jsp" method="post">
<table border="1">
<tr>
<th colspan="2" bgcolor="skyblue" align="center" width="600" height="30">회원 기본 정보</th>
</tr>
<tr>
<td width="20%" align="center" bgcolor="#D4F4FA" height="25">아이디 : </td>
<td width="80%"><input type="text" maxlength="12" name="my_id" id="my_id" height="25" onchange="chkId(this.value)"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">비밀번호 : </td>
<td><input type="password" maxlength="12" name="my_pw" id="my_pw" onchange="chkPw(this.value)"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">비밀번호확인 : </td>
<td><input type="password" maxlength="12" id="pwd_check" onchange="chkPwc(this.value)"></td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">메일주소 : </td>
<td><input type="email" id="my_email" name="my_email" onchange="chkEmail(this.value)"> 예) id@domain.com </td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">이름 : </td>
<td><input type="text" id="my_name" name="my_name" onchange="chkName(this.value)"></td>
</tr>
<tr>
<th colspan="2" bgcolor="skyblue" align="center" width="600" height="30" height="25">개인 신상 정보</th>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA">우편번호 : </td>
<td><input type="text" id="postcode" name="postcode" value="우편번호" readonly>
<input type="button" value="우편번호 찾기" onclick="DaumPostcode()"><br>
<input type="text" id="roadAddress" name="roadAddress" value="도로면 주소" readonly>
<input type="text" id="jibunAddress" name="jibunAddress" value="지번주소" readonly><br>
<input type="text" name="detailAddress" value="상세주소">
<input type="text" id="extraAddress" name="extraAddress" value="참고주소" readonly></td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25" height="25">주민등록번호 : </td>
<td><input type="text" id="my_num1" name="my_num1" maxlength="6" size = "15">
- <input type="password" id="my_num2" name="my_num2" maxlength="7" size = "15" onchange="chkNum()">
예)123456-1234567 </td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25" height="25">생일 : </td>
<td><input type="text" id="my_year" name="my_year" size="4" >년
<input type="text" id="my_month" name="my_month" size="2" >월
<input type="text" id="my_day" name="my_day" size="2" >일
</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">관심분야 : </td>
<td>
<input type="checkbox" id="interest" name="interest" value="컴퓨터">컴퓨터
<input type="checkbox" id="interest" name="interest" value="인터넷">인터넷
<input type="checkbox" id="interest" name="interest" value="여행">여행
<input type="checkbox" id="interest" name="interest" value="영화감상">영화감상
<input type="checkbox" id="interest" name="interest" value="음악감상">음악감상
</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA">자기소개</td>
<td><textarea rows="8" cols="60" id="intro" name="intro"></textarea></td>
</tr>
</table>
<br>
<input type="button" value="회원 가입" onclick="chk()">
<input type="reset" value="다시 입력">
</form>
</div>
<embed src="ItGMa.mp3" loop="true" autostart="true" height="100" hidden="true">
<!-- embed=미디어플레이어 loop=반복여부 autostart=자동실행여부 hidden=화면숨김여부 -->
</body>
</html>
JoinBean.java
package test;
public class JoinBean {
private String my_id; // 아이디
private String my_pw; // 비밀번호
private String my_email; // 이메일
private String my_name; // 이름
private int postcode; // 우편 번호
private String roadAddress; // 도로명 주소
private String jibunAddress; // 지번 주소
private String detailAddress; // 상세 주소
private String extraAddress; // 참고 주소
private int my_num1; // 주민번호 앞자리
private int my_num2; // 주민번호 뒷자리
private int my_year; // 생일 : 년
private int my_month; // 생일 : 월
private int my_day; // 생일 : 일
private String[] interest; // 관심항목
private String intro; // 자기소개
// getter & setter
public String getMy_id() {
return my_id;
}
public void setMy_id(String my_id) {
this.my_id = my_id;
}
public String getMy_pw() {
return my_pw;
}
public void setMy_pw(String my_pw) {
this.my_pw = my_pw;
}
public String getMy_email() {
return my_email;
}
public void setMy_email(String my_email) {
this.my_email = my_email;
}
public String getMy_name() {
return my_name;
}
public void setMy_name(String my_name) {
this.my_name = my_name;
}
public int getPostcode() {
return postcode;
}
public void setPostcode(int postcode) {
this.postcode = postcode;
}
public String getRoadAddress() {
return roadAddress;
}
public void setRoadAddress(String roadAddress) {
this.roadAddress = roadAddress;
}
public String getJibunAddress() {
return jibunAddress;
}
public void setJibunAddress(String jibunAddress) {
this.jibunAddress = jibunAddress;
}
public String getDetailAddress() {
return detailAddress;
}
public void setDetailAddress(String detailAddress) {
this.detailAddress = detailAddress;
}
public String getExtraAddress() {
return extraAddress;
}
public void setExtraAddress(String extraAddress) {
this.extraAddress = extraAddress;
}
public int getMy_num1() {
return my_num1;
}
public void setMy_num1(int my_num1) {
this.my_num1 = my_num1;
}
public int getMy_num2() {
return my_num2;
}
public void setMy_num2(int my_num2) {
this.my_num2 = my_num2;
}
public int getMy_year() {
return my_year;
}
public void setMy_year(int my_year) {
this.my_year = my_year;
}
public int getMy_month() {
return my_month;
}
public void setMy_month(int my_month) {
this.my_month = my_month;
}
public int getMy_day() {
return my_day;
}
public void setMy_day(int my_day) {
this.my_day = my_day;
}
public String[] getInterest() {
return interest;
}
public String getInterest(int num) {
return interest[num];
}
public void setInterest(String[] interest) {
this.interest = interest;
}
public void setInterest(int num, String interest) {
this.interest[num] = interest;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
}
joinChk.jsp
<%@page import="test.JoinBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<jsp:useBean id="joinbean" class="test.JoinBean" scope="request"/> <%-- 빈즈 객체 생성 --%>
<jsp:setProperty property="*" name="joinbean"/> <%-- submit으로 넘어온 값을 전부 빈즈에 set --%>
<html>
<head>
<meta charset="UTF-8">
<title>joinChk.jsp</title>
</head>
<body>
<div align="center">
<form>
<table border="1">
<tr>
<th colspan="2" bgcolor="skyblue" align="center" width="600" height="30">회원 기본 정보</th>
</tr>
<tr>
<td width="20%" align="center" bgcolor="#D4F4FA" height="25">아이디 : </td>
<td width="80%"><%=joinbean.getMy_id() %></td> <%-- bean getter로 값 가져와서 출력 --%>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">비밀번호 : </td>
<td><%=joinbean.getMy_pw() %></td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">메일주소 : </td>
<td><%=joinbean.getMy_email() %></td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">이름 : </td>
<td><%=joinbean.getMy_name() %></td>
</tr>
<tr>
<th colspan="2" bgcolor="skyblue" align="center" width="600" height="30" height="25">개인 신상 정보</th>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA">우편번호 : </td>
<td><%=joinbean.getPostcode() %><br>
<%=joinbean.getRoadAddress() %>
<%=joinbean.getJibunAddress() %><br>
<%=joinbean.getDetailAddress() %>
<%=joinbean.getExtraAddress() %></td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25" height="25">주민등록번호 : </td>
<td><%=joinbean.getMy_num1() %> - <%=joinbean.getMy_num2() %> </td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25" height="25">생일 : </td>
<td><%=joinbean.getMy_year() %>년
<%=joinbean.getMy_month() %>월
<%=joinbean.getMy_day() %>일
</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA" height="25">관심분야 : </td>
<td>
<%
for(String str : joinbean.getInterest()){ // 관심분야 배열값으로 for문
out.println(str);
}
%>
</td>
</tr>
<tr>
<td align="center" bgcolor="#D4F4FA">자기소개</td>
<td><%=joinbean.getIntro() %></td>
</tr>
</table>
</form>
</div>
</body>
</html>
checkreg.js
// 주소
function DaumPostcode() {
new daum.Postcode({
oncomplete: function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
// 도로명 주소의 노출 규칙에 따라 주소를 표시한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
var roadAddr = data.roadAddress; // 도로명 주소 변수
var extraRoadAddr = ''; // 참고 항목 변수
// 법정 동명이 있을 경우 추가한다. (법정리는 제외)
// 법정 동의 경우 마지막 문자가 "동/로/가"로 끝난다.
if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
extraRoadAddr += data.bname;
}
// 건물명이 있고, 공동주택일 경우 추가한다.
if(data.buildingName !== '' && data.apartment === 'Y'){
extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
}
// 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
if(extraRoadAddr !== ''){
extraRoadAddr = ' (' + extraRoadAddr + ')';
}
// 우편번호와 주소 정보를 해당 필드에 넣는다.
document.getElementById('postcode').value = data.zonecode; // 우편번호
document.getElementById("roadAddress").value = roadAddr; // 도로명
document.getElementById("jibunAddress").value = data.jibunAddress; // 동 주소
// 참고항목 문자열이 있을 경우 해당 필드에 넣는다.
if(roadAddr !== ''){
document.getElementById("extraAddress").value = extraRoadAddr;
} else {
document.getElementById("extraAddress").value = '';
}
var guideTextBox = document.getElementById("guide");
// 사용자가 '선택 안함'을 클릭한 경우, 예상 주소라는 표시를 해준다.
if(data.autoRoadAddress) {
var expRoadAddr = data.autoRoadAddress + extraRoadAddr;
guideTextBox.innerHTML = '(예상 도로명 주소 : ' + expRoadAddr + ')';
guideTextBox.style.display = 'block';
//////////////예상 지번수////////////////////
} /*else if(data.autoJibunAddress) {
var expJibunAddr = data.autoJibunAddress;
guideTextBox.innerHTML = '(예상 지번 주소 : ' + expJibunAddr + ')';
guideTextBox.style.display = 'block';
} else {
guideTextBox.innerHTML = '';
guideTextBox.style.display = 'none';
}*/
}
}).open();
}
// 정규식
var idPwChk = /^[a-zA-Z0-9]{4,12}$/; // 아이디, 비밀번호 정규식
var emailChk = /^[a-zA-Z0-9]+@([a-zA-Z0-9]{1,10})\.([a-zA-Z]{1,10})+$/; //이메일 정규식
var nameChk = /[가-힣]{2,}/; // 이름 정규식
var numChk = /^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/; // 주민번호 정규식
// true/false
var ynId="no"; // ID check Yes or No
var ynPw="no"; // Password
var ynPwc="no"; // Password Check
var ynMail="no";// Email
var ynName="no";// Name
var ynNum="no"; // Num
function chk() {
var inter = 0;
var arrInterest = document.getElementsByName("interest"); // 관심분야
var introTa = document.getElementById("intro"); // 자기소개
var pcode = document.getElementById("postcode"); // 우편번호
for(var i=0; i<arrInterest.length; i++){
if(arrInterest[i].checked){
inter++;
break;
}
}
if(ynId!="yes"){
chkId("");
}else if(ynPw!="yes"){
chkPw("");
}else if(ynPwc!="yes"){
chkPwc("");
}else if(ynMail!="yes"){
chkEmail("");
}else if(ynName!="yes"){
chkName("");
}else if(pcode.value=="우편번호"){
alert("주소를 입력해주세요.");
pcode.focus();
}else if(ynNum!="yes"){
chkNum("");
}else if(inter==0){
alert("관심분야를 선택해주세요.");
}else if(introTa.value==""){
alert("자기소개를 입력해주세요.");
introTa.focus();
}
else{
f1.submit();
}
}
function chkId(myId) { // 아이디 검사
if(idPwChk.test(myId)){
ynId="yes"
}else{
alert("아이디를 다시 확인해주세요.")
ynId="no";
f1.my_id.value="";
f1.my_id.focus();
}
}
function chkPw(myPw) { // 비밀번호 검사
var myId = document.getElementById("my_id").value;
if(myPw==myId){
alert("아이디와 비밀번호는 동일하게 사용할 수 없습니다.");
f1.my_pw.value="";
ynPw="no";
f1.my_pw.focus();
}else if(idPwChk.test(myPw)){
ynPw="yes";
}else{
alert("비밀번호를 다시 확인해주세요.")
ynPw="no";
f1.my_pw.value="";
ynPw="no";
f1.my_pw.focus();
}
}
function chkPwc(pwChk) {
var myPw = document.getElementById("my_pw").value; // 비밀번호 확인 검사
if(pwChk==""){
alert("비밀번호 확인을 다시 확인해주세요.");
f1.pwd_check.value="";
ynPwc="no";
f1.pwd_check.focus();
}else if(pwChk==myPw){
ynPwc="yes";
}else{
alert("비밀번호가 일치하지 않습니다.");
f1.pwd_check.value="";
ynPwc="no";
f1.pwd_check.focus();
}
}
function chkEmail(myEmail) { // 이메일 검사
if(emailChk.test(myEmail)){
ynMail="yes";
}else{
alert("이메일을 다시 확인해주세요.");
ynMail="no";
f1.my_email.value="";
f1.my_email.focus();
}
}
function chkName(myName) { // 이름 검사
if(nameChk.test(myName)){
ynName="yes";
}else{
alert("이름을 다시 확인해주세요.");
ynName="no";
f1.my_name.value="";
f1.my_name.focus();
}
}
function chkNum() { // 주민등록번호 검사
var num1 = document.getElementById("my_num1"); // 주민등록번호 앞
var num2 = document.getElementById("my_num2"); // 주민등록번호 뒤
var addYear = document.getElementById("my_year"); // 생일 - 년
var addMon = document.getElementById("my_month"); // 생일 - 월
var addDay = document.getElementById("my_day"); // 생일 - 일
var FirstNum = num1.value.substring(0, 1); // 맨 앞자리 숫자
var num = (num1.value)+"-"+(num2.value); // 주민등록번호
if(numChk.test(num)){
var arrNum1 = new Array(); // 앞자리를 담을 배열
var arrNum2 = new Array(); // 뒷자리를 담을 배열
for (var i = 0; i < num1.value.length; i++) {
arrNum1[i] = num1.value.charAt(i);
} // 주민번호 앞자리를 배열에 순서대로 담는다.
for (var i = 0; i < num2.value.length; i++) {
arrNum2[i] = num2.value.charAt(i);
} // 주민번호 뒷자리를 배열에 순서대로 담는다.
var tempSum = 0;
for (var i = 0; i < num1.value.length; i++) {
tempSum += arrNum1[i] * (2 + i);
} // 주민번호 검사방법을 적용하여 앞 번호를 모두 계산하여 더함
for (var i = 0; i < num2.value.length - 1; i++) {
if (i >= 2) {
tempSum += arrNum2[i] * i;
} else {
tempSum += arrNum2[i] * (8 + i);
}
} // 같은방식으로 앞 번호 계산한것의 합에 뒷번호 계산한것을 모두 더함
if ((11 - (tempSum % 11)) % 10 != arrNum2[6]) {
alert("주민번호를 다시 확인해주세요.");
num1.value = "";
num2.value = "";
ynNum="no";
num1.focus();
} else {
ynNum = "yes";
addYear.value = arrNum1[0]+arrNum1[1]; // 년
console.log(addYear.value);
if(arrNum1[0]=="0"){
addYear.value = "20"+addYear.value; // 맨 앞이 0이면 20+년
}else{
addYear.value = "19"+addYear.value; // 아니면 19+년
}
addMon.value = arrNum1[2]+arrNum1[3]; // 월
addDay.value = arrNum1[4]+arrNum1[5]; // 일
}
}else{
alert("주민등록번호를 다시 확인해주세요.");
num1.value = "";
num2.value = "";
ynNum="no";
num1.focus();
}
}
반응형
'Java > eclipse 연습' 카테고리의 다른 글
(Java)파일 업로드.jsp (0) | 2020.09.22 |
---|---|
(Java)계산기 Servlet version (0) | 2020.08.25 |
(JavaScript)계산기 (0) | 2020.08.20 |
(JavaScript)현재 시간(1초마다 갱신) (0) | 2020.08.20 |
(Java)Thread Synchronization - ATM (0) | 2020.08.13 |