----------------------------------

상담게시판 회원 가입 (아이디 중복 체크)



//memberInsertForm.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="ajaxUtil.js"></script>

<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function msg() {


}

</script>


</head>

<body onload="msg()">

<div>


<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>


<div>

<h3>[회원가입]</h3>

<form action="memberInsert.mem" method="post" id="memberForm">

* 등록된 전화로 통화가 가능한 경우에만 회원 가입이 완료됩니다.<br>

<table cellpadding="5" class="style01 borderTop borderBottom">

<tr>

<td class="tName" width="200px">*아이디<span style="font-size:9pt;">(20자 이내)</span></td>

<td class="bTitle"><input type="text" id="id" name="id"><a href="javascript:idCheck()">[아이디 중복확인]</a><span id="idMsg"></span></td>

</tr>

<tr>

<td class="tName" width="200px">*패스워드<span style="font-size:9pt;">(20자 이내)</span></td>

<td class="bTitle"><input type="password" id="pw" name="pw"><span id="pwMsg"></span></td>

</tr>

<tr>

<td class="tName" width="200px">*이름<span style="font-size:9pt;">(20자 이내)</span></td>

<td class="bTitle"><input type="text" id="name" name="name"><span id="nameMsg"></span></td>

</tr>

<tr>

<td class="tName" width="200px">*이메일<span style="font-size:9pt;">(100자 이내)</span></td>

<td class="bTitle"><input type="text" id="email" name="email" style="width:300px"><span id="emailMsg"></span></td>

</tr>

<tr>

<td class="tName" width="200px">*전화<span style="font-size:9pt;">(30자 이내)</span></td>

<td class="bTitle"><input type="text" id="tel" name="tel" style="width:300px"><span id="telMsg"></span></td>

</tr>

</table>

<br>

<a href="javascript:memberFormSubmit()">[확인]</a>

<span id="submitMsg"></span>

</form>

</div>

</div>


</body>

</html>






//MemberServlet.java

package com.test;


import java.io.IOException;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


public class MemberServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//서블릿 주소 분석

String uri = req.getRequestURI();

if (uri.indexOf("login.mem") != -1) {

login(req,resp);

}

if (uri.indexOf("logout.mem") != -1) {

logout(req,resp);

}

if (uri.indexOf("memberInfo.mem") != -1) {

memberInfo(req,resp);

}

if (uri.indexOf("memberInsertForm.mem") != -1) {

memberInsertForm(req,resp);

}

}


private void login(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//세션 객체 생성 과정

//HttpSession session = req.getSession();

//로그인 성공한 후 세션 객체는

//회원의 아이디 저장용 -> id

//회원의 이름 저장용 -> name

//회원의 회원등급 저장용 -> grade

//세션을 준비한다.

//session.setAttribute("id", dto.getId());


String id = req.getParameter("id");

String pw = req.getParameter("pw");

if (id == null && pw == null) {

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

} else {

//패스워드 검사 과정

MemberDAO dao = new MemberDAO();

MemberDTO dto = null;

try {

dao.connect();

dto = dao.login(id, pw);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}

if (dto != null) {

HttpSession session = req.getSession();

session.setAttribute("id", dto.getId());

session.setAttribute("name", dto.getName());

session.setAttribute("grade", dto.getGrade());

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

} else {

req.setAttribute("error", "true");

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

}

}

}


private void logout(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

HttpSession session = req.getSession();

session.invalidate();

resp.sendRedirect("login.mem");

}


private void memberInfo(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//로그인한 회원의 정보 출력 (회원 아이디 필요)

HttpSession session = req.getSession();

String id = (String)session.getAttribute("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}


req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

}


private void memberInsertForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertForm.jsp");

dispatcher.forward(req, resp);

}

}





//consultation.js

function consultInsertSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultInsertForm");


var name = document.getElementById("name");

var pw = document.getElementById("pw");

var title = document.getElementById("title");

var nameMsg = document.getElementById("nameMsg");

nameMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display = "none";

if (name.value == "" || name.value.length > 20) {

nameMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

if (title.value == "" || title.value.length > 100) {

titleMsg.style.display = "inline";

return;

}

obj.submit();

}


function pwFormSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("pwForm");


var name = document.getElementById("name");

var pw = document.getElementById("pw");

var nameMsg = document.getElementById("nameMsg");

nameMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

if (name.value == "" || name.value.length > 20) {

nameMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

obj.submit();

}


function consultModifySubmit(){

var obj = document.getElementById("consultModifyForm");

var title = document.getElementById("title");

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display="none";

if(title.value=="" || title.value.length>100){

titleMsg.style.display="inline";

return;

}

obj.submit();

}



function consultSearchSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultSearchForm");


var svalue = document.getElementById("svalue");

var searchMsg = document.getElementById("searchMsg");

searchMsg.style.display = "none";

if (svalue.value == "") {

searchMsg.style.display = "inline";

return;

}

obj.submit();

}


function loginFormSubmit() {

var obj = document.getElementById("loginForm");


var id = document.getElementById("id");

var pw = document.getElementById("pw");

var idMsg = document.getElementById("idMsg");

idMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

if (id.value == "" || id.value.length > 20) {

idMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

obj.submit();

}



//댓글 펼치기, 감추기 호출 함수 추가

function commentDivPanel() {

var commentMsg = document.getElementById("commentMsg");

var commentDiv = document.getElementById("commentDiv");

if (commentMsg.innerHTML == "[댓글 펼치기]") {

commentMsg.innerHTML = "[댓글 감추기]";

commentDiv.style.display = "block";

} else {

commentMsg.innerHTML = "[댓글 펼치기]";

commentDiv.style.display = "none";

}

}


function commentInsertSubmit() {

var commentInsertForm = document.getElementById("commentInsertForm");

//데이터 검사 과정 추가

var title = document.getElementById("title");

var commentErrMsg = document.getElementById("commentErrMsg");

commentErrMsg.style.display="none";

if(title.value=="" || title.value.length>200){

commentErrMsg.style.display="inline";

return;

}

commentInsertForm.submit();

}


function consultMemberInsertSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultInsertForm");


var title = document.getElementById("title");

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display = "none";

if (title.value == "" || title.value.length > 100) {

titleMsg.style.display = "inline";

return;

}

obj.submit();

}



//---------------------------------

//회원 전용 삭제 함수 추가

function consultMemberDelete(sid) {

if (confirm("현재 자료를 삭제하시겠습니까?")) {

window.location.href="consultMemberDelete.con?sid="+sid;

}

}

//---------------------------------



//-------------------------------

//회원 입력 관련 함수 추가


//아이디 중복 검사 확인용 변수 추가

var idCheckClick = false;

var idCheckResult = false;


