728x90
반응형
//MemberVO.java
package miniPrj04.member;
import java.util.Date;
public class MemberVO {
private String id;
private String pw;
private String name;
private int age;
private String gender;
private String phone;
private String email;
private String address;
private Date regidate;
public MemberVO() {
System.out.println("MemberVO 생성자 호출");
}
public MemberVO(String id, String pw, String name, int age, String gender, String phone, String email,
String address) {
super();
this.id = id;
this.pw = pw;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.email = email;
this.address = address;
}
public MemberVO(String id, String pw, String name, int age, String gender, String phone, String email, String address, Date regidate) {
super();
this.id = id;
this.pw = pw;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.email = email;
this.address = address;
this.regidate = regidate;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getRegidate() {
return regidate;
}
public void setRegidate(Date regidate) {
this.regidate = regidate;
}
}
//MemberDAO.java
package miniPrj04.member;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class MemberDAO {
private Connection conn;
private PreparedStatement pstmt;
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env"); //JDNI에 접근하기 위해 기본경로를 지정함
dataFactory = (DataSource)envContext.lookup("jdbc/oracle"); // 톰캣 context.xml에 설정한 name 값인 jdbc/oracle을 이용해 톰캣이 미리 연결한 DataSource를 받아옴
System.out.println("띵동");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//회원 조회
public List<MemberVO> listMembers(){
List<MemberVO> membersList = new ArrayList<MemberVO>();
try {
conn = dataFactory.getConnection();
String query = "select * from MEMBERFORM order by regidate desc";
pstmt = conn.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
String id = rs.getString("id");
String pw = rs.getString("pw");
String name = rs.getString("name");
int age = rs.getInt("age");
String gender = rs.getString("gender");
String phone = rs.getString("phone");
String email = rs.getString("email");
String address = rs.getString("address");
Date regidate = rs.getDate("regidate");
MemberVO memberVO = new MemberVO(id, pw, name, age, gender, phone, email, address, regidate);
membersList.add(memberVO);
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println("회원 조회 중 예외 발생");
e.printStackTrace();
}
return membersList;
}
//회원정보 추가
public void addMember(MemberVO m) {
try {
conn = dataFactory.getConnection();
String id = m.getId();
String pw = m.getPw();
String name = m.getName();
int age = m.getAge();
String gender = m.getGender();
String phone = m.getPhone();
String email = m.getEmail();
String address = m.getAddress();
String query = "insert into MEMBERFORM(id, pw, name, age, gender, phone, email, address) values(?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pw);
pstmt.setString(3, name);
pstmt.setInt(4, age);
pstmt.setString(5, gender);
pstmt.setString(6, phone);
pstmt.setString(7, email);
pstmt.setString(8, address);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println("회원 가입 중 오류");
e.printStackTrace();
}
}
//회원정보 찾기
public MemberVO findMember(String _id) {
MemberVO memInfo = null;
try {
conn = dataFactory.getConnection();
String query = "select * from MEMBERFORM where id=?";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, _id);
System.out.println(query);
ResultSet rs = pstmt.executeQuery();
rs.next();
String id = rs.getString("id");
String pw = rs.getString("pw");
String name = rs.getString("name");
int age = rs.getInt("age");
String gender = rs.getString("gender");
String phone = rs.getString("phone");
String email = rs.getString("email");
String address = rs.getString("address");
Date regidate = rs.getDate("regidate");
memInfo = new MemberVO(id, pw, name, age, gender, phone, email, address, regidate);
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println("회원 정보 찾기 중 오류");
e.printStackTrace();
}
return memInfo;
}
//회원정보 수정
public void modMember(MemberVO memberVO) {
String id = memberVO.getId();
String pw = memberVO.getPw();
String name = memberVO.getName();
int age = memberVO.getAge();
String gender = memberVO.getGender();
String phone = memberVO.getPhone();
String email = memberVO.getEmail();
String address = memberVO.getAddress();
try {
conn = dataFactory.getConnection();
String query = "update MEMBERFORM set pw = ?, name = ?, age = ?, gender = ?, phone = ?, email = ?, address = ? where id = ?";
System.out.println(query);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, pw);
pstmt.setString(2, name);
pstmt.setInt(3, age);
pstmt.setString(4, gender);
pstmt.setString(5, phone);
pstmt.setString(6, email);
pstmt.setString(7, address);
pstmt.setString(8, id);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println("회원 정보 수정 중 오류");
e.printStackTrace();
}
}
//회원정보 삭제
public void delMember(String id) {
try {
conn = dataFactory.getConnection();
String query = "delete from MEMBERFORM where id=?";
System.out.println(query);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, id);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println("회원 삭제 중 오류");
e.printStackTrace();
}
//MemberController.java
package miniPrj04.member;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//브라우저에서 요청시 두 단계로 요청이 이루어짐
@WebServlet("/member2/*")
public class MemberController extends HttpServlet {
private static final long serialVersionUID = 1L;
MemberDAO memberDAO;
public void init(ServletConfig config) throws ServletException {
memberDAO = new MemberDAO();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandler(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandler(request, response);
}
private void doHandler(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forwardPage = null;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String action = request.getPathInfo(); //URL에서 요청명을 가져옴
System.out.println("getPathInfo() : " + action );
//최초 요청이거나 action 값이 / listmembers.do면 회원목록을 출력함
if(action == null || action.equals("/listmembers.do")) {
List<MemberVO> membersList = memberDAO.listMembers();
request.setAttribute("membersList", membersList);
forwardPage = "/member/listmembers.jsp"; //member02폴더의 listmembers.jsp로 포워딩
}
else if(action.equals("/addMember.do")) {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String address = request.getParameter("address");
MemberVO memberVO = new MemberVO(id, pw, name, age, gender, phone, email, address);
memberDAO.addMember(memberVO);
forwardPage = "/member2/listmembers.do";
}
else if(action.equals("/memberForm.do")) {
forwardPage = "/member/memberForm.jsp";
}
else if(action.equals("/modMemberForm.do")) {
String id = request.getParameter("id");
MemberVO memInfo = memberDAO.findMember(id);
request.setAttribute("memInfo", memInfo);
forwardPage = "/member/modMemberForm.jsp";
}
else if(action.equals("/modMember.do")) {
try {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String address = request.getParameter("address");
MemberVO memberVO = new MemberVO(id, pw, name, age, gender, phone, email, address);
memberDAO.modMember(memberVO);
request.setAttribute("msg", "modified");
forwardPage = "/member2/listmembers.do";
} catch (Exception e) {
e.printStackTrace();
}
}
else if(action.equals("/delMember.do")) {
String id = request.getParameter("id");
memberDAO.delMember(id);
request.setAttribute("msg", "deleted");
forwardPage = "/member2/listmembers.do";
}
else{
//그 외에 다른 action 값은 회원 목록 출력
List<MemberVO> membersList = memberDAO.listMembers();
request.setAttribute("membersList", membersList);
forwardPage = "/member/listmembers.jsp";
}
//forwardPage에 지정한 요청명으로 다시 서블릿에 요청함
RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPage);
dispatcher.forward(request, response);
}
//memberForm.jsp 회원가입창
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>회원 가입창</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="memberForm.css">
<script type="text/javascript">
function fn_sendMember(){
var frmMember = document.frmMember;
var id = frmMember.id.value;
var pw = frmMember.pw.value;
var name = frmMember.name.value;
var age = parseInt(frmMember.age.value);
var gender = frmMember.gender.value;
var phone = parseInt(frmMember.phone.value);
var email = frmMember.email.value;
var address = frmMember.address.value;
//입력한 값들을 얻음
if(id.length==0 || id==""){
alert("아이디는 필수입니다.");
}
else if (pw.length==0 || pw==""){
alert("비밀번호는 필수입니다.");
}
else if (name.length==0 || name==""){
alert("이름은 필수입니다.");
}
else if (age.length==0 || age==""){
alert("나이는 필수입니다.");
}
else if (gender.length==0 || gender==""){
alert("성별은 필수입니다.");
}
else if (phone.length==0 || phone==""){
alert("핸드폰은 필수입니다.");
}
else if (email.length==0 || email==""){
alert("이메일은 필수입니다.");
}
else if (address.length==0 || address==""){
alert("주소는 필수입니다.");
}
else {
frmMember.method = "post"; //전송 방법을 post로 지정함
frmMember.action = "memberFrm"; //서블릿 매핑 이름 지정함
frmMember.submit(); //서블릿으로 전송함
}
}
function addHypen(obj) {
var number = obj.value.replace(/[^0-9]/g, "");
var phone = "";
if(number.length < 4) {
return number;
} else if(number.length < 7) {
phone += number.substr(0, 3);
phone += "-";
phone += number.substr(3);
} else if(number.length < 11) {
phone += number.substr(0, 3);
phone += "-";
phone += number.substr(3, 3);
phone += "-";
phone += number.substr(6);
} else {
phone += number.substr(0, 3);
phone += "-";
phone += number.substr(3, 4);
phone += "-";
phone += number.substr(7);
}
obj.value = phone;
}
</script>
</head>
<body>
<form action="${contextPath}/member2/addMember.do" method="post">
<h1 style="text-align: center;">회원 가입창</h1>
<table align="center">
<tr>
<td width="200">
<p align="right">아이디</p>
</td>
<td width="400">
<input type="text" name="id">
</td>
</tr>
<tr>
<td width="200">
<p align="right">비밀번호</p>
</td>
<td width="400">
<input type="password" name="pw">
</td>
</tr>
<tr>
<td width="200">
<p align="right">이름</p>
</td>
<td width="400">
<input type="text" name="name">
</td>
</tr>
<tr>
<td width="200">
<p align="right">나이</p>
</td>
<td width="400">
<input type="text" name="age">
</td>
</tr>
<tr>
<td width="200">
<p align="right">성별</p>
</td>
<td width="400">
<input type="radio" name="gender" value="남" checked >남
<input type="radio" name="gender" value="여" >여
</td>
</tr>
<tr>
<td width="200">
<p align="right">핸드폰</p>
</td>
<td width="400">
<input type="text" name="phone" onKeyup = "addHypen(this);">
</td>
</tr>
<tr>
<td width="200">
<p align="right">이메일</p>
</td>
<td width="400">
<input type="text" name="email">
</td>
</tr>
<tr>
<td width="200">
<p align="right">주소</p>
</td>
<td width="400">
<input type="text" name="address">
</td>
</tr>
<tr>
<td width="200">
<p align="right"> </p>
</td>
<td width="400">
<input type="submit" value="가입하기" onclick="fn_sendMember()">
<input type="reset" value="다시입력" onclick="history.back()">
</td>
</tr>
</table>
</form>
</body>
</html>
//listmembers.jsp 회원정보 리스트
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<style type="text/css">
.cls1{
font-size: 40px;
text-align: center;
}
.cls2{
font-size: 40px;
text-align: center;
}
</style>
<c:choose>
<c:when test="${msg == 'modified'}">
<script type="text/javascript">
window.onload=function(){
alert("회원 정보를 수정했습니다.");
}
</script>
</c:when>
</c:choose>
<c:choose>
<c:when test="${msg == 'deleted'}">
<script type="text/javascript">
window.onload=function(){
alert("회원 정보를 삭제했습니다.");
}
</script>
</c:when>
</c:choose>
</head>
<body>
<p class="cls1">회원정보</p>
<table align="center" border="1">
<tr align="center" bgcolor="lignthblue">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>나이</b></td>
<td width="7%"><b>성별</b></td>
<td width="7%"><b>핸드폰</b></td>
<td width="7%"><b>이메일</b></td>
<td width="7%"><b>주소</b></td>
<td width="7%"><b>가입일</b></td>
<td width="7%"><b>수정</b></td>
<td width="7%"><b>삭제</b></td>
</tr>
<c:choose>
<c:when test="${empty membersList }">
<td colspan="5" align="center">
<b>등록된 회원이 없습니다.</b>
</td>
</c:when>
<c:when test="${!empty membersList }">
<c:forEach var="mem" items="${membersList}">
<tr align="center">
<td>${mem.id }</td>
<td>${mem.pw }</td>
<td>${mem.name }</td>
<td>${mem.age }</td>
<td>${mem.gender }</td>
<td>${mem.phone }</td>
<td>${mem.email }</td>
<td>${mem.address }</td>
<td>${mem.regidate }</td>
<td><a href="${contextPath}/member2/modMemberForm.do?id=${mem.id}">수정</a></td>
<td><a href="${contextPath}/member2/delMember.do?id=${mem.id}">삭제</a></td>
</tr>
</c:forEach>
</c:when>
</c:choose>
</table>
<a href="${contextPath}/member2/memberForm.do"><p class="cls2">회원 가입하기</p></a>
</body>
</html>
회원 가입하기 클릭 후, 회원정보 추가
//modMemberForm.jsp 회원정보 수정창
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
<h1>회원 정보 수정</h1>
<!-- 수정하기 클릭시 컨트롤러에 /member/modMember.do로 요청함 -->
<form action="${contextPath}/member2/modMember.do?id=${memInfo.id}" method="post">
<h1 style="text-align: center;">회원 가입창</h1>
<table align="center">
<tr>
<td width="200">
<p align="right">아이디</p>
</td>
<td width="400"> <!-- 조회한 회원 정보를 텍스트로 표시함 -->
<input type="text" name="id" value="${memInfo.id}" disabled>
</td>
</tr>
<tr>
<td width="200">
<p align="right">비밀번호</p>
</td>
<td width="400">
<input type="password" name="pw" value="${memInfo.pw}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">이름</p>
</td>
<td width="400">
<input type="text" name="name" value="${memInfo.name}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">나이</p>
</td>
<td width="400">
<input type="text" name="age" value="${memInfo.age}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">성별</p>
</td>
<td width="400">
<input type="radio" name="gender" value="남" checked >남
<input type="radio" name="gender" value="여" >여
</td>
</tr>
<tr>
<td width="200">
<p align="right">핸드폰</p>
</td>
<td width="400">
<input type="text" name="phone" value="${memInfo.phone}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">이메일</p>
</td>
<td width="400">
<input type="text" name="email" value="${memInfo.email}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">주소</p>
</td>
<td width="400">
<input type="text" name="address" value="${memInfo.address}" >
</td>
</tr>
<tr>
<td width="200">
<p align="right">가입일</p>
</td>
<td width="400">
<input type="text" name="regidate" value="${memInfo.regidate}" disabled >
</td>
</tr>
<tr>
<td width="200">
<p align="right"> </p>
</td>
<td width="400">
<input type="submit" value="수정하기">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
수정 버튼 클릭 후, 회원정보 수정
삭제 버튼 클릭 후, 회원정보 삭제
끝
728x90
반응형
'Project Development > Java_programming' 카테고리의 다른 글
게시판 만들기 - model1 방식 (0) | 2021.12.20 |
---|---|
공지사항 페이지 레이아웃 (0) | 2021.12.15 |
비밀번호 찾기 - 메일 인증 (0) | 2021.12.15 |
아이디 찾기 - DB 연결 (0) | 2021.12.15 |
회원가입 - DB 연결 (0) | 2021.12.14 |
댓글