DATABASE

(JSP)DB연동 login ,join,select,delete

김만식이 2020. 9. 21. 21:59
<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource name="jdbc/OracleDB" 
	auth="Container"
	driverClassName="oracle.jdbc.driver.OracleDriver"
	type="javax.sql.DataSource"
	url="jdbc:oracle:thin:@localhost:1521:xe"
	username="hr"
	password="hr"
	maxActive="20"
	maxIdle="10"
	maxWait="-1"
/>

</Context>

context.xml

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>   
<%@ page import="javax.sql.*"%>   
<%@ page import="javax.naming.*"%>
<!DOCTYPE html>
<html>
<head>
<%
response.sendRedirect("loginFrom.jsp");
%>

<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  
<!DOCTYPE html>
<html>
<head>
<style>
li{
list-style: none;
}
font {
font-weight: 900;
}
</style>

<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="loginProcess.jsp" method="post" >
<h1 style="text-align:center">로그인 ver.1</h1>
<div style="text-align: center">
<hr/>
<ul>
<li><font>아이디:</font><input type="text" name="userId"></li>
<li><font>비밀번호:</font><input type="password" name="userPw"></li>
<li><input type="submit" value="로그인">
<input type="button" value="회원가입" onclick="location='joinForm.jsp'">
</li>
</ul>
</div>
</form>
</body>
</html>

loginFrom.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
    
<%
request.setCharacterEncoding("UTF-8");

Connection con = null;

String sql = "insert into testlogin values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
	Context init = new InitialContext();
	DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
	con = ds.getConnection();
	PreparedStatement ppst = con.prepareStatement(sql);
	ppst.setString(1,request.getParameter("userId"));
	ppst.setString(2,request.getParameter("userPw"));
	ppst.setString(3,request.getParameter("userMail"));
	ppst.setString(4,request.getParameter("userName"));
	ppst.setString(5,request.getParameter("sample6_postcode"));
	ppst.setString(6,request.getParameter("sample6_address"));
	ppst.setString(7,request.getParameter("sample6_address2"));
	ppst.setString(8,request.getParameter("jubun1"));
	ppst.setString(9,request.getParameter("jubun2"));
	ppst.setString(10,request.getParameter("year"));
	ppst.setString(11,request.getParameter("month"));
	ppst.setString(12,request.getParameter("day"));
	ppst.setString(13,request.getParameter("hobby"));
	ppst.setString(14,request.getParameter("intro"));
	ppst.executeQuery();
} catch (Exception e) {
	e.printStackTrace();
}
%>
<script>
alert("회원가입이 완료 되었습니다.");
location.href="loginFrom.jsp";
</script>





joinProcess.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<style>
    th {
        background-color: #A9BCF5;
    }
    table,
    th,
    tr,
    td {
        border: 1px solid;
    }
</style>
 <script type="text/javascript">
//비밀번호 확인.
 function checkpass(){
    
    var objuserPw = document.getElementById("userPw");
    var objusePwConfirm = document.getElementById("userPwConfirm");
    
 if(objuserPw.value != objusePwConfirm.value || objuserPw.value == ""){

       alert("패스워드가 다릅니다. 다시입력해주세요")
       objuserPw.value = "";
       objusePwConfirm.value = "";
       objuserPw.focus();
       return false;

 }else {
   alert("패스워드가 일치합니다.");
   return true;
 }

 }
</script>

 <script type="text/javascript">