function idCheck() {

var id = document.getElementById("id");

var idMsg = document.getElementById("idMsg");

idMsg.innerHTML = "";

if (id.value == "" || id.value.length > 20) {

/*

idMsg.style.color = "red";

idMsg.style.fontSize = "small";

idMsg.innerHTML = "1~20자 이내의 아이디를 입력해야 합니다.";

*/

idMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">1~20자 이내의 아이디를 입력해야 합니다.</span>";

return;

}

//Ajax 요청

ajaxFunc(id.value);

idCheckClick = true;

}


function memberFormSubmit() {

//데이터 검사

var submitMsg = document.getElementById("submitMsg");

submitMsg.innerHTML = "";

//아이디 중복 검사 여부 확인

if (!idCheckClick) {

submitMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">아이디 중복 검사를 먼저 해야 합니다.</span>";

return;

} else {

if (!idCheckResult) {

submitMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">사용 불가능한 아이디이므로 다른 아이디를 사용해야 합니다.</span>";

return;

}

}

//데이터 전송

}


//Ajax 관련 함수

var xmlReq;

function ajaxFunc(id) {

xmlReq = new XMLHttpRequest(); //IE7.0 이상

var url = "memberIDCheck.jsp";

var postString = "data="+id;

xmlReq.onreadystatechange = callBack;

xmlReq.open("POST", url, true);

xmlReq.setRequestHeader("Content-Type"

, "application/x-www-form-urlencoded; charset=euc-kr");

xmlReq.send(postString);

}


function callBack() {

if (xmlReq.readyState == 4) {

if (xmlReq.status == 200) {

printData();

}

}

}


function printData() {

var result = xmlReq.responseText;

var idMsg = document.getElementById("idMsg");

idMsg.innerHTML = "";

if (result.indexOf("OK") != -1) {

idMsg.innerHTML = "<span style=\"color:blue; font-size:10pt;\">사용 가능한 아이디입니다.</span>";

idCheckResult = true;

} else {

idMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">사용 불가능한 아이디입니다.</span>";

idCheckResult = false;

}

}


//--------------------------------





//memberIDCheck.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="com.test.*" %>    

<%

String data

= request.getParameter("data");

String result = "OK";

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = dao.searchId(data);

if (dto != null) {

result = "Cancel";

}

}catch(Exception e){

System.out.println(e.toString());

}finally{

dao.close();

}


out.write(result);

%>





문제) 회원 가입의 나머지 절차는 각자 작성할 것.


//consultation.js -> 데이터 검사 및 전송 과정 추가

//MemberServlet.java -> memberInsert.mem, memberInsertOK.mem 서블릿 주소 등록 및 액션 추가

//MemberDAO.java -> add(MemberDTO dto) 메소드 추가

//memberInsertOK.jsp -> 회원 가입 완료 메시지 페이지 작성



//consultation.js

function consultInsertSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultInsertForm");


var name = document.getElementById("name");

var pw = document.getElementById("pw");

var title = document.getElementById("title");

var nameMsg = document.getElementById("nameMsg");

nameMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display = "none";

if (name.value == "" || name.value.length > 20) {

nameMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

if (title.value == "" || title.value.length > 100) {

titleMsg.style.display = "inline";

return;

}

obj.submit();

}


function pwFormSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("pwForm");


var name = document.getElementById("name");

var pw = document.getElementById("pw");

var nameMsg = document.getElementById("nameMsg");

nameMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

if (name.value == "" || name.value.length > 20) {

nameMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

obj.submit();

}


function consultModifySubmit(){

var obj = document.getElementById("consultModifyForm");

var title = document.getElementById("title");

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display="none";

if(title.value=="" || title.value.length>100){

titleMsg.style.display="inline";

return;

}

obj.submit();

}



function consultSearchSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultSearchForm");


var svalue = document.getElementById("svalue");

var searchMsg = document.getElementById("searchMsg");

searchMsg.style.display = "none";

if (svalue.value == "") {

searchMsg.style.display = "inline";

return;

}

obj.submit();

}


function loginFormSubmit() {

var obj = document.getElementById("loginForm");


var id = document.getElementById("id");

var pw = document.getElementById("pw");

var idMsg = document.getElementById("idMsg");

idMsg.style.display = "none";

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

if (id.value == "" || id.value.length > 20) {

idMsg.style.display = "inline";

return;

}

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

obj.submit();

}



//댓글 펼치기, 감추기 호출 함수 추가

function commentDivPanel() {

var commentMsg = document.getElementById("commentMsg");

var commentDiv = document.getElementById("commentDiv");

if (commentMsg.innerHTML == "[댓글 펼치기]") {

commentMsg.innerHTML = "[댓글 감추기]";

commentDiv.style.display = "block";

} else {

commentMsg.innerHTML = "[댓글 펼치기]";

commentDiv.style.display = "none";

}

}


function commentInsertSubmit() {

var commentInsertForm = document.getElementById("commentInsertForm");

//데이터 검사 과정 추가

var title = document.getElementById("title");

var commentErrMsg = document.getElementById("commentErrMsg");

commentErrMsg.style.display="none";

if(title.value=="" || title.value.length>200){

commentErrMsg.style.display="inline";

return;

}

commentInsertForm.submit();

}


function consultMemberInsertSubmit() {

//데이터 검사

//에러 메시지 출력

//데이터 전송

var obj = document.getElementById("consultInsertForm");


var title = document.getElementById("title");

var titleMsg = document.getElementById("titleMsg");

titleMsg.style.display = "none";

if (title.value == "" || title.value.length > 100) {

titleMsg.style.display = "inline";

return;

}

obj.submit();

}



//---------------------------------

//회원 전용 삭제 함수 추가

function consultMemberDelete(sid) {

if (confirm("현재 자료를 삭제하시겠습니까?")) {

window.location.href="consultMemberDelete.con?sid="+sid;

}

}

//---------------------------------



//-------------------------------

//회원 입력 관련 함수 추가


//아이디 중복 검사 확인용 변수 추가

var idCheckClick = false;

var idCheckResult = false;


function idCheck() {

var id = document.getElementById("id");

var idMsg = document.getElementById("idMsg");

idMsg.innerHTML = "";

if (id.value == "" || id.value.length > 20) {

/*

idMsg.style.color = "red";

idMsg.style.fontSize = "small";

idMsg.innerHTML = "1~20자 이내의 아이디를 입력해야 합니다.";

*/

idMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">1~20자 이내의 아이디를 입력해야 합니다.</span>";

return;

}

//Ajax 요청

ajaxFunc(id.value);

idCheckClick = true;

}


