✿∘˚˳°∘°

54일차 : mvc2WebProject - 1 본문

국비수업/Server

54일차 : mvc2WebProject - 1

_HYE_ 2023. 2. 16. 23:19

20230214

 

index.jsp - header와 footer는 미리 만들어두고 지시자 태그를 이용하여 include

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%@ include file="/WEB-INF/views/common/header.jsp" %>
	<div class="page-content">
		<h1>MVC2 Web Project 메인페이지</h1>
	</div>
	<%@ include file="/WEB-INF/views/common/footer.jsp" %>
</body>
</html>

header.jsp

<%@page import="kr.or.iei.member.vo.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    	Member m = (Member)session.getAttribute("m");
    	//m의 null유무로 로그인인지 아닌지 판단
    %>
	
	<!-- 다른페이지에 삽입될거라 기본 HTML을 다 날린다. -->
	
	<!-- 구글 아이콘 -->
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <!-- jquery -->
    <script src="/js/jquery-3.6.0.js"></script>
    <!-- 기본 CSS -->
    <link rel="stylesheet" href="/css/default.css" />
    <!-- 기본 js -->
    <script src="/js/default.js"></script>
    
    <header>
      <div class="site-logo">
        <a href="#">사이트로고</a>
      </div>
      <nav>
        <ul class="navi">
          <li><a href="#">메뉴-1</a></li>
          <li><a href="#">메뉴-2</a></li>
          <li><a href="#">메뉴-3</a></li>
          <li><a href="#">메뉴-4</a></li>
          <li>
			<a href="#">메뉴-5</a>
            <ul class="sub-navi">
              <li><a href="#">sub-1</a></li>
              <li><a href="#">sub-2</a></li>
              <li><a href="#">sub-3</a></li>
            </ul>
           </li>
        </ul>
      </nav>
      <div class="header-link">
      	<%if(m == null) {%>
        <button class="btn bc11 modal-open-btn" target="#login-modal">SIGN IN</button>
        <a class="btn bc11" href="/signupFrm.do">SIGN UP</a>
      	<%} else{%>
      	<a class="btn bc11" href="#"><%=m.getMemberName() %></a>
      	<a class="btn bc11" href="/logout.do">LOGOUT</a>
      	<%} %>
      </div>
    </header>
    <%if(m == null) {%>
    <!-- 로그인하지 않은 상태에서만 modal창을 보여줄 것 -->
    <div id="login-modal" class="modal-bg">
      <div class="modal-wrap">
        <div class="modal-head">
          <h2>SIGN IN</h2>
          <span class="material-icons close-icon modal-close">close</span>
        </div>
        <form action="/signin.do" method="post">
	        <div class="modal-content">
	          <div class="input-box">
	          	<label for="signId">아이디</label>
	          	<input type="text" name="signId" id="signId" class="input-form" placeholder="아이디입력">
	          </div>
	          <div class="input-box">
	          	<label for="signPw">비밀번호</label>
	          	<input type="password" name="signPw" id="signPw" class="input-form" placeholder="비밀번호입력">
	          </div>
	          <div class="input-box link-box">
	          	<a href="#">아이디/비밀번호 찾기</a>
	          </div>
	        </div>
	        <div class="modal-foot">
	          <button type="submit" class="btn bc11">SIGN IN</button>
	          <button type="button" class="btn bc1 modal-close">취소</button>
	          <!-- button태그는 form태그에서 사용하고 type설정을 하지않을 경우 자동으로 submit -->
	          <!-- 기능으로 사용하고 싶다면 <button type="button"을 반드시 명시 -->
	        </div>
        </form>
      </div>
    </div>
    <%} %>

사용할 alert창 - msg.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    String title = (String)request.getAttribute("title");
    String msg = (String)request.getAttribute("msg");
    String icon = (String)request.getAttribute("icon");
    String loc = (String)request.getAttribute("loc");
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="/js/sweetalert.min.js"></script>
</head>
<body>
	<div style="display : none;">
		<div id="title"><%=title %></div>
		<div id="msg"><%=msg %></div>
		<div id="icon"><%=icon %></div>
		<div id="loc"><%=loc %></div>
	</div>
	<script>
		const title = document.querySelector("#title").innerText;
		const msg = document.querySelector("#msg").innerText;
		const icon = document.querySelector("#icon").innerText;
		const loc = document.querySelector("#loc").innerText;
		//servlet에서 icon이랑 title도 보내기 
		swal({
			title : title,
			text : msg,
			icon : icon
		}).then(function(){
			location.href = loc;		
		});
	</script>
