정리노트

[JSP] MVC 연습

망고고래 2023. 12. 28. 17:58

MVC 구조에 익숙해지기 위해 간단한 프로젝트를 만들었다. id와 비밀번호만으로 회원가입과 로그인, 정보 조회, 정보 수정과 탈퇴를 진행한다.

오늘은 회원가입과 로그인, 정보 조회까지 제작했다.

 

1. 서블릿

  <servlet>
    <servlet-name>controller1</servlet-name>
    <servlet-class>controller.CRUDcon</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>controller1</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 

 

2. 컨트롤러

package controller;

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 dao.memberDAO;

public class CRUDcon extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("컨트롤러 연결");
		String RequestURI = request.getRequestURI();
		String contextPath = request.getContextPath();
		String command = RequestURI.substring(contextPath.length());
		System.out.println(command);
		
		response.setContentType("text/html; charset=utf-8");
		request.setCharacterEncoding("utf-8");
		
		
		if(command.equals("/addMember.do")) {
			RequestDispatcher rd = request.getRequestDispatcher("/member/memberCreate.jsp");
			rd.forward(request, response);
		}else if(command.equals("/addMemberAction.do")){
			String id = request.getParameter("id");
			String pw = request.getParameter("password");
			System.out.println("id: "+id);
			System.out.println("pw: "+pw);
			
			memberDAO dao = memberDAO.getInstance();
			System.out.println("addMember() 호출");
			dao.addMember(id, pw);
			RequestDispatcher rd = request.getRequestDispatcher("/member/addMember_success.jsp");
			rd.forward(request, response);
		}else if(command.equals("/login.do")) {
			RequestDispatcher rd = request.getRequestDispatcher("/member/login.jsp");
			rd.forward(request, response);
		}else if(command.equals("/loginAction.do")) {
			String id = request.getParameter("id");
			String pw = request.getParameter("password");
			System.out.println(id);
			System.out.println(pw);
			
			memberDAO dao = memberDAO.getInstance();
			System.out.println("login() 호출");
			dao.login(id, pw, request);
			
			System.out.println("로그인 성공 이동");
			RequestDispatcher rd = request.getRequestDispatcher("/member/login_success.jsp");
			rd.forward(request, response);
		}else if(command.equals("/memberInfo.do")) {
			memberDAO dao = memberDAO.getInstance();
			System.out.println("memberInfo() 실행");
			dao.memberInfo(request);
			System.out.println("con id: "+request.getAttribute("id"));
			System.out.println("con pw: "+request.getAttribute("pw"));
			System.out.println("memberInfo.jsp 이동");
			RequestDispatcher rd = request.getRequestDispatcher("/member/memberInfo.jsp");
			rd.forward(request, response);
		}
	}
	
}

 

 

3. 모델

package dao;

import java.sql.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import database.DBConnection;

public class memberDAO {
	private static memberDAO dao = new memberDAO();
	public static memberDAO getInstance() {
		return dao;
	}
	
	public void addMember(String id, String pw) {
		System.out.println("addMember() 실행");
		
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			conn = DBConnection.getConnection();
			
			String sql = "insert into member values(?,?)";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.setString(2, pw);
			pstmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
				try {
					if(pstmt != null)
					pstmt.close();
					if(conn != null)
						conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}

		}
		
	}

	public void login(String id, String pw, HttpServletRequest request) {
		System.out.println("login() 실행");
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			conn = DBConnection.getConnection();
			
			String sql = "select * from member where member_id=? and member_pw=?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.setString(2, pw);
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				HttpSession session = request.getSession();
				session.setAttribute("sessionId", id);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if(pstmt != null)
				pstmt.close();
				if(conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
	}//login()
	public void memberInfo(HttpServletRequest request) {
		System.out.println("memberInfo() 실행");
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			conn = DBConnection.getConnection();
			HttpSession session = request.getSession();
			String sessionId = (String)session.getAttribute("sessionId");
			
			String sql = "select * from member where member_id=?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, sessionId);
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				String id = rs.getString("member_id");
				String pw = rs.getString("member_pw");
				System.out.println("rs id: "+id);
				System.out.println("rs pw: "+pw);
				
				request.setAttribute("id", id);
				request.setAttribute("pw", pw);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if(pstmt != null)
				pstmt.close();
				if(conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
	}

}//class

 

 

HTML 페이지는 아주 간단하게 a태그와 폼만 있기 때문에 코드는 생략한다.

 

'정리노트' 카테고리의 다른 글

[SQL] 데이터베이스 기본, SQL 기본 문법  (0) 2024.01.02
[JSP] MVC - 비즈니스의 역할  (0) 2023.12.29
[JSP] 게시판  (0) 2023.12.27
[JSP] MVC  (0) 2023.12.26
[JSP] JSTL  (0) 2023.12.22