function memberFormSubmit() {

//데이터 검사

var obj = document.getElementById("memberForm");


var id = document.getElementById("id");

var pw = document.getElementById("pw");

var name = document.getElementById("name");

var email = document.getElementById("email");

var tel = document.getElementById("tel");

var idMsg = document.getElementById("idMsg");

idMsg.innerHTML = "";

if (id.value == "" || id.value.length > 20) {

idMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">1~20자 이내의 아이디를 입력해야 합니다.</span>";

return;

}

var pwMsg = document.getElementById("pwMsg");

pwMsg.style.display = "none";

if (pw.value == "" || pw.value.length > 20) {

pwMsg.style.display = "inline";

return;

}

var nameMsg = document.getElementById("nameMsg");

nameMsg.style.display = "none";

if (name.value == "" || name.value.length > 20) {

nameMsg.style.display = "inline";

return;

}

var emailMsg = document.getElementById("emailMsg");

emailMsg.style.display = "none";

if (email.value == "" || email.value.length > 100) {

emailMsg.style.display = "inline";

return;

}

var telMsg = document.getElementById("telMsg");

telMsg.style.display = "none";

if (tel.value == "" || tel.value.length > 100) {

telMsg.style.display = "inline";

return;

}

var submitMsg = document.getElementById("submitMsg");

submitMsg.innerHTML = "";

//아이디 중복 검사 여부 확인

if (!idCheckClick) {

submitMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">아이디 중복 검사를 먼저 해야 합니다.</span>";

return;

} else {

if (!idCheckResult) {

submitMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">사용 불가능한 아이디이므로 다른 아이디를 사용해야 합니다.</span>";

return;

}

}

//데이터 전송

obj.submit();

}


//Ajax 관련 함수

var xmlReq;

function ajaxFunc(id) {

xmlReq = new XMLHttpRequest(); //IE7.0 이상

var url = "memberIDCheck.jsp";

var postString = "data="+id;

xmlReq.onreadystatechange = callBack;

xmlReq.open("POST", url, true);

xmlReq.setRequestHeader("Content-Type"

, "application/x-www-form-urlencoded; charset=euc-kr");

xmlReq.send(postString);

}


function callBack() {

if (xmlReq.readyState == 4) {

if (xmlReq.status == 200) {

printData();

}

}

}


function printData() {

var result = xmlReq.responseText;

var idMsg = document.getElementById("idMsg");

idMsg.innerHTML = "";

if (result.indexOf("OK") != -1) {

idMsg.innerHTML = "<span style=\"color:blue; font-size:10pt;\">사용 가능한 아이디입니다.</span>";

idCheckResult = true;

} else {

idMsg.innerHTML = "<span style=\"color:red; font-size:10pt;\">사용 불가능한 아이디입니다.</span>";

idCheckResult = false;

}

}


//--------------------------------





//MemberServlet.java

package com.test;


import java.io.IOException;

import java.sql.SQLException;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


public class MemberServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//서블릿 주소 분석

String uri = req.getRequestURI();

if (uri.indexOf("login.mem") != -1) {

login(req,resp);

}

if (uri.indexOf("logout.mem") != -1) {

logout(req,resp);

}

if (uri.indexOf("memberInfo.mem") != -1) {

memberInfo(req,resp);

}

if (uri.indexOf("memberInsertForm.mem") != -1) {

memberInsertForm(req,resp);

}

if (uri.indexOf("memberInsert.mem") != -1) {

memberInsert(req,resp);

}

if (uri.indexOf("memberInsertOK.mem") != -1) {

memberInsertOK(req,resp);

}

if (uri.indexOf("memberInsertCancel.mem") != -1) {

memberInsertCancel(req,resp);

}

}


private void login(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//세션 객체 생성 과정

//HttpSession session = req.getSession();

//로그인 성공한 후 세션 객체는

//회원의 아이디 저장용 -> id

//회원의 이름 저장용 -> name

//회원의 회원등급 저장용 -> grade

//세션을 준비한다.

//session.setAttribute("id", dto.getId());


String id = req.getParameter("id");

String pw = req.getParameter("pw");

if (id == null && pw == null) {

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

} else {

//패스워드 검사 과정

MemberDAO dao = new MemberDAO();

MemberDTO dto = null;

try {

dao.connect();

dto = dao.login(id, pw);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}

if (dto != null) {

HttpSession session = req.getSession();

session.setAttribute("id", dto.getId());

session.setAttribute("name", dto.getName());

session.setAttribute("grade", dto.getGrade());

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

} else {

req.setAttribute("error", "true");

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

}

}

}


private void logout(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

HttpSession session = req.getSession();

session.invalidate();

resp.sendRedirect("login.mem");

}


private void memberInfo(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//로그인한 회원의 정보 출력 (회원 아이디 필요)

HttpSession session = req.getSession();

String id = (String)session.getAttribute("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}


req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

}


private void memberInsertForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertForm.jsp");

dispatcher.forward(req, resp);

}

private void memberInsert(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//데이터 수신

//데이터베이스 연결

//INSERT 쿼리 메소드 호출

//memberInsertOK.con으로 페이지 이동

req.setCharacterEncoding("euc-kr");

String id = req.getParameter("id");

String pw = req.getParameter("pw");

String name = req.getParameter("name");

String email = req.getParameter("email");

String tel = req.getParameter("tel");

//-----------------------------

//입력 오류 처리 필요

//오라클에서는 입력 데이터에 

//작은따옴표(')가 있으면

//입력 오류 발생됨

//작은따옴표(')를 두 번 입력('')하면 해결됨.

id = id.replaceAll("'", "''");

pw = pw.replaceAll("'", "''");

name = name.replaceAll("'", "''");

email = email.replaceAll("'", "''");

tel = tel.replaceAll("'", "''");

//-----------------------------

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

boolean idCheck = false;

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = new MemberDTO();

dto.setId(id);

dto.setPw(pw);

dto.setName(name);

dto.setEmail(email);

dto.setTel(tel);

dao.add(dto);

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

idCheck = true;

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

if (idCheck) {

String url = String.format("memberInsertOK.mem");

resp.sendRedirect(url);

} else {

String url = String.format("memberInsertCancel.mem");

resp.sendRedirect(url);

}

}


private void memberInsertOK(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertOK.jsp");

dispatcher.forward(req, resp);

}

private void memberInsertCancel(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertCancel.jsp");

dispatcher.forward(req, resp);

}

}





//MemberDAO.java

package com.test;


import java.sql.*;


