개발자입니다
IT BANK) JSP 16일차 - JSP(회원관리 페이지(SQL)2) 본문
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>
'JSP > IT BANK - JSP' 카테고리의 다른 글
IT BANK) JSP 18일차 - JSP(회원관리 페이지(SQL)2) (0) | 2022.09.30 |
---|---|
IT BANK) JSP 17일차 - JSP(회원관리 페이지(SQL)2) (31) | 2022.09.29 |
IT BANK) JSP 15일차 - JSP(회원관리 페이지(SQL)2) (31) | 2022.09.27 |
IT BANK) JSP 14일차 - JSP(회원관리 페이지(SQL)) (0) | 2022.09.26 |
IT BANK) JSP 13일차 - JSP(Oracle 설치, 명령어) (0) | 2022.09.23 |