자바/Jsp

[Jsp] 개인 홈페이지 만들기(1)-기본 화면,회원가입페이지

taehee94 2022. 3. 9. 18:09

코딩공부가 목적이여서, 간단한 틀만 만들었습니다. 디자인이 목적이 아니니 코딩한것만 참고해주세요.

 

Jsp와 Mysql 연동해서 회원가입, 로그인, 정보수정을 해보겠습니다.

1.기본화면입니다.

<%@ page language="java" contentType="text/html; charset=utf-8"   pageEncoding="utf-8"%>
<head>
</head>
<body>
<button onClick="location='Login/Login.jsp'">로그인</button>
<button onClick="location='Join/JOIN.jsp'">회원가입</button>
</body>

간단하게 로그인버튼과 회원가입 버튼만 만들었습니다.

로그인버튼을 클릭하면 Login.jsp로 이동하고, 회원가입 버튼을 클릭하면 JOIN.jsp로 이동합니다.

 

 

 

 

 

 

 

2.회원가입 페이지입니다.

<%@ page language="java" contentType="text/html; charset=utf-8"   pageEncoding="utf-8"%>
<%	request.setCharacterEncoding("UTF-8");%> <!-- 한글깨짐 -->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>회원가입</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
		<script>
			$(document).ready(function(){
  				$("p").click(function(){
    			$(this).hide();
  				});
			});
		</script>
        
	</head>
	<body>
		
		<h2>회원가입</h2>
		<script src="emailcheck.js"></script>
		<form action="users_ok.jsp" method="post">
			<fieldset>
			<legend> | 회원가입 | </legend>
				<label for="ID">ID : </label> 
				<input type="text" name="ID" value=""placeholder="Dave">
                <input type="button" value ="중복확인" onclick="openIdChk()">
                <input type ="hidden" name ="idDuplication" value="idUncheck"><br/>

				<label for="PWD">비밀번호 : </label>
				<input type="password" name="PWD" value="" placeholder="1234"><br/>

				<label for="NAME">성명 : </label>
				<input type="text" name="NAME" value="" placeholder="이정재"> <br/>

				<label for="SSNUM">주민번호 : </label>
				<input type="text" name="SSNUM" value="" placeholder="111111" size="6" maxlength="6">-
				<input type="password" name="SSNUM_pwd" value="" placeholder="1111111" size ="7" maxlength="7"><br/>

				<label for="Email">이메일: </label>
					<input type="text" id="email_id" name="email_id" class="form_w200" value="" title="이메일 아이디" placeholder="이메일" maxlength="18" > @ 
					<input type="text" id="email_domain" name="email_domain" class="form_w200" value="" title="이메일 도메인" placeholder="이메일 도메인" maxlength="18"> 
					<select class="select" title="이메일 도메인 주소 선택" onclick="setEmailDomain(this.value);return false;">
   					 	<option value="">-선택-</option>
    					<option value="naver.com">naver.com</option>
    					<option value="gmail.com">gmail.com</option>
    					<option value="hanmail.net">hanmail.net</option>
    					<option value="hotmail.com">hotmail.com</option>
    					<option value="korea.com">korea.com</option>
    					<option value="nate.com">nate.com</option>
    					<option value="yahoo.com">yahoo.com</option>
					</select><br/>
				
				<label for="CNUM">전화번호 : </label>
				<input type="text" name="CNUMF" value="" size="3" maxlength="3" placeholder="000">-
				<input type="text" name="CNUMM" value="" size ="4" maxlength="4" placeholder="0000">-
				<input type="text" name="CNUML" value="" size="4" maxlength="4" placeholder="0000"><br/>

				<label for="PNUM">핸드폰: </label>
				<select name="PNUMF">
					<option value="">-선택-</option>
					<option value="010">010</option>
					<option value="011">011</option>
					<option value="016">016</option>
					<option value="019">019</option></select>-
				<input type="text" name="PNUMM" value="" size ="4" maxlength="4" placeholder="0000">-
				<input type="text" name="PNUML" value="" size="4" maxlength="4" placeholder="0000"><br/>

				<label for="GENDER">성별 : </label>
					<input type="radio" name="GENDER" value="male" checked/><label for="GENDERMAIL">남자</label>
					<input type="radio" name="GENDER" value="female"/><label for="GENDERFEMAIL">여자</label>
				<br/>

				<label for="HABBY">취미 </label>
				<input type="checkbox" name="HOBBY" value="soccer" checked/ >축구
				<input type="checkbox" name="HOBBY" value="game" checked/ >게임
				<input type="checkbox" name="HOBBY" value="hiking" / >등산
				<input type="checkbox" name="HOBBY" value="fish" / >낚시
				<input type="checkbox" name="HOBBY" value="shopping" / >쇼핑<br/>

				<label for="INTRODUCE">자기소개 :</label>
				<input type="text" name="INTRODUCE" value="" placeholder="하나둘셋">
				<br/>
				<input type="submit" value="회원가입">
				
			</fieldset>
		</form>
	</body>
</html>

회원가입페이지는,html의 form,action을 통해 users_ok.jsp로 정보를 보내주는 기능을 합니다.

 

 

 

 

 

 

 

 

 

 