public class MemberDAO {

private Connection conn;

public void connect()

throws ClassNotFoundException, SQLException {

conn = DBConn.getConnection();

}

public void close()

throws SQLException {

DBConn.close();

}


public MemberDTO login(String id, String pw) 

throws SQLException {


MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s' AND pw=encrypt('%s', '%s')", id, pw, id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public MemberDTO searchId(String id)

throws SQLException {

MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s'", id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public int add(MemberDTO dto)

throws SQLException {

int result = 0;

String sql = String.format("INSERT INTO jmember (id, pw, name, email, tel, wdate) VALUES ('%s', encrypt('%s', '%s'),'%s', '%s', '%s', SYSDATE)", dto.getId(), dto.getPw(), dto.getId(), dto.getName(), dto.getEmail(), dto.getTel());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

}





//memberInsertOK.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


</head>

<body>

<div>


<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>


<div style="width:500px;">

<h3>[회원가입]</h3>

<h2>회원 가입이 완료되었습니다.</h2>

<a href="login.mem">[로그인 페이지로 이동]</a>

</div>

</div>


</body>

</html>




//요청주소

http://localhost:8090/ConsultationServlet_20121207/consultList.con




---------------------------------------------------

상담 게시판 회원 명단 (관리자, 직원 전용)



//memberInfo.jsp -> 관리자 전용 [*회원명단] 메뉴 추가

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    

<%@ page import="com.test.*" %>    

<%

MemberDTO dto

= (MemberDTO)request.getAttribute("dto");

String id = dto.getId();

String name = dto.getName();

String email = dto.getEmail();

String tel = dto.getTel();

String[] array = {"관리자", "직원", "학생", "회원가입"};

String grade = array[dto.getGrade()-1];

%>        

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function msg() {

}

</script>


</head>

<body onload="msg()">

<div>

<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>

<div>

<h3>[회원정보]</h3>

<table cellpadding="5" class="style01 borderTop borderBottom">

<tr>

<td width="150">아이디</td><td class="bTitle"><%=id%></td>

</tr>

<tr>

<td width="150">이름</td><td class="bTitle"><%=name%></td>

</tr>

<tr>

<td width="150">이메일</td><td class="bTitle"><%=email%></td>

</tr>

<tr>

<td width="150">전화번호</td><td class="bTitle"><%=tel%></td>

</tr>

<tr>

<td width="150">등급</td><td class="bTitle"><%=grade%></td>

</tr>

</table>

</div>

<div>

<br>


<%-- 관리자 전용 메뉴 출력 부분 --%>

<c:if test="${sessionScope.grade == '1'}">

<a href="memberList.mem">[*회원명단]</a>

</c:if>


<a href="">[패스워드변경]</a>

<a href="">[회원정보수정]</a>

<a href="">[회원탈퇴]</a>

</div>

</div>


</body>

</html>





//MemberServlet.java

package com.test;


import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


public class MemberServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//서블릿 주소 분석

String uri = req.getRequestURI();

if (uri.indexOf("login.mem") != -1) {

login(req,resp);

}

if (uri.indexOf("logout.mem") != -1) {

logout(req,resp);

}

if (uri.indexOf("memberInfo.mem") != -1) {

memberInfo(req,resp);

}

if (uri.indexOf("memberInsertForm.mem") != -1) {

memberInsertForm(req,resp);

}

if (uri.indexOf("memberInsert.mem") != -1) {

memberInsert(req,resp);

}

if (uri.indexOf("memberInsertOK.mem") != -1) {

memberInsertOK(req,resp);

}

if (uri.indexOf("memberInsertCancel.mem") != -1) {

memberInsertCancel(req,resp);

}

if (uri.indexOf("memberList.mem") != -1) {

memberList(req,resp);

}

}


private void login(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//세션 객체 생성 과정

//HttpSession session = req.getSession();

//로그인 성공한 후 세션 객체는

//회원의 아이디 저장용 -> id

//회원의 이름 저장용 -> name

//회원의 회원등급 저장용 -> grade

//세션을 준비한다.

//session.setAttribute("id", dto.getId());


String id = req.getParameter("id");

String pw = req.getParameter("pw");

if (id == null && pw == null) {

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

} else {

//패스워드 검사 과정

MemberDAO dao = new MemberDAO();

MemberDTO dto = null;

try {

dao.connect();

dto = dao.login(id, pw);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}

if (dto != null) {

HttpSession session = req.getSession();

session.setAttribute("id", dto.getId());

session.setAttribute("name", dto.getName());

session.setAttribute("grade", dto.getGrade());

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

} else {

req.setAttribute("error", "true");

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

}

}

}


private void logout(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

HttpSession session = req.getSession();

session.invalidate();

resp.sendRedirect("login.mem");

}


private void memberInfo(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//로그인한 회원의 정보 출력 (회원 아이디 필요)

HttpSession session = req.getSession();

String id = (String)session.getAttribute("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}


req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

}


private void memberInsertForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertForm.jsp");

dispatcher.forward(req, resp);

}

private void memberInsert(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//데이터 수신

//데이터베이스 연결

//INSERT 쿼리 메소드 호출

//memberInsertOK.con으로 페이지 이동

req.setCharacterEncoding("euc-kr");

String id = req.getParameter("id");

String pw = req.getParameter("pw");

String name = req.getParameter("name");

String email = req.getParameter("email");

String tel = req.getParameter("tel");

//-----------------------------

//입력 오류 처리 필요

//오라클에서는 입력 데이터에 

//작은따옴표(')가 있으면

//입력 오류 발생됨

//작은따옴표(')를 두 번 입력('')하면 해결됨.

id = id.replaceAll("'", "''");

pw = pw.replaceAll("'", "''");

name = name.replaceAll("'", "''");

email = email.replaceAll("'", "''");

tel = tel.replaceAll("'", "''");

//-----------------------------

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

boolean idCheck = false;

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = new MemberDTO();

dto.setId(id);

dto.setPw(pw);

dto.setName(name);

dto.setEmail(email);

dto.setTel(tel);

dao.add(dto);

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

idCheck = true;

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

if (idCheck) {

String url = String.format("memberInsertOK.mem");

resp.sendRedirect(url);

} else {

String url = String.format("memberInsertCancel.mem");

resp.sendRedirect(url);

}

}


private void memberInsertOK(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertOK.jsp");

dispatcher.forward(req, resp);

}

private void memberInsertCancel(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertCancel.jsp");

dispatcher.forward(req, resp);

}


private void memberList(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

arrayList = dao.lists();

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

req.setAttribute("arrayList", arrayList);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberList.jsp");

dispatcher.forward(req, resp);

}


}





//MemberDAO.java

package com.test;


import java.sql.*;

import java.util.ArrayList;


public class MemberDAO {

private Connection conn;

public void connect()

throws ClassNotFoundException, SQLException {

conn = DBConn.getConnection();

}

public void close()

throws SQLException {

DBConn.close();

}


public MemberDTO login(String id, String pw) 

throws SQLException {


MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s' AND pw=encrypt('%s', '%s')", id, pw, id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public MemberDTO searchId(String id)

throws SQLException {

MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s'", id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public int add(MemberDTO dto)

throws SQLException {

int result = 0;

String sql = String.format("INSERT INTO jmember (id, pw, name, email, tel, wdate) VALUES ('%s', encrypt('%s', '%s'),'%s', '%s', '%s', SYSDATE)", dto.getId(), dto.getPw(), dto.getId(), dto.getName(), dto.getEmail(), dto.getTel());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

public ArrayList<MemberDTO> lists() 

throws SQLException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

String sql = String.format("SELECT id, name, tel, email, grade, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate FROM jmember ORDER BY grade ASC, name ASC");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

MemberDTO dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setTel(rs.getString("tel"));

dto.setEmail(rs.getString("email"));

dto.setGrade(rs.getInt("grade"));

dto.setWdate(rs.getString("wdate"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

}





//memberList.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    

<%@ page import="java.util.*" %>    

<%@ page import="com.test.*" %>

<%

String[] array = {"관리자", "직원", "학생", "회원가입"};


@SuppressWarnings("unchecked")

ArrayList<MemberDTO> arrayList

= (ArrayList<MemberDTO>)request.getAttribute("arrayList");

StringBuilder str = new StringBuilder();

for (MemberDTO dto : arrayList) {

str.append("<tr>");

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getId()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getName()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getTel()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getEmail()));

str.append(String.format("<td class=\"bDot\">%s</td>", array[dto.getGrade()-1]));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getWdate()));

str.append("</tr>");

}


%>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function memberAdminRemove(url, uid) {

if (confirm("아이디 : "+uid+"\n\n선택한 회원의 정보를 삭제하시겠습니까?")) {

window.location.href=url+"?uid="+uid;

}

}

</script>


</head>

<body>

<div>


<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>

<div>

<h3>[*회원명단]</h3>

<table cellpadding="5" class="style01 borderTop">

<tr>

<td class="tName" width="100">아이디</td>

<td class="tName">이름</td>

<td class="tName" width="160">전화</td>

<td class="tName" width="160">이메일</td>

<td class="tName" width="80">등급</td>

<td class="tName" width="120">가입일</td>

<td class="tName" width="80"></td>

</tr>

<!-- <tr>

<td class="bDot">admin</td>

<td class="bDot">관리자</td>

<td class="bDot"></td>

<td class="bDot"></td>

<td class="bDot">관리자</td>

<td class="bDot">2012-03-15</td>

<td class="bDot" style="font-size:9pt;"><a href="">[등급변경]</a><br><a href="">[회원삭제]</a></td>

</tr> -->

<%=str%>

</table>

</div>

</div>


</body>

</html>





--------------------------------------------------

문제) 상담 게시판에서 회원 명단 출력시 등급별(전체, 관리자, 직원, 학생, 회원가입)로 출력되도록 할 것.




//memberList.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ page import="java.util.*" %>    

<%@ page import="com.test.*" %>

<%

String[] array = {"관리자", "직원", "학생", "회원가입"};


//----------------------------

//등급별 출력시 선택한 등급 표시하기 위한 부분 추가

String grade = request.getParameter("grade");

if (grade == null) {

grade = "0";

}

//----------------------------


@SuppressWarnings("unchecked")

ArrayList<MemberDTO> arrayList

= (ArrayList<MemberDTO>)request.getAttribute("arrayList");

StringBuilder str = new StringBuilder();

for (MemberDTO dto : arrayList) {

str.append("<tr>");

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getId()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getName()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getTel()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getEmail()));