function joininsert() {

   //정규식
   var re = /^[a-zA-Z0-9]{4,12}$/ // 아이디와 패스워드가 적합한지 검사할 정규식
   var re2 = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;


   var objuserId = document.getElementById("userId");
   var objuserPw = document.getElementById("userPw");
   var objusePwConfirm = document.getElementById("userPwConfirm");
   var objMail = document.getElementById("userMail");
   var objuserName = document.getElementById("userName");
   var objhobby = document.getElementsByName("hobby");
   var intro = document.getElementById("intro");

   //address
   var address1 = document.getElementById("sample6_postcode");
   var address2 = document.getElementById("sample6_address");
   var address3 = document.getElementById("sample6_address2");

   //주민 번호
   var objjubun1 = document.getElementById("jubun1");  //주민번호 앞자리
   var objjubun2 = document.getElementById("jubun2"); // 주민번호 뒷자리

   var objArr1 = new Array();      //주민번호 6개
   var objArr2 = new Array();      //주민번호 뒤 7개
   
  

if(objuserId.value == ""){  //아이디 공백일때.

  alert("id를 입력해주세요.");
  objuserId.focus();
  return false;
}
else if(re.test(objuserId.value) != true){
  alert("id 조건이 맞지않소.");
  objuserId.value = "";       //초기화
  objuserId.focus();
  return false;
}
else if(objuserPw.value == ""){  //패스워드 공백일때.
  alert("password를 입력해주세요.")
  objuserPw.focus();
  return false;
}
else if(objusePwConfirm.value == ""){  // 패스워드 공백일때.
  alert("password를 입력해주세요.")
  objusePwConfirm.focus();
  return false;
}

else if(objMail.value == ""){   //이메일 공백
  alert("email를 입력해주세요.")
  objMail.focus();
  return false;

}
else if(re2.test(objMail.value) != true){
  alert("이메일이 올바르지 않습니다.")
  objmail.value == "";
  objMail.focus();
  return false;
}

else if(objuserName.value == ""){   //이름 공백
  alert("name를 입력해주세요.")
  objuserName.focus();
  return false;

}

//주소 4종 세트
else if(address1.value == ""){
  alert("우편번호를 입력해주세요.")
  address1.focus();
  return false;

}
else if(address2.value == ""){
  alert("도로명 주소");
  address2.focus();
  return false;
}
/* else if(objbranchaddress.value == ""){
  alert("지번 주소");
  objbranchaddress.focus();
  return false;
} */
else if(address3.value == ""){
  alert("상세 주소");
  address3.focus();
  return false;
}

/* //주민번호.
else if(objjubun1.value == true){

for(var i = 0; i < objjubun1.length; i++){      //앞자리 배열에 담기
  objArr1 = objjubun1.value.charAt(i);

}
for(var i = 0; i< objjubun2.length; i++){       //뒷자리 배열에 담기/
  objArr2 = objjubun2.value.charAt(i);
}

}
else if(objjubun1.objjubun1 == "" && objjubun2.value == ""){
  alert("주민등록번호를 다시 입력해주세요.");
  objjubun1.focus();
  return false;
}
else if(objArr1[0] == 1 || objArr1[0] == 2){  //남자는 1 여자는 2
  var y = "19"+ parseInt(objArr1.value.substring(0,2));
  var m = parseInt(objArr1.value.substring(2,4));
  var d = parseInt(objArr1.value.substring(4,6));

  join.year.value = y;
 join.month.value = m;
  join.date.value = d;

}
else if(objArr1[0] == 3 || objArr1[0] == 4){  //남자는 1 여자는 2
  var y = "20"+ parseInt(objArr1.value.substring(0,2));
  var m = parseInt(objArr1.value.substring(2,4));
  var d = parseInt(objArr1.value.substring(4,6));

  join.year.value = y;
  join.month.value = m;
   join.date.value = d;

} */


//게시판
else if(intro.value == ""){
  alert("자기소개를 입력해주세요");
  intro.focus();
  return false;
}

//관심분야
var hobby = new Array();


for(var i=0; i<objhobby.length; i++){
{
  if(objhobby[i].checked)
  {
      hobby+=objhobby[i].value;   //관심분야 저장
  }
}
}
if(hobby.length < 1)           //입력이 안될때  1
{
  alert("관심분야를 선택해주세요.");
  return false;
}

alert("회원가입이 완료되었습니다.");
document.join.submit();




}

</script>


<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<script>
function sample6_execDaumPostcode() {

  new daum.Postcode({

      oncomplete: function(data) {

          // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.



          // 각 주소의 노출 규칙에 따라 주소를 조합한다.

          // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.

          var fullAddr = ''; // 최종 주소 변수

          var extraAddr = ''; // 조합형 주소 변수



          // 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.

          if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우

              fullAddr = data.roadAddress;



          } else { // 사용자가 지번 주소를 선택했을 경우(J)

              fullAddr = data.jibunAddress;
          }



          // 사용자가 선택한 주소가 도로명 타입일때 조합한다.

          if(data.userSelectedType === 'R'){

              //법정동명이 있을 경우 추가한다.

              if(data.bname !== ''){

                  extraAddr += data.bname;

              }

              // 건물명이 있을 경우 추가한다.

              if(data.buildingName !== ''){

                  extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);

              }

              // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.

              fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : '');

          }



          // 우편번호와 주소 정보를 해당 필드에 넣는다.

          document.getElementById('sample6_postcode').value = data.zonecode; //5자리 새우편번호 사용

          document.getElementById('sample6_address').value = fullAddr;



          // 커서를 상세주소 필드로 이동한다.

          document.getElementById('sample6_address2').focus();

      }

  }).open();
}
 </script>