JOIN.jsp 코드에 포함된 emailcheck.js입니다.

function checkemail()
  {
	 var email_rule =  /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
	var email_id =$("#email_id").val();
	var email_domain =$("#email_domain").val();
	 var mail ="";

	  if(!email_id){
		  alert("이메일을 입력해주세요");
		$("#email_id").focus();
		return false;
	  }
	  if(!email_domain){
		  alert("도메인을 입력해주세요");
		$("#email_domain").focus();
		return false;
	  }
	  mail = email_id+"@"+email_domain;
	  $("#mail").val(mail);  
	  
	  if(!email_rule.test(mail)){
		  alert("이메일을 형식에 맞게 입력해주세요.");
		return false;
	  }
  }

  function setEmailDomain(domain){
        $("#email_domain").val(domain);
    }
	
	//$('#~~~'):태그값 설정

checkemail 함수를 통해 이메일이 제대로 갖춰진 형식인지 알 수 있네요.

 

JOIN.jsp에서 action을 통해 보내준 정보를 받는 users_ok.jsp입니다.

<%@ page language="java" contentType="text/html; charset=utf-8"   pageEncoding="utf-8"%>
<%	request.setCharacterEncoding("UTF-8");%> <!-- 인코딩  -->
<%@ page import="java.sql.*"%>

<html>

<head>

<title>회원가입</title>

</head>

<body>

<%

String DB_URL = "jdbc:mysql://localhost:3306/ezen";

// DB URL Format = "jdbc:mysql://'DB IP':'Connector Port'/'DB_Name'";

String DB_USER = "root";

String DB_PASSWORD= "oracle";

// DB ID/PASSWORD

Connection conn;

Statement stmt;

ResultSet rs = null;

String ID =request.getParameter("ID");
String PWD =request.getParameter("PWD");
String NAME=request.getParameter("NAME");
String SSNUM = request.getParameter("SSNUM");
String SSNUM_PWD = request.getParameter("SSNUM_pwd");
String EMAIL_ID=request.getParameter("email_id");
String EMAIL_DOMAIN=request.getParameter("email_domain");
String CNUMF=request.getParameter("CNUMF");
String CNUMM=request.getParameter("CNUMM");
String CNUML=request.getParameter("CNUML");
String PNUMF=request.getParameter("PNUMF");
String PNUMM=request.getParameter("PNUMM");
String PNUML=request.getParameter("PNUML");
String GENDER=request.getParameter("GENDER");
String [] HABBY=request.getParameterValues("HOBBY");
String H ="";
String INTRODUCE=request.getParameter("INTRODUCE");
  /* out.println(ID);
   out.println(PWD);
   out.println(NAME);
   out.println(SSNUM);
   out.println(SSNUM_PWD);
      
   out.println(EMAIL_ID);
   out.println(EMAIL_DOMAIN);
   
   out.println(CNUMF);
   out.println(CNUMM);
   out.println(CNUML);
   out.println(PNUMF);
   out.println(PNUMM);
   out.println(PNUML);
   out.println(GENDER); */
   for (int i =0; i<HABBY.length;i++){
   
   H +=HABBY[i]+" ";
   
   }
   String PN=PNUMF+"-"+PNUMM+"-"+PNUML;
   /*out.println(H);
   out.println(INTRODUCE);*/
try {

  Class.forName("com.mysql.jdbc.Driver");

  // Load JDBC Class

  conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

  // Make Connection

String sql = "INSERT INTO users " + 
				"SET ID = " + "'"+ID +"'"+ "," +
				"PWD = '" +  PWD + "', " + 
				"NAME = " +"'"+  NAME +"'"+ ", " +
				"SSNUM = " +"'"+ String.format("%s-%s",SSNUM,SSNUM_PWD)+"'"+ ", " +
				"EMAIL = " + "'"+String.format("%s@%s",EMAIL_ID,EMAIL_DOMAIN)+"'"+ ", " +
				"CNUM = " + "'"+String.format("%s-%s-%s",CNUMF,CNUMM,CNUML)+"'" +", " +
				"PNUM = " + "'"+PN+"'" +", " +
				"GENDER = " +"'"+ GENDER+"'"+ ", " +
				"HABBY = " +"'"+ H +"'"+ ", " +
				"INTRODUCE = " + "'"+INTRODUCE +"'"+ ";";
	//out.println(sql);
  stmt = conn.createStatement();

stmt.executeUpdate(sql);
			
  stmt.close();

  conn.close();

 }

 catch(Exception e){

  out.print("Exception Error...");

  out.print(e.toString());

 }

 finally {

 }

%>

</body>

</html>

DB연동을 위해 Connection과 Statement Resultset 함수를 사용했습니다. DB연동이 제대로 이루어졌는지 확인하기위해

out.println()을 이용해 브라우저에 정보를 띄웠는지 한번씩 확인해보고, 연동이 제대로 되어 주석처리 해줍니다.

sql 을 통해 mysql 테이블에다가 insert해줍니다.

기존에 있던 테이블입니다. 2개의 데이터가 존재하는것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

 

회원가입을위해 정보를 입력해줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

데이터가 3개로 늘어난 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

 

다음 시간에는 로그인페이지로 이어지겠습니다.