str.append(String.format("<td class=\"bDot\">%s</td>", array[dto.getGrade()-1]));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getWdate()));

str.append("</tr>");

}


%>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function memberAdminRemove(url, uid) {

if (confirm("아이디 : "+uid+"\n\n선택한 회원의 정보를 삭제하시겠습니까?")) {

window.location.href=url+"?uid="+uid;

}

}

function memberList(obj) {

window.location.href="memberList.mem?grade="+obj.value;

}

//----------------------------

//등급별 출력시 선택한 등급 표시하기 위한 부분 추가

function radioCheck() {

var radios = document.getElementsByName("radioGroup");

radios[<%=grade%>].checked = true;

}

//----------------------------

</script>


</head>

<body onload="radioCheck()">

<div>


<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>

<div>

<h3>[*회원명단]</h3>

<div>

<form>

<input type="radio" name="radioGroup" 

checked="checked" 

onclick="memberList(this)" value="0">전체

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="1">관리자

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="2">직원

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="3">학생

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="4">회원가입

</form>

<br>

</div>

<table cellpadding="5" class="style01 borderTop">

<tr>

<td class="tName" width="100">아이디</td>

<td class="tName">이름</td>

<td class="tName" width="160">전화</td>

<td class="tName" width="160">이메일</td>

<td class="tName" width="80">등급</td>

<td class="tName" width="120">가입일</td>

<td class="tName" width="80"></td>

</tr>

<!-- <tr>

<td class="bDot">admin</td>

<td class="bDot">관리자</td>

<td class="bDot"></td>

<td class="bDot"></td>

<td class="bDot">관리자</td>

<td class="bDot">2012-03-15</td>

<td class="bDot" style="font-size:9pt;"><a href="">[등급변경]</a><br><a href="">[회원삭제]</a></td>

</tr> -->

<%=str%>

</table>

</div>

</div>


</body>

</html>




//MemberServlet.java

package com.test;


import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


public class MemberServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//서블릿 주소 분석

String uri = req.getRequestURI();

if (uri.indexOf("login.mem") != -1) {

login(req,resp);

}

if (uri.indexOf("logout.mem") != -1) {

logout(req,resp);

}

if (uri.indexOf("memberInfo.mem") != -1) {

memberInfo(req,resp);

}

if (uri.indexOf("memberInsertForm.mem") != -1) {

memberInsertForm(req,resp);

}

if (uri.indexOf("memberInsert.mem") != -1) {

memberInsert(req,resp);

}

if (uri.indexOf("memberInsertOK.mem") != -1) {

memberInsertOK(req,resp);

}

if (uri.indexOf("memberInsertCancel.mem") != -1) {

memberInsertCancel(req,resp);

}

if (uri.indexOf("memberList.mem") != -1) {

memberList(req,resp);

}

}


private void login(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//세션 객체 생성 과정

//HttpSession session = req.getSession();

//로그인 성공한 후 세션 객체는

//회원의 아이디 저장용 -> id

//회원의 이름 저장용 -> name

//회원의 회원등급 저장용 -> grade

//세션을 준비한다.

//session.setAttribute("id", dto.getId());


String id = req.getParameter("id");

String pw = req.getParameter("pw");

if (id == null && pw == null) {

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

} else {

//패스워드 검사 과정

MemberDAO dao = new MemberDAO();

MemberDTO dto = null;

try {

dao.connect();

dto = dao.login(id, pw);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}

if (dto != null) {

HttpSession session = req.getSession();

session.setAttribute("id", dto.getId());

session.setAttribute("name", dto.getName());

session.setAttribute("grade", dto.getGrade());

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

} else {

req.setAttribute("error", "true");

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

}

}

}