</body>
</html>

 

1. 로그인 (+ 준회원 로그인 제한)

- 헤더와 동일한 코드에서 로그인부분만 떼어온 것 : 로그인을 안했을 때는 sign in과 모달창을 띄우고

  로그인을 했을 경우 이용자의 이름을 불러와 적어준다.

      <div class="header-link">
      	<%if(m == null) {%>
        <button class="btn bc11 modal-open-btn" target="#login-modal">SIGN IN</button>
        <a class="btn bc11" href="/signupFrm.do">SIGN UP</a>
      	<%} else{%>
      	<a class="btn bc11" href="#"><%=m.getMemberName() %></a>
      	<a class="btn bc11" href="/logout.do">LOGOUT</a>
      	<%} %>
      </div>
    </header>
    <%if(m == null) {%>
    <!-- 로그인하지 않은 상태에서만 modal창을 보여줄 것 -->
    <div id="login-modal" class="modal-bg">
      <div class="modal-wrap">
        <div class="modal-head">
          <h2>SIGN IN</h2>
          <span class="material-icons close-icon modal-close">close</span>
        </div>
        <form action="/signin.do" method="post">
	        <div class="modal-content">
	          <div class="input-box">
	          	<label for="signId">아이디</label>
	          	<input type="text" name="signId" id="signId" class="input-form" placeholder="아이디입력">
	          </div>
	          <div class="input-box">
	          	<label for="signPw">비밀번호</label>
	          	<input type="password" name="signPw" id="signPw" class="input-form" placeholder="비밀번호입력">
	          </div>
	          <div class="input-box link-box">
	          	<a href="#">아이디/비밀번호 찾기</a>
	          </div>
	        </div>
	        <div class="modal-foot">
	          <button type="submit" class="btn bc11">SIGN IN</button>
	          <button type="button" class="btn bc1 modal-close">취소</button>
	          <!-- button태그는 form태그에서 사용하고 type설정을 하지않을 경우 자동으로 submit -->
	          <!-- 기능으로 사용하고 싶다면 <button type="button"을 반드시 명시 -->
	        </div>
        </form>
      </div>
    </div>
    <%} %>

Controller(Servlet)

package kr.or.iei.member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import kr.or.iei.member.service.MemberService;
import kr.or.iei.member.vo.Member;

/**
 * Servlet implementation class SigninServlet
 */
@WebServlet(name = "Signin", urlPatterns = { "/signin.do" })
public class SigninServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SigninServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		String signId = request.getParameter("signId");
		String signPw = request.getParameter("signPw");
		Member m = new Member();
		m.setMemberId(signId);
		m.setMemberPw(signPw);
		//3. 비즈니스로직
		MemberService service = new MemberService();
		//입력받은 아이디/패스워드정보가 일치하는 회원정보를 조회
		Member member = service.selectOneMember(m);
		//4. 결과처리
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/common/msg.jsp");
		if(member == null) {
			//아이디와 비밀번호가 틀린경우
			request.setAttribute("title", "로그인 실패");
			request.setAttribute("msg", "아이디 또는 비밀번호를 확인하세요");
			request.setAttribute("icon", "error");
			request.setAttribute("loc", "/");
		}else {
			//아이디와 비밀번호가 일치하는경우
			//준회원의 경우에는 로그인X
			if(member.getMemberLevel() == 3) {
				//준회원인 경우
				request.setAttribute("title", "로그인 권한 없음");
				request.setAttribute("msg", "로그인 권한이 없습니다. 관리자에게 문의하세요.");
				request.setAttribute("icon", "warning");
				request.setAttribute("loc", "/");
			}else {
				//관리자 또는 정회원인경우
				//-> 회원정보를 세션에 저장(서버가 회원 정보를 기억)
				//session은 브라우저를 닫을 때까지 정보를 유지
				//아파치톰캣의 설정 -> 세션의 정보를 파기하거나, 일정시간이 지나면(기본적으로 30분) session을 풀어버림 
				HttpSession session = request.getSession();
				session.setAttribute("m", member);
				//세션에 저장 후 메세지출력
				//request는 다음페이지까지만 사용가
				request.setAttribute("title", "로그인성공");
				request.setAttribute("msg", "환영합니다.");
				request.setAttribute("icon", "success");
				request.setAttribute("loc", "/");
			}						
		}
		view.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

