create table userinfo(userid varchar2(100) primary key,password varchar2(100) ,name varchar2(200),email varchar2(300),status number(1));
📃UserinfoDTO.java
package xyz.itwill.dto; /* 이름 널? 유형 -------- -------- ------------- USERID NOT NULL VARCHAR2(100) PASSWORD VARCHAR2(100) NAME VARCHAR2(200) EMAIL VARCHAR2(300) STATUS NUMBER(1) */ public class UserinfoDTO { private String userid; private String password; private String name; private String email; private int status; // public UserinfoDTO() { // TODO Auto-generated constructor stub } public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } }
◈ UserinfoDAO 만들기 전에 필요한 파일 가져오기
-JdbcDAO.java
-context.xml
-ojdbc11.jar
📃UserinfoModelOneDAO.java
package xyz.itwill.dao; // import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; // import xyz.itwill.dto.UserinfoDTO; // public class UserinfoModelOneDAO extends JdbcDAO { private static UserinfoModelOneDAO _dao; // private UserinfoModelOneDAO() { // TODO Auto-generated constructor stub } // static { _dao=new UserinfoModelOneDAO(); } // public static UserinfoModelOneDAO getDAO() { return _dao; } // public int insertUserinfo(UserinfoDTO userinfo) { Connection con=null; PreparedStatement pstmt=null; int rows=0; try { con=getConnection(); // String sql="insert into userinfo values(?,?,?,?,?)"; pstmt=con.prepareStatement(sql); pstmt.setString(1, userinfo.getUserid()); pstmt.setString(2, userinfo.getPassword()); pstmt.setString(3, userinfo.getName()); pstmt.setString(4, userinfo.getEmail()); pstmt.setInt(5, userinfo.getStatus()); // rows=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("[에러]insertUserinfo() 메소드의 SQL 오류 = "+e.getMessage()); } finally { close(con, pstmt); } return rows; } // public int updateUserinfo(UserinfoDTO userinfo) { Connection con=null; PreparedStatement pstmt=null; int rows=0; try { con=getConnection(); // String sql="update userinfo set password=?,name=?,email=?,status=? where userid=?"; pstmt=con.prepareStatement(sql); pstmt.setString(1, userinfo.getPassword()); pstmt.setString(2, userinfo.getName()); pstmt.setString(3, userinfo.getEmail()); pstmt.setInt(4, userinfo.getStatus()); pstmt.setString(5, userinfo.getUserid()); // rows=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("[에러]updateUserinfo() 메소드의 SQL 오류 = "+e.getMessage()); } finally { close(con, pstmt); } return rows; } // public int deleteUserinfo(String userid) { Connection con=null; PreparedStatement pstmt=null; int rows=0; try { con=getConnection(); // String sql="delete from userinfo where userid=?"; pstmt=con.prepareStatement(sql); pstmt.setString(1, userid); // rows=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("[에러]deleteUserinfo() 메소드의 SQL 오류 = "+e.getMessage()); } finally { close(con, pstmt); } return rows; } // public UserinfoDTO selectUserinfo(String userid) { Connection con=null; PreparedStatement pstmt=null; ResultSet rs=null; UserinfoDTO userinfo=null; try { con=getConnection(); // String sql="select * from userinfo where userid=?"; pstmt=con.prepareStatement(sql); pstmt.setString(1, userid); // rs=pstmt.executeQuery(); // if(rs.next()) { userinfo=new UserinfoDTO(); userinfo.setUserid(rs.getString("userid")); userinfo.setPassword(rs.getString("password")); userinfo.setName(rs.getString("name")); userinfo.setEmail(rs.getString("email")); userinfo.setStatus(rs.getInt("status")); } } catch (SQLException e) { System.out.println("[에러]selectUserinfo() 메소드의 SQL 오류 = "+e.getMessage()); } finally { close(con, pstmt, rs); } return userinfo; } // public List<UserinfoDTO> selectUserinfoList() { Connection con=null; PreparedStatement pstmt=null; ResultSet rs=null; List<UserinfoDTO> userinfoList=new ArrayList<>(); try { con=getConnection(); // String sql="select * from userinfo order by userid"; pstmt=con.prepareStatement(sql); // rs=pstmt.executeQuery(); // while(rs.next()) { UserinfoDTO userinfo=new UserinfoDTO(); userinfo.setUserid(rs.getString("userid")); userinfo.setPassword(rs.getString("password")); userinfo.setName(rs.getString("name")); userinfo.setEmail(rs.getString("email")); userinfo.setStatus(rs.getInt("status")); userinfoList.add(userinfo); } } catch (SQLException e) { System.out.println("[에러]selectUserinfoList() 메소드의 SQL 오류 = "+e.getMessage()); } finally { close(con, pstmt, rs); } return userinfoList; } }
📢사용자로부터 회원정보를 입력받기 위한 JSP 문서 - 관리자만 요청 가능한 페이지
→ [회원등록] 태그를 클릭한 경우 회원정보 삽입페이지(user_write_action.jsp)로 이동 - 입력값 전달
→ [로그인] 태그를 클릭한 경우 로그인정보 입력페이지(user_login.jsp)로 이동📃user_write.jsp
<%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 사용자로부터 회원정보를 입력받기 위한 JSP 문서 - 관리자만 요청 가능한 페이지 --%> <%-- → [회원등록] 태그를 클릭한 경우 회원정보 삽입페이지(user_write_action.jsp)로 이동 - 입력값 전달 --%> <%-- → [로그인] 태그를 클릭한 경우 로그인정보 입력페이지(user_login.jsp)로 이동 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); //비로그인 사용자이거나 로그인 사용자가 관리자가 아닌 경우 - 비정상적인 요청 if(loginUserinfo==null || loginUserinfo.getStatus()!=9) { response.sendRedirect("user_error.jsp"); return; } String message=(String)session.getAttribute("message"); if(message==null) { message=""; } else { session.removeAttribute("message"); } // UserinfoDTO userinfo=(UserinfoDTO)session.getAttribute("userinfo"); if(userinfo==null) { userinfo=new UserinfoDTO(); userinfo.setUserid(""); userinfo.setPassword(""); userinfo.setName(""); userinfo.setEmail(""); userinfo.setStatus(1); } else { session.removeAttribute("userinfo"); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MVC</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=stylesheet href="css/user.css" type="text/css"> <script language="JavaScript"> function userCreate() { if ( f.userid.value == "" ) { alert("아이디를 입력하십시요."); f.userid.focus(); return; } if ( f.password.value == "" ) { alert("비밀번호를 입력하십시요."); f.password.focus(); return; } if ( f.name.value == "" ) { alert("이름을 입력하십시요."); f.name.focus(); return; } // f.action = "user_write_action.jsp"; f.submit(); } </script> </head> <body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0> <br> <table width=780 border=0 cellpadding=0 cellspacing=0> <tr> <td width="20"></td> <td style="color: red;"><%=message %></td> </tr> <tr> <td width="20"></td> <td> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="f4f4f4" height="22"> <b>회원관리 - 회원등록</b></td> </tr> </table> <br> <form name="f" method="post"> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">아이디</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="text" style="width:150" name="userid" value="<%=userinfo.getUserid()%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">비밀번호</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="password" style="width:150" name="password" value="<%=userinfo.getPassword()%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이름</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="text" style="width:240" name="name" value="<%=userinfo.getName()%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이메일</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="text" style="width:240" name="email" value="<%=userinfo.getEmail()%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">회원등급</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <select name="status"> <option value="1" <% if(userinfo.getStatus()==1) { %> selected <% } %>>일반회원</option> <option value="9" <% if(userinfo.getStatus()==9) { %> selected <% } %>>관리자</option> </select> </td> </tr> </table> </form> <br> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td align=center> <input type="button" value="회원등록" onClick="userCreate();"> <input type="button" value="로그인" onClick="location.href='user_login.jsp';"> </td> </tr> </table> </td> </tr> </table> </body> </html>
📢회원정보를 전달받아 USERINFO 테이블에 삽입하고 로그인정보 입력페이지(user_login.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서
📃user_write_action.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 회원정보를 전달받아 USERINFO 테이블에 삽입하고 로그인정보 입력페이지(user_login.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서 --%> <% if(request.getMethod().equals("GET")) { response.sendRedirect("user_error.jsp"); return; } request.setCharacterEncoding("utf-8"); // String userid=request.getParameter("userid"); String password=request.getParameter("password"); String name=request.getParameter("name"); String email=request.getParameter("email"); int status=Integer.parseInt(request.getParameter("status")); // UserinfoDTO userinfo=new UserinfoDTO(); userinfo.setUserid(userid); userinfo.setPassword(password); userinfo.setName(name); userinfo.setEmail(email); userinfo.setStatus(status); int rows=UserinfoModelOneDAO.getDAO().insertUserinfo(userinfo); // if(rows>0) {//회원등록이 성공한 경우 response.sendRedirect("user_login.jsp"); } else {//회원등록이 실패한 경우 - 전달받은 아이디에 대한 PK 제약조건 위반으로 인해 발생 session.setAttribute("message", "이미 사용중인 아이디를 입력 하였습니다."); session.setAttribute("userinfo", userinfo); response.sendRedirect("user_write.jsp"); } %>
📢에러메세지를 전달하는 JSP 문서
→ [로그인 페이지 이동] 태그를 클릭한 경우 로그인 정보 입력페이지(user_login.jsp)로 이동
📃user_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 에러메세지를 전달하는 JSP 문서 --%> <%-- → [로그인 페이지 이동] 태그를 클릭한 경우 로그인 정보 입력페이지(user_login.jsp)로 이동 --%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> <style type="text/css"> body { text-align: center; } .message { color: red; font-size: 1.5em; } </style> </head> <body> <h1>에러페이지</h1> <hr> <p class="message">프로그램 실행에 예기치 못한 오류가 발생 하였거나 비정상적 방법으로 프로그램을 요청하여 오류가 발생 하였습니다.</p> <button type="button" onclick="location.href='user_login.jsp';">로그인 페이지 이동</button> </body> </html>
📢비로그인 사용자인 경우 사용자로부터 로그인정보를 입력받기 위한 JSP 문서
→[로그인] 태그를 클릭한 경우 로그인 처리페이지(user_login_action.jsp)로 이동 - 입력값 전달
📢로그인 사용자인 경우 환영메세지를 전달하는 JSP 문서
→ [회원목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동
→ [로그아웃] 태그를 클릭한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동
→ [회원등록] 태그를 클릭한 경우 회원정보 입력페이지(user_write.jsp)로 이동 - 관리자에게만 적용📃user_login.jsp
<%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 비로그인 사용자인 경우 사용자로부터 로그인정보를 입력받기 위한 JSP 문서 --%> <%-- →[로그인] 태그를 클릭한 경우 로그인 처리페이지(user_login_action.jsp)로 이동 - 입력값 전달 --%> <%-- 로그인 사용자인 경우 환영메세지를 전달하는 JSP 문서 --%> <%-- → [회원목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동 --%> <%-- → [로그아웃] 태그를 클릭한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동 --%> <%-- → [회원등록] 태그를 클릭한 경우 회원정보 입력페이지(user_write.jsp)로 이동 - 관리자에게만 적용 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); String message=(String)session.getAttribute("message"); if(message==null) { message=""; } else { session.removeAttribute("message"); } // String userid=(String)session.getAttribute("userid"); if(userid==null) { userid=""; } else { session.removeAttribute("userid"); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MVC</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=stylesheet href="css/user.css" type="text/css"> <script language="JavaScript"> function userLogin() { if ( f.userid.value == "" ) { alert("아이디를 입력하십시요."); f.userid.focus(); return; } if ( f.password.value == "" ) { alert("비밀번호를 입력하십시요."); f.password.focus(); return; } // f.action = "user_login_action.jsp"; f.submit(); } </script> </head> <body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0> <br> <table width=780 border=0 cellpadding=0 cellspacing=0> <tr> <td width="20"></td> <td style="color: red;"><%=message %></td> </tr> <tr> <td width="20"></td> <td> <!--contents--> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="f4f4f4" height="22"> <b>회원관리 - 로그인</b></td> </tr> </table> <br> <% if(loginUserinfo==null) {//비로그인 사용자인 경우 %> <!-- login Form --> <form name="f" method="post"> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">사용자 아이디</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="text" style="width:150" name="userid" value="<%=userid%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">비밀번호</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="password" style="width:150" name="password"> </td> </tr> </table> </form> <br> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td align=center> <input type="button" value="로그인" onClick="userLogin();"> </td> </tr> </table> <% } else {//로그인 사용자인 경우 %> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td align=center bgcolor="E6ECDE" height="22"> <%=loginUserinfo.getName() %>님, 환영합니다. </td> </tr> </table> <br> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td align=center> <button type="button" onclick="location.href='user_list.jsp';">회원목록</button> <button type="button" onclick="location.href='user_logout_action.jsp';">로그아웃</button> <% if(loginUserinfo.getStatus()==9) { %> <button type="button" onclick="location.href='user_write.jsp';">회원등록</button> <% } %> </td> </tr> </table> <% } %> </td> </tr> </table> </body> </html>
📢로그인 정보를 입력받아 USERINFO 테이블에 저장된 회원정보와 비교하여 인증 처리 후 로그인 정보 입력 페이지(user_login.jsp) 이동을 위한 URL 주소를 전달하는 JSP 문서
→ 인증 성공한 경우 세션에 권한 관련 정보를 속성값으로 저장
📃user_login_action.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 로그인 정보를 입력받아 USERINFO 테이블에 저장된 회원정보와 비교하여 인증 처리 후 로그인 정보 입력 페이지(user_login.jsp) 이동을 위한 URL 주소를 전달하는 JSP 문서 --%> <%-- → 인증 성공한 경우 세션에 권한 관련 정보를 속성값으로 저장 --%> <% if(request.getMethod().equals("GET")) { response.sendRedirect("user_error.jsp"); return; } String userid=request.getParameter("userid"); String password=request.getParameter("password"); // UserinfoDTO userinfo=UserinfoModelOneDAO.getDAO().selectUserinfo(userid); if(userinfo==null) {//아이디 인증 실패 session.setAttribute("message", "입력된 아이디가 존재하지 않습니다."); session.setAttribute("userid", userid); response.sendRedirect("user_login.jsp"); return; } // if(!userinfo.getPassword().equals(password)) {//비밀번호 인증 실패 session.setAttribute("message", "입력된 아이디가 잘못 되었거나 비밀번호가 맞지 않습니다."); session.setAttribute("userid", userid); response.sendRedirect("user_login.jsp"); return; } // //인증 성공 - 세션에 권한 관련 정보를 속성값으로 저장 session.setAttribute("loginUserinfo", userinfo); // response.sendRedirect("user_login.jsp"); %>
📢로그아웃 처리 후 로그인정보 입력페이지(user_login.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서
📃user_logout_action.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 로그아웃 처리 후 로그인정보 입력페이지(user_login.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서 --%> <% //session.removeAttribute("loginUserinfo"); session.invalidate(); // response.sendRedirect("user_login.jsp"); %>
📢USERINFO 테이블에 저장된 모든 회원정보를 검색하여 전달하는 JSP 문서 - 로그인 사용자만 요청 가능한 페이지
→ 회원정보에서 [회원이름]을 클릭한 경우 회원정보 출력페이지(user_view.jsp)로 이동 - 아이디 전달
→ [회원등록] 태그를 클릭한 경우 회원정보 입력페이지(user_write.jsp)로 이동 - 관리자에게만 제공
→ [로그아웃] 태그를 클릭한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동📃user_list.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="java.util.List"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- USERINFO 테이블에 저장된 모든 회원정보를 검색하여 전달하는 JSP 문서 - 로그인 사용자만 요청 가능한 페이지 --%> <%-- → 회원정보에서 [회원이름]을 클릭한 경우 회원정보 출력페이지(user_view.jsp)로 이동 - 아이디 전달 --%> <%-- → [회원등록] 태그를 클릭한 경우 회원정보 입력페이지(user_write.jsp)로 이동 - 관리자에게만 제공 --%> <%-- → [로그아웃] 태그를 클릭한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); //비로그인 사용자인 경우 - 비정상적인 요청 if(loginUserinfo==null) { response.sendRedirect("user_error.jsp"); return; } // List<UserinfoDTO> userinfoList=UserinfoModelOneDAO.getDAO().selectUserinfoList(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MVC</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=stylesheet href="css/user.css" type="text/css"> </head> <body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0> <br> <table width=780 border=0 cellpadding=0 cellspacing=0> <tr> <td width="20"></td> <td> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="f4f4f4" height="22"> <b>회원관리 - 회원목록</b></td> </tr> </table> <br> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td width=190 align=center bgcolor="E6ECDE" height="22">아이디</td> <td width=200 align=center bgcolor="E6ECDE">이름</td> <td width=200 align=center bgcolor="E6ECDE">이메일</td> </tr> <% for(UserinfoDTO userinfo:userinfoList) { %> <tr> <td width=190 align=center bgcolor="ffffff" height="20"> <%=userinfo.getUserid() %> </td> <td width=200 align=center bgcolor="ffffff"> <a href="user_view.jsp?userid=<%=userinfo.getUserid() %>" class="user"> <%=userinfo.getName() %> </a> </td> <td width=200 align=center bgcolor="ffffff"> <% if(userinfo.getEmail()!=null) { %> <%=userinfo.getEmail() %> <% } %> </td> </tr> <% } %> </table> <br> <table border="0" cellpadding="0" cellspacing="1" width="590"> <tr> <td align="right"> <% if(loginUserinfo.getStatus()==9) { %> <input type="button" value="회원등록" onclick="location.href='user_write.jsp';"/> <% } %> <input type="button" value="로그아웃" onclick="location.href='user_logout_action.jsp';"/> </td> </tr> </table> </td> </tr> </table> </body> </html>
📢아이디를 전달받아 USEINFO 테이블에 저장된 해당 아이디의 회원정보를 검색하여 전달하는 JSP 문서 - 로그인 사용자만 요청 가능한 페이지
→ [수정] 태그를 클릭한 경우 변경회원정보 입력페이지(user_modify.jsp)로 이동 - 아이디 전달
→ [삭제] 태그를 클릭한 경우 회원정보 삭제페이지(user_remove_action.jsp)로 이동 - 아이디 전달
→ [목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동 --%>
→ [수정] 태그와 [삭제] 태그는 관리자에게만 제공📃user_user_view.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 아이디를 전달받아 USEINFO 테이블에 저장된 해당 아이디의 회원정보를 검색하여 전달하는 JSP 문서 - 로그인 사용자만 요청 가능한 페이지 --%> <%-- → [수정] 태그를 클릭한 경우 변경회원정보 입력페이지(user_modify.jsp)로 이동 - 아이디 전달 --%> <%-- → [삭제] 태그를 클릭한 경우 회원정보 삭제페이지(user_remove_action.jsp)로 이동 - 아이디 전달 --%> <%-- → [목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동 --%> <%-- → [수정] 태그와 [삭제] 태그는 관리자에게만 제공 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); //비로그인 사용자인 경우 - 비정상적인 요청 if(loginUserinfo==null) { response.sendRedirect("user_error.jsp"); return; } // if(request.getParameter("userid")==null) {//전달값이 없는 경우 response.sendRedirect("user_error.jsp"); return; } // String userid=request.getParameter("userid"); // UserinfoDTO userinfo=UserinfoModelOneDAO.getDAO().selectUserinfo(userid); // if(userinfo==null) {//검색된 회원정보가 없는 경우 response.sendRedirect("user_error.jsp"); return; } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MVC</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=stylesheet href="css/user.css" type="text/css"> <script language="JavaScript"> function userRemove(userid) { if (confirm("정말로 삭제 하시겠습니까?") ) { location.href='user_remove_action.jsp?userid='+userid; } } </script> </head> <body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0> <br> <table width=780 border=0 cellpadding=0 cellspacing=0> <tr> <td width="20"></td> <td> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="f4f4f4" height="22"> <b>회원관리 - 회원정보</b></td> </tr> </table> <br> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">아이디</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <%=userinfo.getUserid() %> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이름</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <%=userinfo.getName() %> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이메일</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <% if(userinfo.getEmail()!=null) { %> <%=userinfo.getEmail() %> <% } %> </td> </tr> </table> <br> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td align=center> <% if(loginUserinfo.getStatus()==9) { %> <input type="button" value="수정" onClick="location.href='user_modify.jsp?userid=<%=userinfo.getUserid()%>';"> <input type="button" value="삭제" onClick="userRemove('<%=userinfo.getUserid()%>');"> <% } %> <input type="button" value="목록" onClick="location.href='user_list.jsp';"> </td> </tr> </table> </td> </tr> </table> </body> </html>
📢아이디를 전달받아 USEINFO 테이블에 저장된 해당 아이디의 회원정보를 검색하여 입력태그의 초기값으로 설정하고 변경할 회원정보를 사용자로부터 입력받기 위한 JSP 문서 - 관리자만 요청 가능한 페이지
→ [수정] 태그를 클릭한 경우 회원정보 변경페이지(user_modify_action.jsp)로 이동 - 입력값 전달
→ [목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동📃user_user_view.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 아이디를 전달받아 USEINFO 테이블에 저장된 해당 아이디의 회원정보를 검색하여 입력태그의 초기값으로 설정하고 변경할 회원정보를 사용자로부터 입력받기 위한 JSP 문서 - 관리자만 요청 가능한 페이지 --%> <%-- → [수정] 태그를 클릭한 경우 회원정보 변경페이지(user_modify_action.jsp)로 이동 - 입력값 전달 --%> <%-- → [목록] 태그를 클릭한 경우 회원목록 출력페이지(user_list.jsp)로 이동 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); //비로그인 사용자이거나 로그인 사용자가 관리자가 아닌 경우 - 비정상적인 요청 if(loginUserinfo==null || loginUserinfo.getStatus()!=9) { response.sendRedirect("user_error.jsp"); return; } // if(request.getParameter("userid")==null) {//전달값이 없는 경우 response.sendRedirect("user_error.jsp"); return; } // String userid=request.getParameter("userid"); // UserinfoDTO userinfo=UserinfoModelOneDAO.getDAO().selectUserinfo(userid); // if(userinfo==null) {//검색된 회원정보가 없는 경우 response.sendRedirect("user_error.jsp"); return; } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MVC</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=stylesheet href="css/user.css" type="text/css"> <script language="JavaScript"> function userModify() { if ( f.name.value == "" ) { alert("이름을 입력하십시요."); f.name.focus(); return false; } f.action = "user_modify_action.jsp"; f.submit(); } </script> </head> <body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0> <br> <table width=780 border=0 cellpadding=0 cellspacing=0> <tr> <td width="20"></td> <td> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="f4f4f4" height="22"> <b>회원관리 - 회원정보수정</b></td> </tr> </table> <br> <form name="f" method="post"> <input type="hidden" name="userid" value="<%=userinfo.getUserid()%>"> <table border="0" cellpadding="0" cellspacing="1" width="590" bgcolor="BBBBBB"> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">아이디</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <%=userinfo.getUserid()%> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">비밀번호</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="password" style="width:150" name="password"> <span style="color: red;">** 비밀번호를 변경하지 않을 경우 입력하지 마세요. **</span> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이름</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <input type="text" style="width:240" name="name" value="<%=userinfo.getName()%>"> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">이메일 주소</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <% if(userinfo.getEmail()!=null) { %> <input type="text" style="width:240" name="email" value="<%=userinfo.getEmail()%>"> <% } else { %> <input type="text" style="width:240" name="email"> <% } %> </td> </tr> <tr> <td width=100 align=center bgcolor="E6ECDE" height="22">회원등급</td> <td width=490 bgcolor="ffffff" style="padding-left:10px;"> <select name="status"> <option value="1" <% if(userinfo.getStatus()==1) { %> selected <% } %>>일반회원</option> <option value="9" <% if(userinfo.getStatus()==9) { %> selected <% } %>>관리자</option> </select> </td> </tr> </table> </form> <br> <table width=590 border=0 cellpadding=0 cellspacing=0> <tr> <td align=center> <input type="button" value="수정" onClick="userModify();"> <input type="button" value="목록" onClick="location.href='user_list.jsp';"> </td> </tr> </table> </td> </tr> </table> </body> </html>
📢회원정보를 전달받아 USERINFO 테이블에 저장된 해당 회원정보를 변경하고 회원정보 출력페이지(user_view.jsp)로 이동하는 URL 주소를 전달하는 JSP 문서
→ 아이디 전달
📃user_modify_action.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 회원정보를 전달받아 USERINFO 테이블에 저장된 해당 회원정보를 변경하고 회원정보 출력페이지(user_view.jsp)로 이동하는 URL 주소를 전달하는 JSP 문서 --%> <%-- → 아이디 전달 --%> <% if(request.getMethod().equals("GET")) { response.sendRedirect("user_error.jsp"); return; } request.setCharacterEncoding("utf-8"); // String userid=request.getParameter("userid"); String password=request.getParameter("password"); String name=request.getParameter("name"); String email=request.getParameter("email"); int status=Integer.parseInt(request.getParameter("status")); // UserinfoDTO userinfo=new UserinfoDTO(); userinfo.setUserid(userid); //비밀번호 전달값이 없는 경우 - 기존 회원의 비밀번호로 필드값 변경 if(password==null || password.equals("")) { userinfo.setPassword(UserinfoModelOneDAO.getDAO().selectUserinfo(userid).getPassword()); } else {//비밀번호 전달값이 있는 경우 - 비밀번호 전달값으로 필드값 변경 userinfo.setPassword(password); } userinfo.setName(name); userinfo.setEmail(email); userinfo.setStatus(status); // UserinfoModelOneDAO.getDAO().updateUserinfo(userinfo); // response.sendRedirect("user_view.jsp?userid="+userid); %>
📢아이디를 전달받아 USERINFO 테이블에 저장된 해당 아이디의 회원정보를 삭제하고 회원목록 출력페이지(user_list.jsp)로 이동하는 URL 주소를 전달하는 JSP 문서 - 관리자만 요청 가능한 페이지
→ 관리자가 자신의 계정을 삭제한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동
📃user_remove_action.jsp
<%@page import="xyz.itwill.dao.UserinfoModelOneDAO"%> <%@page import="xyz.itwill.dto.UserinfoDTO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 아이디를 전달받아 USERINFO 테이블에 저장된 해당 아이디의 회원정보를 삭제하고 회원목록 출력페이지(user_list.jsp)로 이동하는 URL 주소를 전달하는 JSP 문서 - 관리자만 요청 가능한 페이지 --%> <%-- → 관리자가 자신의 계정을 삭제한 경우 로그아웃 처리페이지(user_logout_action.jsp)로 이동 --%> <% UserinfoDTO loginUserinfo=(UserinfoDTO)session.getAttribute("loginUserinfo"); //비로그인 사용자이거나 로그인 사용자가 관리자가 아닌 경우 - 비정상적인 요청 if(loginUserinfo==null || loginUserinfo.getStatus()!=9) { response.sendRedirect("user_error.jsp"); return; } // if(request.getParameter("userid")==null) {//전달값이 없는 경우 response.sendRedirect("user_error.jsp"); return; } // String userid=request.getParameter("userid"); // UserinfoModelOneDAO.getDAO().deleteUserinfo(userid); // //로그인 사용자의 아이디와 삭제된 사용자의 아이디가 같은 경우 if(loginUserinfo.getUserid().equals(userid)) {//관리자가 자신의 계정을 삭제한 경우 response.sendRedirect("user_logout_action.jsp"); } else { response.sendRedirect("user_list.jsp"); } %>