21.02.08

78536 단어 DatabaseDatabase

[회원가입]


<joinForm.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
    	<style>
            table,th,td{
    		border:1px solid black;
    		border-collapse: collapse;
    		padding: 5px 10px;
    		text-align:center;
    		}
    	</style>
</head>
<body>
  <h2>회원가입</h2>
    <!-- table내용을 joinProc.jsp로 post방식으로 보낸다 -->
    <form action="joinProc.jsp" method="post">
      <table>
        <tr>
	  <th>ID</th>
	  <td>
	    <input type="text" name="userId"/>
	  </td>
	</tr>
	<tr>
	  <th>PW</th>
	  <td>
	    <input type="password" name="userPw"/>
	  </td>
	</tr>
	<tr>
	  <th>이름</th>
	  <td>
	    <input type="text" name="userName"/>
	  </td>
  	</tr>
	<tr>
	  <th>나이</th>
	  <td>
	    <input type="text" name="age"/>
	  </td>
	</tr>
	<tr>
	  <th>성별</th>
	  <td>
	    <input type="radio" name="gender" value=""/>&nbsp;&nbsp;&nbsp;&nbsp;
	    <input type="radio" name="gender" value=""/></td>
	</tr>
	<tr>
	  <th>email</th>
	  <td>
	    <input type="email" name="email"/>
	  </td>
	</tr>
	<tr>
	  <td colspan="2">
	    <input type="submit" value="회원가입"/>
	  </td>
	</tr>
      </table>
    </form>
  </body>
</html>

<joinProc.jsp>

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//0.한글깨짐 방지
request.setCharacterEncoding("UTF-8");
//1. 파라메터 받아오기
String id = request.getParameter("userId"); //name이 userId인 파라메터의 값 받아오기
String pw = request.getParameter("userPw"); //name이 userPw인 파라메터의 값 받아오기
String name = request.getParameter("userName"); //name이 userName인 파라메터의 값 받아오기
String age = request.getParameter("age"); //name이 age인 파라메터의 값 받아오기
String gender = request.getParameter("gender"); //name이 gender인 파라메터의 값 받아오기
String email = request.getParameter("email"); //name이 email인 파라메터의 값 받아오기
System.out.println(id+"/"+pw+"/"+name+"/"+age+"/"+gender+"/"+email); //정상적으로 받아왔나 출력

//2. DB접속
Context ctx = new InitialContext(); // context 객체화
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Oracle"); ////name으로 Resource찾아서 자바형태인 datasource로 변환
Connection conn = ds.getConnection(); //DataSource를 통해 가져온 정보를 이용해서 Connection 가져오기.
//3. 쿼리실행
String sql = "INSERT INTO member(id,pw,name,age,gender,email) VALUES(?,?,?,?,?,?)";//3-1 쿼리 준비
PreparedStatement ps = conn.prepareStatement(sql);//Connection으로 부터 PreparedStatement 가져오기
//3-3 ? 대응
//받아온 파라메터로 값 넣어주기
ps.setString(1, id); //?의 인덱스 1에 id넣기
ps.setString(2, pw); //?의 인덱스 2에 pw넣기
ps.setString(3, name); //?의 인덱스 3에 name넣기
ps.setInt(4, Integer.parseInt(age)); //?의 인덱스 4에 age넣기(int로변환)
ps.setString(5, gender); //?의 인덱스 5에 gender넣기
ps.setString(6, email); //?의 인덱스 6에 email넣기
//3-4 쿼리 실행
int success = ps.executeUpdate(); //executeUpdate()는 성공한것에 따라 int로 반환
//4. 자원반납
ps.close();
conn.close();
%>
<script>
//5. 성공여부에 따른 페이지 이동
<%if(success > 0){%> //성공한 쿼리가 하나라도 있다면
	alert("등록이 완료되었습니다."); //알림창 띄우고
	location.href("index.jsp"); //index.jsp로 보낸다
<%}else{%> //성공한 쿼리가 없다면
	alert("등록이 실패하였습니다."); //알림창 띄우고
	location.href("joinForm.jsp"); //joinForm.jsp으로 돌려보낸다.
<%}%>
</script>

