Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

IT BANK) JSP 16일차 - JSP(회원관리 페이지(SQL)2) 본문

JSP/IT BANK - JSP

IT BANK) JSP 16일차 - JSP(회원관리 페이지(SQL)2)

끈기JK 2022. 9. 28. 17:23

220928

 

 

// userInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>userInfo</title>
</head>
<body>
	<%@ include file="/session_quiz/header.jsp" %>
	
	<%
		String sessionId = (String)session.getAttribute("id");
		if(sessionId == null){
			response.sendRedirect("login.jsp");
			return;
		}
		request.setCharaterEncoding("utf-8");
		String reqId = request.getParameter("id");
		if(sessionId.equals(reqId) == false){
			response.sendRedirect("memberInfo.jsp");
			return;
		}
		
		MemberDAO memberDao = new MemberDAO();
		MemberDTO member = memberDao.selectId(reqId);
	%>
	<div align="center">
		<h1>개인 정보</h1>
		아이디 : <%=member.getId() %> <br>
		비밀번호 : <%=member.getPw() %> <br>
		이름 : <%=member.getUserName() %> <br>
		주소 : <%=member.getAddress() %> <br>
		전화번호 : <%=member.getMobile() %> <br>
		<button type="button" onclick="location.href='update.jsp?id=<%=member.getId() %>'">회원 수정</button>
		<button type="button" onclick="location.href='delete.jsp?id=<%=member.getId() %>'">회원 삭제</button>
	</div>
		<%@ include file="/session_quiz/footer.jsp" %>	
</body>
</html>

 

// update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = (String)session.getAttribute("id");
	if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>update</title>
<script src="check.js"></script>
</head>
<body>
	<%@ include file="/session_quiz/header.jsp" %>
	
	<div align="center">
		<h1>회원 수정</h1>
		<table>
		<tr><td>
			<form action="updateService.jsp" method="post" id="f">
				<input type="text" id="id" value="<%=id %>" disabled="disabled"><br>
				<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
				<input type="password" name="confirm" placeholder="비밀번호 확인 " id="confirm" onchange="pwCheck()">
				<label id="label">(*필수 체크)</label><br>
				<input type="text" name="userName" id="userName" value="<%=session.getAttribute("userName") %>" ><br>
				<input type="text" name="address" value="<%=session.getAttribute("address") %>" ><br>
				<input type="text" name="mobile" value="<%=session.getAttribute("mobile") %>" ><br>
				<input type="button" value="회원수정" onclick="allCheck()"><br>
			</form>
		</td></tr>
		</table>
	</div>
	<%@ include file="/session_quiz/footer.jsp" %>
</body>
</html>

 

// updateService.jsp
<%@page import="session_quiz.MemberDAO"%>
<%@page import="session_quiz.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%

	String id = (String)session.getAttribute("id");
	if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	}
	
	request.setCharacterEncoding("utf-8");
	String pw = request.getParameter("pw");
	String confirm = request.getParameter("confirm");
	String userName = request.getParameter("userName");
	String address = request.getParameter("address");
	String mobile = request.getParameter("mobile");
	
	if(pw == "" || userName == ""){
		response.sendRedirect("update.jsp");
		return;
	}
	if(pw.equals(confirm) == false){
		response.sendRedirect("update.jsp");
		return;
	}
	
	MemberDTO member = new MemberDTO();
	member.setId(id);
	member.setPw(pw);
	member.setConfirm(confirm);
	member.setUserName(userName);
	member.setAddress(address);
	member.setMobile(mobile);
	
	MemberDAO memberDao = new MemberDAO();
	memberDao.update(member);