private void logout(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

HttpSession session = req.getSession();

session.invalidate();

resp.sendRedirect("login.mem");

}


private void memberInfo(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//로그인한 회원의 정보 출력 (회원 아이디 필요)

HttpSession session = req.getSession();

String id = (String)session.getAttribute("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}


req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

}


private void memberInsertForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertForm.jsp");

dispatcher.forward(req, resp);

}

private void memberInsert(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//데이터 수신

//데이터베이스 연결

//INSERT 쿼리 메소드 호출

//memberInsertOK.con으로 페이지 이동

req.setCharacterEncoding("euc-kr");

String id = req.getParameter("id");

String pw = req.getParameter("pw");

String name = req.getParameter("name");

String email = req.getParameter("email");

String tel = req.getParameter("tel");

//-----------------------------

//입력 오류 처리 필요

//오라클에서는 입력 데이터에 

//작은따옴표(')가 있으면

//입력 오류 발생됨

//작은따옴표(')를 두 번 입력('')하면 해결됨.

id = id.replaceAll("'", "''");

pw = pw.replaceAll("'", "''");

name = name.replaceAll("'", "''");

email = email.replaceAll("'", "''");

tel = tel.replaceAll("'", "''");

//-----------------------------

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

boolean idCheck = false;

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = new MemberDTO();

dto.setId(id);

dto.setPw(pw);

dto.setName(name);

dto.setEmail(email);

dto.setTel(tel);

dao.add(dto);

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

idCheck = true;

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

if (idCheck) {

String url = String.format("memberInsertOK.mem");

resp.sendRedirect(url);

} else {

String url = String.format("memberInsertCancel.mem");

resp.sendRedirect(url);

}

}


private void memberInsertOK(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertOK.jsp");

dispatcher.forward(req, resp);

}

private void memberInsertCancel(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertCancel.jsp");

dispatcher.forward(req, resp);

}


private void memberList(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//----------------------------------

//등급별 회원 명단 출력 부분 추가

String grade = req.getParameter("grade");

if (grade == null) {

grade = "0";

}

//등급별로 쿼리의 다른 조건식 생성

String wheres = "";

if (!grade.equals("0")) {

wheres = String.format("WHERE grade=%s", grade);

}

//----------------------------------

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

//----------------------------------

//등급별 출력 이전 쿼리

//arrayList = dao.lists();

//등급별 출력 이후 쿼리

arrayList = dao.lists(wheres);

//----------------------------------

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

req.setAttribute("arrayList", arrayList);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberList.jsp");

dispatcher.forward(req, resp);

}


}





//MemberDAO.java

package com.test;


import java.sql.*;

import java.util.ArrayList;


public class MemberDAO {

private Connection conn;

public void connect()

throws ClassNotFoundException, SQLException {

conn = DBConn.getConnection();

}

public void close()

throws SQLException {

DBConn.close();

}


public MemberDTO login(String id, String pw) 

throws SQLException {


MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s' AND pw=encrypt('%s', '%s')", id, pw, id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public MemberDTO searchId(String id)

throws SQLException {

MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s'", id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public int add(MemberDTO dto)

throws SQLException {

int result = 0;

String sql = String.format("INSERT INTO jmember (id, pw, name, email, tel, wdate) VALUES ('%s', encrypt('%s', '%s'),'%s', '%s', '%s', SYSDATE)", dto.getId(), dto.getPw(), dto.getId(), dto.getName(), dto.getEmail(), dto.getTel());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

public ArrayList<MemberDTO> lists() 

throws SQLException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

String sql = String.format("SELECT id, name, tel, email, grade, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate FROM jmember ORDER BY grade ASC, name ASC");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

MemberDTO dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setTel(rs.getString("tel"));

dto.setEmail(rs.getString("email"));

dto.setGrade(rs.getInt("grade"));

dto.setWdate(rs.getString("wdate"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

public ArrayList<MemberDTO> lists(String wheres) 

throws SQLException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

String sql = String.format("SELECT id, name, tel, email, grade, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate FROM jmember %s ORDER BY grade ASC, name ASC", wheres);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

MemberDTO dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setTel(rs.getString("tel"));

dto.setEmail(rs.getString("email"));

dto.setGrade(rs.getInt("grade"));

dto.setWdate(rs.getString("wdate"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

}




--------------------------------------------------

상담 게시판에서 회원 수정(관리자 전용)



//memberList.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ page import="java.util.*" %>    

<%@ page import="com.test.*" %>

<%

String[] array = {"관리자", "직원", "학생", "회원가입"};


//----------------------------

//등급별 출력시 선택한 등급 표시하기 위한 부분 추가

String grade = request.getParameter("grade");

if (grade == null) {

grade = "0";

}

//----------------------------


@SuppressWarnings("unchecked")

ArrayList<MemberDTO> arrayList

= (ArrayList<MemberDTO>)request.getAttribute("arrayList");

StringBuilder str = new StringBuilder();

for (MemberDTO dto : arrayList) {

str.append("<tr>");

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getId()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getName()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getTel()));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getEmail()));

str.append(String.format("<td class=\"bDot\">%s</td>", array[dto.getGrade()-1]));

str.append(String.format("<td class=\"bDot\">%s</td>", dto.getWdate()));


//---------------------------

//회원 수정 메뉴 추가(관리자 전용)

str.append(String.format("<td class=\"bDot\">"));

if ((Integer)session.getAttribute("grade") == 1) {

str.append(String.format("<a href=\"adminUpdateForm.mem?id=%s\">[회원수정]</a>", dto.getId()));

}

str.append(String.format("</td>"));

//---------------------------

str.append("</tr>");

}


%>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function memberAdminRemove(url, uid) {

if (confirm("아이디 : "+uid+"\n\n선택한 회원의 정보를 삭제하시겠습니까?")) {

window.location.href=url+"?uid="+uid;

}

}

function memberList(obj) {

window.location.href="memberList.mem?grade="+obj.value;

}

//----------------------------

//등급별 출력시 선택한 등급 표시하기 위한 부분 추가

function radioCheck() {

var radios = document.getElementsByName("radioGroup");

radios[<%=grade%>].checked = true;

}

//----------------------------

</script>


</head>

<body onload="radioCheck()">

<div>

<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>

<div>

<h3>[*회원명단]</h3>

<div>

<form>

<input type="radio" name="radioGroup" 

checked="checked" 

onclick="memberList(this)" value="0">전체

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="1">관리자

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="2">직원

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="3">학생

<input type="radio" name="radioGroup" 

onclick="memberList(this)" value="4">회원가입

</form>

<br>

</div>

<table cellpadding="5" class="style01 borderTop">

<tr>

<td class="tName" width="100">아이디</td>

<td class="tName">이름</td>

<td class="tName" width="160">전화</td>

<td class="tName" width="160">이메일</td>

<td class="tName" width="80">등급</td>

<td class="tName" width="120">가입일</td>

<td class="tName" width="80"></td>

</tr>

<!-- <tr>

<td class="bDot">admin</td>

<td class="bDot">관리자</td>

<td class="bDot"></td>

<td class="bDot"></td>

<td class="bDot">관리자</td>

<td class="bDot">2012-03-15</td>

<td class="bDot" style="font-size:9pt;"><a href="">[등급변경]</a><br><a href="">[회원삭제]</a></td>

</tr> -->

<%=str%>

</table>

</div>

</div>


</body>

</html>





//MemberServlet.java

package com.test;


import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;


import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


public class MemberServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGetPost(req, resp);

}


protected void doGetPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//서블릿 주소 분석

String uri = req.getRequestURI();

if (uri.indexOf("login.mem") != -1) {

login(req,resp);

}

if (uri.indexOf("logout.mem") != -1) {

logout(req,resp);

}

if (uri.indexOf("memberInfo.mem") != -1) {

memberInfo(req,resp);

}

if (uri.indexOf("memberInsertForm.mem") != -1) {

memberInsertForm(req,resp);

}

if (uri.indexOf("memberInsert.mem") != -1) {

memberInsert(req,resp);

}

if (uri.indexOf("memberInsertOK.mem") != -1) {

memberInsertOK(req,resp);

}

if (uri.indexOf("memberInsertCancel.mem") != -1) {

memberInsertCancel(req,resp);

}

if (uri.indexOf("memberList.mem") != -1) {

memberList(req,resp);

}

if (uri.indexOf("adminUpdateForm.mem") != -1) {

adminUpdateForm(req,resp);

}

if (uri.indexOf("adminUpdate.mem") != -1) {

adminUpdate(req,resp);

}

}


private void login(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {


//세션 객체 생성 과정

//HttpSession session = req.getSession();

//로그인 성공한 후 세션 객체는

//회원의 아이디 저장용 -> id

//회원의 이름 저장용 -> name

//회원의 회원등급 저장용 -> grade

//세션을 준비한다.

//session.setAttribute("id", dto.getId());


String id = req.getParameter("id");

String pw = req.getParameter("pw");

if (id == null && pw == null) {

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

} else {

//패스워드 검사 과정

MemberDAO dao = new MemberDAO();

MemberDTO dto = null;

try {

dao.connect();

dto = dao.login(id, pw);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}

if (dto != null) {

HttpSession session = req.getSession();

session.setAttribute("id", dto.getId());

session.setAttribute("name", dto.getName());

session.setAttribute("grade", dto.getGrade());

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

} else {

req.setAttribute("error", "true");

RequestDispatcher dispatcher

= req.getRequestDispatcher("login.jsp");

dispatcher.forward(req, resp);

}

}

}


private void logout(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

HttpSession session = req.getSession();

session.invalidate();

resp.sendRedirect("login.mem");

}


private void memberInfo(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//로그인한 회원의 정보 출력 (회원 아이디 필요)

HttpSession session = req.getSession();

String id = (String)session.getAttribute("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

}catch(Exception e){

}

}


req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInfo.jsp");

dispatcher.forward(req, resp);

}


private void memberInsertForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertForm.jsp");

dispatcher.forward(req, resp);

}