<index.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <style>
    	table,th,td{
    	    border:1px solid black;
    	    border-collapse: collapse;
    	    padding: 5px 10px;
    	    text-align:center;
    	}    
    </style>
  </head>
  <body>
    <h2>회원관리 로그인</h2>
    <form action="loginProc.jsp" method="POST"><!-- 테이블 내용을 loginProc으로 post방식으로 보낸다 -->
      <table>
        <tr>
    	  <th>ID</th>
    	  <td>
    	    <input type="text" name="userId"/>
    	  </td>
    	</tr>
    	<tr>
    	  <th>PW</th>
    	  <td>
    	    <input type="password" name="userPw"/>
    	  </td>
    	</tr>
    	<tr>
    	  <td  colspan="2">
    	    <input type="submit" value="LOG IN"/>
    	    <!-- 클릭했을때 joinForm.jsp로 이동 -->
    	    <input type="button" value="회원가입" onclick="location.href='joinForm.jsp'"/> 					
    	  </td>
    	</tr>	
      </table>
    </form>
  </body>
</html>

[로그인]


<loginProc.jsp>

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//1.파라메터 확인
String id = request.getParameter("userId"); //name이 userId인 파라메터의 값을 변수 id에 넣는다.
String pw = request.getParameter("userPw"); //name이 userPw인 파라메터의 값를 변수 pw에 넣는다.
System.out.println(id+"/"+pw); //정상적으로 들어온걸 확인위해 변수 출력
//2.DB접속
Context ctx = new InitialContext(); //Context 객체화
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Oracle"); //name으로 Resource찾아서 자바형태인 datasource로 변환
Connection conn = ds.getConnection(); //DataSource를 통해 가져온 정보를 이용해서 Connection 가져오기.
//3.쿼리실행
String sql = "SELECT id FROM member WHERE id= ? AND pw= ?"; //쿼리준비
PreparedStatement ps = conn.prepareStatement(sql);//Connection으로 부터 PreparedStatement 가져오기
ps.setString(1, id); // id = ? 대응하는 값 넣어주기
ps.setString(2, pw); // pw = ? 대응하는 값 넣어주기
ResultSet rs = ps.executeQuery(); //쿼리 실행, SELECT문은 ResultSet형태로 반환한다.
	
String userId="";
if(rs.next()){ //다음값이 있으면 true, 없으면 false
    userId = rs.getString("id"); //쿼리를 실행해서 얻은 값을 userId에 넣는다.
}

//4.자원반납
rs.close();
ps.close();
conn.close();
//5.성공여부에 따른 페이지 이동
System.out.println("loginid :" + userId); //성공했다면 정상적으로 userId 출력
	
if(userId.equals("")){//userId가 null이라면
    response.sendRedirect("index.jsp"); //index.jsp로 돌려보낸다.
}else{ //userId에 정상적인 값이 들어왔다면
    //userId를 세션에 저장해서 로그인 여부를 확인할 수 있도록한다.
    session.setAttribute("loginId", userId); //세션값을 할당해준다.
    response.sendRedirect("main.jsp"); //세션값을 할당하고 main.jsp로 보낸다.
}
%>

<main.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//로그인 하지 않은 사람은 index.jsp로 보낸다
String loginId= (String)session.getAttribute("loginId"); //name이 loginId인 세션값을 받아와서 변수 loginId에 넣는다.
if(loginId==null){ //세션값을 받아오지 못했다면
    response.sendRedirect("index.jsp"); //index.jsp로 보낸다.
}
%>
<html>
    <head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
    </head>
    <body>
    	<h1>메인페이지</h1>
    	${sessionScope.loginId}님, 반갑습니다.<!-- EL태그로 세션값 받아오기 -->
    	<button onclick="location.href='logout.jsp'">로그아웃</button><!-- 클릭시 logout.jsp로이동 -->
    	<hr/>
    	<jsp:include page="memberList.jsp"/><!-- include를 이용해 memberList.jsp 페이지 불러오기 -->
    </body>
</html>

<memberList.jsp>