<body>

    <form action="joinProcess.jsp" method="post">
        <div align="center">
            <table>
                <tr>
                    <th colspan="2">회원 기본 정보</th>
                </tr>
                <tr>
                    <td align="center">아이디 : </td>
                    <td>
                        <input type="text" id="userId" name="userId">4~12자의 영문 대소문자와 숫자로만 입력
                    </td>
                </tr>
                <tr>
                    <td align="center">비밀번호 : </td>
                    <td>
                        <input type="password" id="userPw" name="userPw">4~12자의 영문 대소문자와 숫자로만 입력
                    </td>
                </tr>
                <tr>
                    <td align="center">비밀번호 확인 : </td>
                    <td>
                        <input type="password" id="userPwConfirm" name="userPwConfirm">
                        <input type="button" id="userPwConfirm" name="userPwConfirm" value="확인" onclick="checkpass()">
                    </td>
                </tr>
                <tr>
                    <td align="center">메일주소 : </td>
                    <td>
                        <input type="text" id="userMail" name="userMail">예) id@domain.com
                    </td>
                </tr>
                <tr>
                    <td align="center">이름 : </td>
                    <td>
                        <input type="text" id="userName" name="userName">
                    </td>
                </tr>
                <tr>
                    <th colspan="2">개인 신상 정보</th>
                </tr>
                <tr>
                    <td align="center">우편번호 : </td>
                    <td>
                        <input type="text" id="sample6_postcode" placeholder="우편번호">

                        <input type="button" onclick="sample6_execDaumPostcode()" value="우편번호 찾기"><br>

                        <input type="text" id="sample6_address" placeholder="주소">

                        <input type="text" id="sample6_address2" placeholder="상세주소">
                    </td>
                </tr>
                <tr>
                    <td align="center">주민등록번호 : </td>
                    <td>
                        <input type="text" id="jubun1" name="jubun1" style="width: 72px;"> -
                        <input type="text" id="jubun2" name="jubun2" style="width: 72px;"> 예) 123456-1234567
                    </td>
                </tr>
                <tr>
                    <td align="center">생일 : </td>
                    <td>
                        <input type="text" id="year" name="year" style="width: 70px;" readonly="readonly">년
                        <input type="text" id="month" name="month" style="width: 20px;" readonly="readonly">월
                        <input type="text" id="date" name="date" style="width: 20px;" readonly="readonly">일
                    </td>
                </tr>
                <tr>
                    <td align="center">관심분야 : </td>
                    <td>
                        <input type="checkbox" name="hobby" value="computer">컴퓨터
                        <input type="checkbox" name="hobby" value="internet">인터넷
                        <input type="checkbox" name="hobby" value="travle">여행
                        <input type="checkbox" name="hobby" value="movie">영화감상
                        <input type="checkbox" name="hobby" value="music">음악감상
                    </td>
                </tr>
                <tr>
                    <td align="center">자기소개 : </td>
                    <td>
                        <textarea id="intro" name="intro" style="width: 450px; height: 200px; resize: none;"></textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <input type="submit"  value="회원 가입">
                        <input type="reset" value="다시 입력">
                    </td>
                </tr>
            </table>
    </form>



</body>

</html>

joinform.jsp(유효성때문에 script 부분은 잠시 주석)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
    
<%
request.setCharacterEncoding("UTF-8");

Connection con = null;

String sql = "insert into testlogin values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
	Context init = new InitialContext();
	DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
	con = ds.getConnection();
	PreparedStatement ppst = con.prepareStatement(sql);
	ppst.setString(1,request.getParameter("userId"));
	ppst.setString(2,request.getParameter("userPw"));
	ppst.setString(3,request.getParameter("userMail"));
	ppst.setString(4,request.getParameter("userName"));
	ppst.setString(5,request.getParameter("sample6_postcode"));
	ppst.setString(6,request.getParameter("sample6_address"));
	ppst.setString(7,request.getParameter("sample6_address2"));
	ppst.setString(8,request.getParameter("jubun1"));
	ppst.setString(9,request.getParameter("jubun2"));
	ppst.setString(10,request.getParameter("year"));
	ppst.setString(11,request.getParameter("month"));
	ppst.setString(12,request.getParameter("day"));
	ppst.setString(13,request.getParameter("hobby"));
	ppst.setString(14,request.getParameter("intro"));
	ppst.executeQuery();
} catch (Exception e) {
	e.printStackTrace();
}
%>
<script>
alert("회원가입이 완료 되었습니다.");
history.back("loginFrom.jsp");

</script>





