📌 UpdateForm 수정
<%-- /jsp2/src/main/webapp/model1/member/updateForm.jsp
수정 전 기존의 회원정보를 화면에 출력하기
1. id 파라미터 조회.
2. login 정보 조회.
로그아웃상태 : 로그인하세요. 메세지 출력. loginForm.jsp 페이지 이동
3. login 정보 조회2
관리자가 아니면서 다른사람 정보 수정 하는 경우.
내정보만 수정이 가능합니다. main.jsp 페이지로 이동
4. id 정보를 db에서 읽어서 화면에 출력하기.
--%>
<%@page import="model.MemberDao"%>
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//1.파라미터 조회
String id = request.getParameter("id");
//2. login 정보 조회
String login = (String)session.getAttribute("login");
if (login==null) { %>
<script>
alert("로그인 하세요")
location.href='loginForm.jsp'
</script>
<%--관리자 일때 아닐때 --%>
<% } else if (!login.equals("admin") && !id.equals(login)) { %>
<script>
//관리자 아닐때
alert("내정보만 수정이 가능합니다.")
location.href='main.jsp'
</script>
<%-- 관리자 일때 --%>
<% } else {
Member mem = new MemberDao().selectOne(id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 수정</title>
<link rel="stylesheet" href="../../css/main.css">
<script>
function win_passchg() {
let op = "width=500,height=250,left=50,top=150"
open("passwordForm.jsp","",op)
}
</script>
</head>
<body>
<form action="update.jsp" name="f" method="post"
onsubmit="return inputcheck(this)">
<input type = "hidden" name = "picture" value = "<%=mem.getPicture() %>">
<table width="300"><caption>회원 정보 수정</caption>
<tr><td rowspan = "4" valign = "bottom">
<img src= "picture/<%= mem.getPicture() %>"
width = "100" height="120" id="pic"><br>
<font size = "1"><a href = "javascript:win_upload()">사진수정</a></font>
</td><th>아이디</th>
<td><input type ="text" name ="id" readonly value = "<%=mem.getId() %>"></td>
<tr><th>비밀번호</th><td><input type="password" name="pass"></td></tr>
<tr><th>이름</th>
<td><input type ="text" name="name" value="<%=mem.getName() %>"></td></tr>
<tr><th>성별</th>
<td><input type = "radio" name = "gender" value="1"
<%=mem.getGender() == 1?"checked":"" %>>남
<input type = "radio" name = "gender" value="2"
<%=mem.getGender() == 2?"checked":"" %>>여</td></tr>
<tr><th>전화번호</th>
<td colspan="2"><input type="text" name ="tel"
value="<%=mem.getTel() %>"></td></tr>
<tr><th>이메일</th><td colspan="2">
<input type="text" name="email" value="<%=mem.getEmail()%>"></td></tr>
<tr><td colspan = "3"><input type ="submit" value="회원수정">
<%-- !login.equals("admin") : 관리자 아닌 경우
id.equals("admin") : 관리자. 관리자 정보 수정
--%>
<% if(!login.equals("admin")||id.equals("admin")) {%>
<%--if(login.equals("admin")) { --%>
<input type = "button" value="비밀번호수정" onclick="win_passchg()">
<% } %></td></tr>
</table>
</form>
</body>
</html>
<% } %>
📌 Update
<%-- /jsp2/src/main/webapp/model1/member/update.jsp
1.모든 파라미터 정보를 Member 객체에 저장.
//회원등록이랑 비슷 파라미터 picture id(read only) gender tel email 7개
2.입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
관리자인경우 관리자비밀번호로 비교하기.
본인인 경우 본인의 비밀번호로 비교하기.
-비밀번호가 틀린 경우 : "비밀번호 오류" 메세지 출력
updaterForm.jsp 페이지 이동.
3.비밀번호가 맞는 경우
파라미터를 저장하고 있는 Member 객체를 이용하여 db정보 수정.
boolean MemberDao.update(Member)
결과가 false면 수정 실패 메세지 출력 후, updateForm.jsp 페이지 이동
결과가 true면 수정 성공 info.jsp 페이지 이동
--%>
<%@page import="model.Member"%>
<%@page import="model.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- /jsp2/src/main/webapp/model1/member/update.jsp
1.모든 파라미터 정보를 Member 객체에 저장.
//회원등록이랑 비슷 파라미터 picture id(read only) gender tel email 7개
2.입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
관리자인경우 관리자비밀번호로 비교하기.
본인인 경우 본인의 비밀번호로 비교하기.
-비밀번호가 틀린 경우 : "비밀번호 오류" 메세지 출력
updaterForm.jsp 페이지 이동.
3.비밀번호가 맞는 경우
파라미터를 저장하고 있는 Member 객체를 이용하여 db정보 수정.
boolean MemberDao.update(Member)
결과가 false면 수정 실패 메세지 출력 후, updateForm.jsp 페이지 이동
결과가 true면 수정 성공 info.jsp 페이지 이동
--%>
<%
request.setCharacterEncoding("UTF-8");
//1.모든 파라미터 정보를 Member 객체에 저장.
Member mem = new Member(); //Member 객체 생성
//request.getParameter("id") : id의 입력값
mem.setId(request.getParameter("id"));
mem.setPass(request.getParameter("pass"));
mem.setName(request.getParameter("name"));
mem.setGender(Integer.parseInt(request.getParameter("gender")));
mem.setTel(request.getParameter("tel"));
mem.setEmail(request.getParameter("email"));
mem.setPicture(request.getParameter("picture"));
//Member 객체의 내용을 db에 저장
//MemberDao 자바클래스 호출하는 방식.
//2.입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
String login = (String) session.getAttribute("login");
MemberDao dao = new MemberDao();
Member dbMem = dao.selectOne(login);
String msg = "비밀번호가 틀립니다.";
String url = "updateForm.jsp?id="+mem.getId();
if(mem.getPass().equals(dbMem.getPass())) {
if(dao.update(mem)) {
msg = "회원정보 수정이 완료되었습니다.";
url = "info.jsp?id="+mem.getId();
} else {
msg = "회원 정보 수정시 오류발생.";
}
}
%>
<script>
alert("<%=msg %>")
location.href="<%= url %>"
</script>
📌 MemberDao.java 에 내용추가
public Member selectOne(String id) { //입력한 아이디 값
Connection conn = DBConnection.getConnection();
String sql = "select * From member where id = ?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
//ResultSet executeQuery() : select 구문을 실행해주는 메서드.
rs = pstmt.executeQuery();
if(rs.next()) { //id에 해당하는 레코드 존재하는지?
Member mem = new Member(); //데이버 베이스에 있는 값들을 login.jsp로 이동시키는 역할
mem.setId(rs.getString("id"));
mem.setPass(rs.getString("pass"));
mem.setName(rs.getString("name"));
mem.setGender(rs.getInt("gender"));
mem.setTel(rs.getString("tel"));
mem.setEmail(rs.getString("email"));
mem.setPicture(rs.getString("picture"));
return mem;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public boolean update(Member mem) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set name=?,gender=?,email=?,"
+ "tel=?,picture=? where id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mem.getName());
pstmt.setInt(2, mem.getGender());
pstmt.setString(3, mem.getTel());
pstmt.setString(4, mem.getEmail());
pstmt.setString(5, mem.getPicture());
pstmt.setString(6, mem.getId());
return pstmt.executeUpdate()>0; //>0 수정된내용이 있다 true 수정
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false; //executeUpdate하다가 오류나면 return false
//(데이터없거나 오류상관없이)
}
'수업(국비지원) > JSP' 카테고리의 다른 글
| [JSP] MVC MODEL1 방식 - 회원정보 보기(list) (0) | 2023.04.19 |
|---|---|
| [JSP] MVC MODEL1 방식 - 회원 탈퇴,정보삭제(DeleteForm , Delete) (0) | 2023.04.19 |
| [JSP] MVC MODEL1 방식 - 회원관리, 로그인 정보제거, 회원 정보 보기(main, logout, info) (0) | 2023.04.19 |
| [JSP] JDBC (0) | 2023.04.19 |
| [JSP] MVC MODEL1 방식 - 로그인(loginForm, login) (0) | 2023.04.19 |