Service

	public Member selectOneMember(Member m) {
		Connection conn = JDBCTemplate.getConnection();
		Member member = dao.selectOneMember(conn, m);
		JDBCTemplate.close(conn);
		return member;
	}

Dao

	public Member selectOneMember(Connection conn, Member m) {
		PreparedStatement pstmt = null;
		ResultSet rset = null;
		Member member = null;
		String query = "select * from member_tbl where member_id = ? and member_pw = ?";
		
		try {
			pstmt = conn.prepareStatement(query);
			pstmt.setString(1, m.getMemberId());
			pstmt.setString(2, m.getMemberPw());
			rset = pstmt.executeQuery();
			if(rset.next()) {
				member = new Member();
				member.setEnrollDate(rset.getString("enroll_date"));
				member.setMemberAddr(rset.getString("member_addr"));
				member.setMemberLevel(rset.getInt("member_level"));
				member.setMemberName(rset.getString("member_name"));
				member.setMemberNo(rset.getInt("member_no"));
				member.setMemberPhone(rset.getString("member_phone"));
				member.setMemberPw(rset.getString("member_pw"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			JDBCTemplate.close(rset);
			JDBCTemplate.close(pstmt);
		}
		return member;
	}

2. 로그아웃

Controller(Servlet)

package kr.or.iei.member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LogoutServlet
 */
@WebServlet(name = "Logout", urlPatterns = { "/logout.do" })
public class LogoutServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LogoutServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출 - 없으므로 생략
		//3. 비즈니스로직
		//세션에 있는 데이터를 파기
		//request.getSession() : 현재 사용중인 세션을 가져온다.
		//-> 현재 존재하는 세션이 없으면 세션을 새로 만들어서 가져옴.(세션이라는 공간을 쓰고있을수도 쓰고있지 않을수도 있음)
		//request.getSession(false) : 현재 사용중인 세션을 가져온다.
		//-> 현재 존재하는 세션이 없으면 null 리턴
		//메소드 오버로딩이 되어있는 것
		HttpSession session = request.getSession(false);
		if(session != null) {
			//세션이 존재할때만 로그아웃작업을 해준다
			session.invalidate();//현재세선을 파기하는 메소드
		}
		//4. 결과처리
		//1) alert띄우고 메인화면
		/*
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/common/msg.jsp");
		request.setAttribute("title", "로그아웃성공");
		request.setAttribute("msg", "안녕히 가세요");
		request.setAttribute("icon", "info");
		request.setAttribute("loc", "/");
		view.forward(request, response);
		*/
		//2) 그냥 메인화면
		//메인페이지로 갈때 보여줄 데이터가 있는지 고려 
		//->보내줄 데이터가 없는경우
		response.sendRedirect("/");
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

 

3. 회원가입(+아이디중복체크)

페이지 이동을 위한 Servlet

package kr.or.iei.member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SignupFrmServlet
 */
@WebServlet(name = "SignupFrm", urlPatterns = { "/signupFrm.do" })
public class SignupFrmServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SignupFrmServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출 - 보내준게없으므로 X
		//3. 비즈니스로직 - 페이지이동이 목적이라 X 
		//4. 결과처리 - forward만을 위한 Servlet
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/member/signupFrm.jsp");
		view.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

회원가입 정보를 입력할 jsp + 아이디중복체크

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	.input-wrap{
		padding : 15px;
	}
	.submit-btn{
		padding : 15px;
		margin : 20px 0px;
	}
	.input-wrap>label{
		display: block;
		margin-bottom: 10px;
	}
	.id-wrap{
		display: flex;
	}
	.id-wrap>#memberId{
		width: 80%;
	}
	.id-wrap>#idChkBtn{
		width: 20%;
	}
</style>
</head>
<body>
	<%@include file="/WEB-INF/views/common/header.jsp" %>
	<div class="page-content">
		<div class="page-title">회원가입</div>
		 <form name="checkIdFrm" action="/checkId.do">
		 <!-- 중복체크를 진행한 폼태그 
		 	  회원 눈에 안보이게 처리 / 중복체크 버튼을 누르면 중복체크가 발생하게 처리 -->
		 	<input type="hidden" name="checkId">
		 </form>
		<form action="/signup.do" method="post">
			<div class="input-wrap">
				<label for="memberId">아이디</label>
				<div class="id-wrap">
					<input type="text" name="memberId" id="memberId" class="input-form">
					<!-- 
						서버에 request를 통해서 response를 받게되면 화면이 새로고침
						-> 중복체크를 하게되면 request를 통해 해당아이디가 있는지 확인하고 response로 값을 받아옴 
						-> 새로고침발생
						방법1. 새창을 뜨게만들어서 중복체크를 하고 입력값이 아이디input에 들어가는것
						방법2. ajax를 이용한방법					
					 -->
					
					<button type="button" id="idChkBtn" class="btn bc2">중복체크</button>
				</div>
			</div>
			<div class="input-wrap">
				<label for="memberPw">비밀번호</label>
				<input type="password" name="memberPw" id="membetPw" class="input-form">
			</div>
			<div class="input-wrap">
				<label for="memberName">이름</label>
				<input type="text" name="memberName" id="memberName" class="input-form">
			</div>
			<div class="input-wrap">
				<label for="memberPhone">전화번호</label>
				<input type="text" name="memberPhone" id="memberPhone" class="input-form" placeholder="010-0000-0000">
			</div>
			<div class="input-wrap">
				<label for="memberAddr">주소</label>
				<input type="text" name="memberAddr" id="memberAddr" class="input-form">
			</div>
			<div class="submit-btn">
				<button type="submit" class="btn bc11 bs4">회원가입</button>
			</div>
		</form>
	</div>
	<script>
		$("#idChkBtn").on("click", function(){
			const memberId = $("#memberId").val();
			if(memberId == ""){
				alert("아이디를 입력하세요.");
				return;
			}
			//입력한 memberId를 숨겨둔 form태그에 val로 넣어줄것
			//숨겨놓은 form태그 내부의 input에 입력한 아이디값 세팅
			$("[name=checkId]").val(memberId);
			//숨겨놓은 form을 바로 submit하면 화면이 새로 로드됨
			//화면이 새로 로드되면 -> 입력했던 정보가 초기화됨
			//-> 새창을 띄운 후 새창에서 숨겨둔 form을 submit진행
			window.open("", "checkId", "left=700px, top=300px, width=300px, height=200px, menubar=no, status=no, scrollbars=yes"); //새로열리는 창 옵션
			//checkId가 창의 이름
			
			//form태그의 target속성에 checkId를 넣음 - 새창과 숨겨둔 form을 연결
			$("[name=checkIdFrm]").attr("target", "checkId");
			$("[name=checkIdFrm]").submit();
			//submit을 하게되면 checkId.do?checkId="입력값"으로 넘어가게된다(get방식)
		});
	</script>
	<%@include file="/WEB-INF/views/common/footer.jsp" %>
</body>
</html>

insert를 진행할 Controller(Servlet)

package kr.or.iei.member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.or.iei.member.service.MemberService;
import kr.or.iei.member.vo.Member;

/**
 * Servlet implementation class SignupServlet
 */
@WebServlet(name = "Signup", urlPatterns = { "/signup.do" })
public class SignupServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SignupServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		Member m = new Member();
		m.setMemberId(request.getParameter("memberId"));
		m.setMemberPw(request.getParameter("memberPw"));
		m.setMemberName(request.getParameter("memberName"));
		m.setMemberPhone(request.getParameter("memberPhone"));
		m.setMemberAddr(request.getParameter("memberAddr"));
		//3. 비즈니스로직
		MemberService service = new MemberService();
		int result = service.insertMember(m);
		//4. 결과처리
		//-> 성공실패에 따라서 alert띄우고 메인으로 이동
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/common/msg.jsp");
		if(result > 0) {
			request.setAttribute("title", "회원가입성공");
			request.setAttribute("msg", "환영합니다.");
			request.setAttribute("icon", "success");
			request.setAttribute("loc", "/");
		}else {
			request.setAttribute("title", "회원가입실패");
			request.setAttribute("msg", "입력 정보를 확인해주세요.");
			request.setAttribute("icon", "error");
			request.setAttribute("loc", "/");
		}
		view.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

 

- Service

	public int insertMember(Member m) {
		Connection conn = JDBCTemplate.getConnection();
		int result = dao.insertMember(conn, m);
		if(result > 0) {
			JDBCTemplate.commit(conn);
		}else {
			JDBCTemplate.rollback(conn);
		}
		return result;
	}

- Dao

	public int insertMember(Connection conn, Member m) {
		PreparedStatement pstmt = null;
		int result = 0;
		String query = "insert into member_tbl values(member_seq.nextval, ?, ?, ?, ?, ?, 3, to_char(sysdate, 'yyyy-mm-dd'))";
		
		try {
			pstmt = conn.prepareStatement(query);
			pstmt.setString(1, m.getMemberId());
			pstmt.setString(2, m.getMemberPw());
			pstmt.setString(3, m.getMemberName());
			pstmt.setString(4, m.getMemberPhone());
			pstmt.setString(5, m.getMemberAddr());
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			JDBCTemplate.close(pstmt);
		}
		return result;
	}

 

중복체크를 위한 Controller(Servlet) - 아래 폼이 이동한다

<form name="checkIdFrm" action="/checkId.do">
		 <!-- 중복체크를 진행한 폼태그 
		 	  회원 눈에 안보이게 처리 / 중복체크 버튼을 누르면 중복체크가 발생하게 처리 -->
		 	<input type="hidden" name="checkId">
</form>
package kr.or.iei.member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.or.iei.member.service.MemberService;
import kr.or.iei.member.vo.Member;

/**
 * Servlet implementation class CheckIdServlet
 */
@WebServlet(name = "CheckId", urlPatterns = { "/checkId.do" })
public class CheckIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CheckIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1.인코딩
		request.setCharacterEncoding("utf-8");
		//2.값추출
		String memberId = request.getParameter("checkId");
		//3.비즈니스로직
		MemberService service = new MemberService();
		Member m = service.selectOneMember(memberId);
		//4.결과처리
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/member/checkId.jsp");
		request.setAttribute("memberId", memberId);//해당아이디는 사용가능합니다/불가합니다에서 아이디를 띄워주기 위해서
		if(m == null) {
			//사용가능한 아이디
			request.setAttribute("result", 0);
		}else {
			//사용불가능한 아이디(이미 존재하는 아이디)
			request.setAttribute("result", 1);
		}
		view.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

Service

	public Member selectOneMember(String memberId) {
		Connection conn = JDBCTemplate.getConnection();
		Member m = dao.selectOneMember(conn, memberId);
		JDBCTemplate.close(conn);
		return m;
	}

Dao

	public Member selectOneMember(Connection conn, String memberId) {
		PreparedStatement pstmt = null;
		ResultSet rset = null;
		Member m = null;
		String query = "select * from member_tbl where member_id=?";
		
		try {
			pstmt = conn.prepareStatement(query);
			pstmt.setString(1, memberId);
			rset = pstmt.executeQuery();
			if(rset.next()) {
				m = new Member();
				m.setEnrollDate(rset.getString("enroll_date"));
				m.setMemberAddr(rset.getString("member_addr"));
				m.setMemberId(rset.getString("member_Id"));
				m.setMemberLevel(rset.getInt("member_level"));
				m.setMemberName(rset.getString("member_name"));
				m.setMemberNo(rset.getInt("member_no"));
				m.setMemberPhone(rset.getString("member_phone"));
				m.setMemberPw(rset.getString("member_pw"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			JDBCTemplate.close(pstmt);
			JDBCTemplate.close(rset);
		}
		return m;
	}

- 로그인과 코드가 비슷하다.

'국비수업 > Server' 카테고리의 다른 글

56일차 : mvc2WebProject - 3  (0) 2023.02.16
55일차 : mvc2WebProject - 2  (0) 2023.02.16
53일차 : JSP, MVC1, MVC2  (0) 2023.02.16
52일차 : DB연결  (0) 2023.02.10
51일차 2 : web, servlet 기초  (0) 2023.02.09
Comments