loginProcess.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*"%>   
<%@ page import="javax.sql.*"%>   
<%@ page import="javax.naming.*"%>

<!DOCTYPE html>
<html>
<head>
<style>
ts{
 text-align: center;
 border: 1px black solid;
}
</style>

<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>회원정보</h1>
<%
request.setCharacterEncoding("UTF-8");

Connection con = null;

String sql = "select *from testlogin";
try {
	Context init = new InitialContext();
	DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
	con = ds.getConnection();
	
	PreparedStatement ppst = con.prepareStatement(sql);
	
	ResultSet rs = ppst.executeQuery();

	while (rs.next()) {
	 String userId = rs.getString(1);
	 out.write("<form action='Member_info.jsp' method='get'>");
	 out.write("<table class='ts'>");
	 out.write("<tr>");
	 out.write("<td>회원아이디 :");
	 out.write("<a href='Member_info.jsp?userId="+userId+"'>");
	 out.write(userId);
	 out.write("</a></td>");
	 out.write("</tr>");
	 out.write("</table>");
	 out.write("</form>");
	 
	}
	rs.close();
} catch (Exception e) {
	e.printStackTrace();

}
%>
</body>
</html>

Member_list.jsp

회원리스트조회 (admin만)

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		request.setCharacterEncoding("UTF-8");

	Connection con = null;
	String  userId1 =request.getParameter("userId");
	String sql = "select *from testlogin where userid = ? ";
	try {
		Context init = new InitialContext();
		DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
		con = ds.getConnection();

		PreparedStatement ppst = con.prepareStatement(sql);
		
		ppst.setString(1,request.getParameter("userId"));
		
		ResultSet rs = ppst.executeQuery();

		while (rs.next()) {
		String userId = rs.getString(1);
		String userPw = rs.getString(2);
		String userMail = rs.getString(3);
		String userName = rs.getString(4);
		String sample6_postcode = rs.getString(5);
		String sample6_address = rs.getString(6);
		String sample6_address2 = rs.getString(7);
		String jubun1 = rs.getString(8);
		String jubun2 = rs.getString(9);
		String year = rs.getString(10);
		String month = rs.getString(11);
		String day = rs.getString(12);
		String hobby = rs.getString(13);
		String intro = rs.getString(14);
		
		out.print("<table border='1'>");
		out.print("<tr>");
		out.print("<td>아이디:"+userId+"<td/>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>비밀번호:"+userPw+"<td/>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>메일:"+userMail+"<td/>");
		out.print("</tr>");		
		out.print("<tr>");
		out.print("<td>이름:"+userName+"<td/>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>주소:"+sample6_postcode+sample6_address +sample6_address2+"<td/>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>주민번호:"+jubun1+"-"+jubun2+"</td>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>생년월일:"+year+"년"+month+"월"+day+"일"+"</td>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>취미:"+hobby+"</td>");
		out.print("</tr>");
		out.print("<tr>");
		out.print("<td>자기소개:"+intro+"</td>");	
		out.print("</tr>");
		out.print("<table>");
			
		}
		rs.close();
	
 		out.write("<a href='Member_delete.jsp?userId="+userId1+"'>");
 		out.write("회원삭제하기</a>");
	
	} catch (Exception e) {
		e.printStackTrace();
	}
	%>
	<a href="Member_delete.jsp">회원삭제하기</a>
</body>
</html>

Member_info.jsp

회원정보조회 (admin만)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
request.setCharacterEncoding("UTF-8");

Connection con = null;
String id=(String) request.getParameter("userId");
String sql = "delete from testlogin where userId = ? ";
try {
	Context init = new InitialContext();
	DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
	con = ds.getConnection();
	
	PreparedStatement ppst = con.prepareStatement(sql);
	
	ppst.setString(1,id);
	ppst.executeUpdate();	
	

	
} catch (Exception e) {
	e.printStackTrace();

}
%>      
<script>
alert("삭제 완료");
history.back();
</script>

Member_delete.jsp

회원삭제 (admin만)

 

 

 

create table testlogin (
userId varchar(50)  , --아이디
userPw varchar(50)  , --비밀번호
userMail varchar(50), --메일 
userName varchar(50), --이름
sample6_postcode varchar(50), --주소1 
sample6_address varchar(50), --주소2
sample6_address2 varchar(50), --주소3
jubun1 number, --주민 앞자리 
jubun2 number, --주민 뒷자리 
year number, --년
month number,  -- 월
day number, --일
hobby varchar(50),
intro varchar(300)
);

insert into testlogin (userId,userPw) VALUES('admin','1234');

DB 연습테이블