<%
//1. DB접속
Context ctx = new InitialContext(); //context객체화
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Oracle");//name이 jdbc/Oracle인 Resource를 찾아 DataSource형태로 변환
Connection conn = ds.getConnection(); //DataSource를 통해 Connection 가져오기
//2. 쿼리실행
String sql = "SELECT id,pw,name,age,gender,email FROM member"; //쿼리 준비
PreparedStatement ps = conn.prepareStatement(sql);//Connection을 통해 PreparedStatement준비
ResultSet rs = ps.executeQuery(); //SELECT문은 ResultSet으로 반환됨, SELECT문은 executeQuery()로 실행
%>
<html>
    <head>
	<meta charset="UTF-8">
	<title>회원리스트</title>
    	<style>
    	    table,th,td{
    		border:1px solid black;
    		border-collapse: collapse;
    		padding: 5px 10px;
    		text-align:center;
    	    }
    	</style>
    </head>
    <body>
	<h2>회원리스트</h2>
	    <table>
		<tr>
		  <th>아이디</th>
		  <th>비밀번호</th>
		  <th>이름</th>
		  <th>나이</th>
		  <th>성별</th>
		  <th>이메일</th>
		  <th>삭제</th>
		</tr>
		<% while(rs.next()){%> <!-- 다음값이 존재한다면 -->
		<tr>
		  <td><%=rs.getString("id")%></td> <!-- 쿼리 반환값의 id를 테이블에 넣는다. -->
		  <td><%=rs.getString("pw")%></td> <!-- 쿼리 반환값의 pw를 테이블에 넣는다. -->
		  <td><%=rs.getString("name")%></td> <!-- 쿼리 반환값의 name을 테이블에 넣는다. -->
		  <td><%=rs.getString("age")%></td> <!-- 쿼리 반환값의 age를 테이블에 넣는다. -->
		  <td><%=rs.getString("gender")%></td> <!-- 쿼리 반환값의 gender를 테이블에 넣는다. -->
		  <td><%=rs.getString("email")%></td> <!-- 쿼리 반환값의 email를 테이블에 넣는다. -->
		  <!-- 클릭시 delete.jsp로 이동하는데 ?뒤는 파라메터 값으로 delId(값은 쿼리 반환값의 id)라는 파라메터를 보낸다. -->
		  <td><a href="delete.jsp?delId=<%=rs.getString("id")%>">삭제</a></td>
		</tr>
		<% }%>
	  </table>
	  <%
	    rs.close();
	    ps.close();
	    conn.close();
	  %>
    </body>
</html>

[로그아웃]


<logout.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//로그인 : 해당 ID와 PW를 만족하는 값을 찾아서 session에 넣는 기능
//로그아웃 : 세션에 있는 값을 지우는 기능
session.removeAttribute("loginId");//이름이 loginId인 세션값을 지우고
response.sendRedirect("index.jsp"); //index.jsp로 보낸다.
%>

[회원 삭제]


<delete.jsp>

<%
String delId = request.getParameter("delId"); //name이 delId인 파라메터의 값을 변수 delId에 넣는다.
System.out.println("삭제할아이디:"+delId); //delId가 잘 들어왔는지 출력
//1.DB접속
Context ctx = new InitialContext(); //context객체화
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Oracle");//name이 jdbc/Oracle인 Resource를 찾아 DataSource형태로 변환
Connection conn = ds.getConnection(); //DataSource를 통해 Connection 가져오기
//2.쿼리실행
String sql = "DELETE FROM member WHERE id=?"; //쿼리준비
PreparedStatement ps = conn.prepareStatement(sql); //Connection을 통해 쿼리를 실행 해줄  PreparedStatement 준비
ps.setString(1, delId); // ? 인덱스 1에 delId값 넣기
int success = ps.executeUpdate(); //쿼리실행, 성공한 쿼리개수에 따라 int로 반환
//3.자원반납
ps.close();
conn.close();
%>
<script>
<%if(success > 0){ %> //성공한 쿼리가 하나라도 있으면
	alert("삭제에 성공하였습니다."); //성공 알림창 띄우기
<%}else{%> //성공한 쿼리가 하나도 없으면
	alert("삭제에 실패하였습니다."); //삭제 알림창 띄우기
<%}%>
	location.href="main.jsp"; //성공 실패에 관계없이 main.jsp로 이동
</script>

좋은 웹페이지 즐겨찾기