private void memberInsert(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//데이터 수신

//데이터베이스 연결

//INSERT 쿼리 메소드 호출

//memberInsertOK.con으로 페이지 이동

req.setCharacterEncoding("euc-kr");

String id = req.getParameter("id");

String pw = req.getParameter("pw");

String name = req.getParameter("name");

String email = req.getParameter("email");

String tel = req.getParameter("tel");

//-----------------------------

//입력 오류 처리 필요

//오라클에서는 입력 데이터에 

//작은따옴표(')가 있으면

//입력 오류 발생됨

//작은따옴표(')를 두 번 입력('')하면 해결됨.

id = id.replaceAll("'", "''");

pw = pw.replaceAll("'", "''");

name = name.replaceAll("'", "''");

email = email.replaceAll("'", "''");

tel = tel.replaceAll("'", "''");

//-----------------------------

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

boolean idCheck = false;

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = new MemberDTO();

dto.setId(id);

dto.setPw(pw);

dto.setName(name);

dto.setEmail(email);

dto.setTel(tel);

dao.add(dto);

//데이터베이스 입력시 다시 한 번 아이디 중복 체크 추가

idCheck = true;

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

if (idCheck) {

String url = String.format("memberInsertOK.mem");

resp.sendRedirect(url);

} else {

String url = String.format("memberInsertCancel.mem");

resp.sendRedirect(url);

}

}


private void memberInsertOK(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertOK.jsp");

dispatcher.forward(req, resp);

}

private void memberInsertCancel(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberInsertCancel.jsp");

dispatcher.forward(req, resp);

}


private void memberList(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//관리자, 직원만 접근 가능

HttpSession session = req.getSession();

if ((Integer)session.getAttribute("grade") != 1

&& (Integer)session.getAttribute("grade") != 2) {

resp.sendRedirect("login.mem");

}

//----------------------------------

//등급별 회원 명단 출력 부분 추가

String grade = req.getParameter("grade");

if (grade == null) {

grade = "0";

}

//등급별로 쿼리의 다른 조건식 생성

String wheres = "";

if (!grade.equals("0")) {

wheres = String.format("WHERE grade=%s", grade);

}

//----------------------------------

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

//----------------------------------

//등급별 출력 이전 쿼리

//arrayList = dao.lists();

//등급별 출력 이후 쿼리

arrayList = dao.lists(wheres);

//----------------------------------

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

req.setAttribute("arrayList", arrayList);

RequestDispatcher dispatcher

= req.getRequestDispatcher("memberList.jsp");

dispatcher.forward(req, resp);

}