%>
<script>alert('회원 수정 완료'); location.href='index.jsp';</script>
// memberDAO.java 추가
public void update(MemberDTO member) {
    String sql = "UPDATE session_quiz SET pw=?, username=?, address=?, mobile=? WHERE id=?";
    PreparedStatement ps = null;

    try {
        ps = con.prepareStatement(sql);
        ps.setString(1, member.getPw());
        ps.setString(2, member.getUserName());
        ps.setString(3, member.getAddress());
        ps.setString(4, member.getMobile());
        ps.setString(5, member.getId());
        ps.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

// delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String id = (String)session.getAttribute("id");
	if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>delete</title>
</head>
<body>
	<%@ include file="/session_quiz/header.jsp" %>
	<div align="center">
		<h1>회원 탈퇴</h1>
		<table>
		<tr><td>
			<form action="deleteService.jsp" method="post" id="f">
				<input type="text" value="<%=session.getAttribute("id") %>" readonly="readonly"> <br>
				<input type="password" name="pw" placeholder="비밀번호"><br>
				<input type="password" name="confirm" placeholder="비밀번호 확인" ><br>
				<input type="submit" value="탈퇴"><br>
			</form>
		</td></tr>
		</table>
	</div>
	<%@ include file="/session_quiz/footer.jsp" %>
</body>
</html>

 

// deleteService.jsp
<%@page import="session_quiz.MemberDTO"%>
<%@page import="session_quiz.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String id = (String)session.getAttribute("id");
	if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	}
	
	request.setCharacterEncoding("UTF-8");
	String pw = request.getParameter("pw");
	String confirm = request.getParameter("confirm");
	
	if(pw == ""){
		response.sendRedirect("delete.jsp");
		return;
	}
	if(pw.equals(confirm) == false){
		response.sendRedirect("delete.jsp");
		return;
	}
	
	MemberDAO memberDao = new MemberDAO();
	MemberDTO member = memberDao.selectId(id);
	String msg = "", path = "";
	if(member.getPw().equals(pw)){
		memberDao.delete(id);
		session.invalidate();
		msg = "회원 삭제 완료";
		path = "index.jsp";
	}else{
		msg = "입력 정보를 확인하세요.";
		path = "delete.jsp";
	}
%>    
<script>alert('<%=msg%>'); location.href='<%=path %>';</script>
// MemberDAO.java 추가
public void delete(String id) {
    String sql = "DELETE FROM session_quiz WHERE id=?";
    PreparedStatement ps = null;

    try {
        ps = con.prepareStatement(sql);
        ps.setString(1, id);
        ps.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

 

■ 회원 목록 페이지별 표시

 

-ROWNUM rn : rn 이라는 컬럼명으로 번호 매겨서 보여준다.

SQL> SELECT ROWNUM rn, id FROM session_quiz;

        RN ID
---------- ----------------------------------------
         1 user1
         2 user2
         3 user3
         4 user4
         5 user5
         6 user6
         7 user7
         8 user8
         9 user9

9 rows selected.

 

-RN 1~3 가져오기

DB에서 데이터 가져올때 필터링해서 가져와야 부하 적게 든다.

 

다음 문장은 에러 발생한다. ROWNUM rn 부분이 나머지 수행 후 수행되기 때문이다.

SQL> SELECT ROWNUM rn, id FROM session_quiz WHERE rn >= 1 AND rn <= 3;
SELECT ROWNUM rn, id FROM session_quiz WHERE rn >= 1 AND rn <= 3
                                                         *
ERROR at line 1:
ORA-00904: "RN": invalid identifier

 

( ) 부분을 A로 지칭하는 코드. 아래와 같이 치면 수행 가능하다.

SQL> SELECT A.rn, A.id FROM (SELECT ROWNUM rn, id FROM session_quiz)A;

        RN ID
---------- ----------------------------------------
         1 user1
         2 user2
         3 user3
         4 user4
         5 user5
         6 user6
         7 user7
         8 user8
         9 user9

9 rows selected.

여기서 WHERE 부분을 뒤에 추가하면 RN 1~3을 따로 뽑을 수 있다.

SQL> SELECT A.rn, A.id FROM (SELECT ROWNUM rn, id FROM session_quiz)A WHERE rn >= 1 AND rn <= 3;

        RN ID
---------- ----------------------------------------
         1 user1
         2 user2
         3 user3

 

-rn >= ? AND rn <= ? 에서 ?에 넣을 값 구하는 방법

페이지당 3개씩 글을 보여주고 싶으면 아래와 같이 자른다.

시작값 구하는 방법: 3-3+1 으로 계산한다. 

페이지당 4개씩 글을 보여주는 방법

 

memberInfo.jsp (회원 정보) 도 다음과 같이 수정한다.

// memberInfo.jsp 수정
<%@page import="session_quiz.MemberDAO"%>
<%@page import="session_quiz.MemberDTO"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberInfo</title>
</head>
<body>
	<%@ include file="/session_quiz/header.jsp" %>
	<div align="center">
		<h1>회원 목록</h1>
		
		<%
          		 // page별 목록 보기 추가
			String cp = request.getParameter("currentPage");
			int currentPage = 0;
			
			try {
				currentPage = Integer.parseInt(cp);
			}catch (Exception e){
				currentPage = 1;
			}
			
			if(currentPage < 1)
				currentPage = 1;
			
			// 한 페이지에 출력할 회원 최대수 
			int pageBlock = 3;
            
      	   	 	int end = currentPage * pageBlock;
			int begin = end - pageBlock +1;
			
			/*
                        currentPage = 1;
                        end = currentPage(1) * pageBlock(3);
                        begin = end(3) - pageBlock(3) + 1;

                        currentPage = 2;
                        end = currentPage(2) * pageBlock(3);
                        begin = end(6) - pageBlock(3) + 1;
			*/
			
			int end = currentPage * pageBlock;
			int begin = end - pageBlock + 1;
			// 추가 종료
			
			MemberDAO memberDao = new MemberDAO();
			ArrayList<MemberDTO> members = memberDao.list(begin, end);
			if(members.isEmpty() == true){
				out.print("<h1> 등록된 데이터가 존재하지 않습니다. </h1>");
				return;
			}else{
		%>
				<table border=1>
					<thead>
						<tr>
							<th>아이디</th>
							<th>이름</th>
							<th>전화번호</th>
						</tr>
					</thead>
					<tbody>
					<%for(MemberDTO member : members){ %>
						<tr>
							<td onclick="location.href='userInfo.jsp?id=<%=member.getId()%>'">
								<%=member.getId() %>
							</td>
							<td><%=member.getUserName() %></td>
							<td><%=member.getMobile() %></td>
						</tr>
					<%} %>
					</tbody>
				</table>
                <!-- page별 목록 보기 추가 -->
                <a href="#">[이전] </a>
                <a href="memberInfo.jsp?currentPage=1"> 1 </a>
                <a href="#"> 2 </a>
                <a href="memberInfo.jsp?currentPage=3"> 3 </a>
                <a href="#"> [다음]</a>
                <!-- 추가 종료 -->
		<%} %>
	</div>
	<%@ include file="/session_quiz/footer.jsp" %>
</body>
</html>