private void adminUpdateForm(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//관리자만 접근 가능

HttpSession session = req.getSession();

if ((Integer)session.getAttribute("grade") != 1) {

resp.sendRedirect("login.mem");

}

//아이디 수신

//해당 아이디에 대한 개인정보(MemberDTO) 읽어오기

//수정 페이지에 전송 준비

//수정 페이지(adminUpdateForm.jsp)로 이동

String id = req.getParameter("id");

MemberDTO dto = new MemberDTO();

MemberDAO dao = new MemberDAO();

try {

dao.connect();

dto = dao.searchId(id);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

req.setAttribute("dto", dto);

RequestDispatcher dispatcher

= req.getRequestDispatcher("adminUpdateForm.jsp");

dispatcher.forward(req, resp);

}

private void adminUpdate(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//관리자만 접근 가능

HttpSession session = req.getSession();

if ((Integer)session.getAttribute("grade") != 1) {

resp.sendRedirect("login.mem");

}

//데이터 수신

//UPDATE 쿼리 메소드(adminModify(MemberDTO dto)) 호출

//memberList.con으로 이동

req.setCharacterEncoding("euc-kr");

String id = req.getParameter("id");

String name = req.getParameter("name");

String email = req.getParameter("email");

String tel = req.getParameter("tel");

String grade = req.getParameter("grade");

//-----------------------------

//입력 오류 처리 필요

//오라클에서는 입력 데이터에 

//작은따옴표(')가 있으면

//입력 오류 발생됨

//작은따옴표(')를 두 번 입력('')하면 해결됨.

name = name.replaceAll("'", "''");

email = email.replaceAll("'", "''");

tel = tel.replaceAll("'", "''");

//-----------------------------

MemberDAO dao = new MemberDAO();

try {

dao.connect();

MemberDTO dto = new MemberDTO();

dto.setId(id);

dto.setName(name);

dto.setEmail(email);

dto.setTel(tel);

dto.setGrade(Integer.parseInt(grade));

dao.adminModify(dto);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try {

dao.close();

} catch (SQLException e) {

}

}

String url = String.format("memberList.mem");

resp.sendRedirect(url);

}

}





//adminUpdateForm.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ page import="com.test.*" %>    

<%

MemberDTO dto

= (MemberDTO)request.getAttribute("dto");

String id = dto.getId();

String name = dto.getName();

String email = dto.getEmail();

String tel = dto.getTel();

int gradeIndex = dto.getGrade();

String[] array = {"관리자", "직원", "학생", "회원가입"};

String grade = array[dto.getGrade()-1];

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Java 전문 교육센터</title>


<link rel="stylesheet" type="text/css" href="common.css">

<link rel="stylesheet" type="text/css" href="table.css">


<script type="text/javascript" src="consultation.js"></script>


<script type="text/javascript">

function adminUpdateFormSubmit() {

var adminUpdateForm = document.getElementById("adminUpdateForm");

adminUpdateForm.submit();

}

function radioCheck() {

var radios = document.getElementsByName("grade");

radios[<%=gradeIndex-1%>].checked = true;

}

</script>


</head>

<body onload="radioCheck()">

<div>


<%-- 메인메뉴를 import 구문으로 대체 --%>

<c:import url="mainMenu.jsp"></c:import>

<div>

<h3>[*회원명단_회원수정]</h3>

<form action="adminUpdate.mem" method="post" id="adminUpdateForm">

<input type="hidden" name="id" value="<%=id%>">

<table cellpadding="5" class="style01 borderTop borderBottom">

<tr>

<td class="tName" width="250px">아이디</td>

<td class="bTitle"><%=id%></td>

</tr>

<tr>

<td class="tName" width="250px">이름<span style="font-size:9pt;">(20자 이내)</span></td>

<td class="bTitle"><input type="text" id="name" name="name" value="<%=name%>"></td>

</tr>

<tr>

<td class="tName" width="250px">이메일<span style="font-size:9pt;">(100자 이내)</span></td>

<td class="bTitle"><input type="text" id="email" name="email" style="width:300px" value="<%=email%>"></td>

</tr>

<tr>

<td class="tName" width="250px">전화<span style="font-size:9pt;">(30자 이내)</span></td>

<td class="bTitle"><input type="text" id="tel" name="tel" style="width:300px" value="<%=tel%>"></td>

</tr>

<tr>

<td class="tName" width="250px">등급(<%=grade%>)</td>

<td class="bTitle">

<input type="radio" name="grade" value="1">관리자

<input type="radio" name="grade" value="2">직원

<input type="radio" name="grade" value="3">학생

<input type="radio" name="grade" value="4">회원가입

</td>

</tr>

</table>

<br><br>

<a href="javascript:adminUpdateFormSubmit()">[회원수정]</a>

<a href="memberList.mem">[회원명단]</a>

</form>

</div>

</div>


</body>

</html>





//MemberDAO.java

package com.test;


import java.sql.*;

import java.util.ArrayList;


public class MemberDAO {

private Connection conn;

public void connect()

throws ClassNotFoundException, SQLException {

conn = DBConn.getConnection();

}

public void close()

throws SQLException {

DBConn.close();

}


public MemberDTO login(String id, String pw) 

throws SQLException {


MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s' AND pw=encrypt('%s', '%s')", id, pw, id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public MemberDTO searchId(String id)

throws SQLException {

MemberDTO dto = null;

String sql = String.format("SELECT id, name, email, tel, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate, grade FROM jmember WHERE id='%s'", id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setEmail(rs.getString("email"));

dto.setTel(rs.getString("tel"));

dto.setWdate(rs.getString("wdate"));

dto.setGrade(rs.getInt("grade"));

}

rs.close();

return dto;

}

public int add(MemberDTO dto)

throws SQLException {

int result = 0;

String sql = String.format("INSERT INTO jmember (id, pw, name, email, tel, wdate) VALUES ('%s', encrypt('%s', '%s'),'%s', '%s', '%s', SYSDATE)", dto.getId(), dto.getPw(), dto.getId(), dto.getName(), dto.getEmail(), dto.getTel());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

public ArrayList<MemberDTO> lists() 

throws SQLException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

String sql = String.format("SELECT id, name, tel, email, grade, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate FROM jmember ORDER BY grade ASC, name ASC");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

MemberDTO dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setTel(rs.getString("tel"));

dto.setEmail(rs.getString("email"));

dto.setGrade(rs.getInt("grade"));

dto.setWdate(rs.getString("wdate"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

public ArrayList<MemberDTO> lists(String wheres) 

throws SQLException {

ArrayList<MemberDTO> arrayList

= new ArrayList<MemberDTO>();

String sql = String.format("SELECT id, name, tel, email, grade, TO_CHAR(wdate, 'YYYY-MM-DD HH24:MI') AS wdate FROM jmember %s ORDER BY grade ASC, name ASC", wheres);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

MemberDTO dto = new MemberDTO();

dto.setId(rs.getString("id"));

dto.setName(rs.getString("name"));

dto.setTel(rs.getString("tel"));

dto.setEmail(rs.getString("email"));

dto.setGrade(rs.getInt("grade"));

dto.setWdate(rs.getString("wdate"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

public int adminModify(MemberDTO dto)

throws SQLException {

int result = 0;

String sql = String.format("UPDATE jmember SET name='%s', email='%s', tel='%s', grade=%d WHERE id='%s'", dto.getName(), dto.getEmail(), dto.getTel(), dto.getGrade(), dto.getId());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

}




//요청주소

http://localhost:8090/ConsultationServlet_20121207/consultList.con


-----------------------------------------------

상담 게시판 회원 수정(관리자 전용) 까지 작성됨.


WRITTEN BY
빨강꼬마

,