JSP/model 2

MVC 회원관리 (1) - 환경설정

Kiwisae 2022. 9. 16. 16:50
  • DBCP 방식
  • request, session 객체 공유 설정
  • Controller 클래스 : Java Servlet
  • Service, DTO, DAO 클래스, Model (Service + DAO)
  • View (화면 인터페이스) : EL, JSTL 사용

 

 

프로그램 구조

 

Java Resources > src Controller 클래스 Controller  MemberController.java  
DTO 클래스 model MemberDTO.java  
DAO 클래스 dao MemberDAO.java  
Action 인터페이스 service Action.java  
ActionForward 클래스 ActionForward.java  
회원가입 MemberInsert.java  
ID중복검사 IdCheck.java  
로그인 Login.java  
로그아웃 Logoug.java  
정보수정 폼 UpdateMember.java  
정보수정 Update.java  
회원탈퇴 폼 DeleteMember.java  
회원탈퇴 Delete.java  
WebContent > member 회원가입 폼 memberform.html member.jsp  
ID 중복검사 idcheck.jsp    
로그인 폼 loginform.jsp login.jsp main.jsp
수정 폼 updateform.jsp update.jsp  
삭제 폼 deleteform.jsp delete.jsp  
로그아웃 logout.jsp    
인덱스 index.jsp    
WebContent > WEB-INF
> lib
라이브러리 cos.jar jstl-1.2jar ojdbc6.jar
WebContent > META-INF 커넥션 풀 context.xml    
WWebContent > sql DB member.sql    

 

 

 

 

MVC 구조

 

 

 

 

 

 


 

 

 

 

 

 

 

DTO 클래스

 

 

 

 

 

DAO 클래스 초기설정

 

 

 

 

Controller 클래스 생성

확장자가 .java로 되어 있지만, 자바 생성 클래스가 아닌 Servlet으로 생성한다

 

 

 

 

 

 

어노테이션 값을 수정한다.

문서를 생성하면 파일명으로 지정되어 있는 것이 기본값인데,

패턴을 지정하여 수정한다.

 

@WebServlet("*.do")

 

확장자 .do로 들어오는 요청을 받는다는 의미이다.

이 확장자 do는 임의로 정한 값이다.

 

 

실무에서는 회사명이나 임의의 암호 같은 것으로 정하기도 한다.

예를 들어 네이버에서는 이런식으로 사용하기도 한다.

 

 

 

다음과 같이 doProcess() 메소드를 생성한다

이 메소드는 doGet()과 doPost()의 공통 작업을 처리할 예정이다.

 

 

 

doGet() 메소드와 doPost() 메소드에서 doProcess() 메소드를 호출한다.

System.out.println으로 콘솔에 메시지를 출력하여 어떤 방식으로 호출되었는지 쉽게 알 수 있도록 한다.

 

 

 

 

doProcess() 메소드의 내용을 작성한다.

 

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	String requestURI = request.getRequestURI();	// URI명 구하기
	String contextPath = request.getContextPath();	// 현재 프로젝트명 구하기
	String command = requestURI.substring(contextPath.length());
		
	System.out.println("requestURI : "+requestURI);
	System.out.println("contextPath : "+contextPath);
	System.out.println("command : "+command);
}

 

콘솔창에는 다음과 같은 내용이 출력된다.

 

 

 

 

loginform.jsp의 action 값을 다음과 같이 설정 해본다.

<form method="post" action="<%=request.getContextPath() %>/Login.do">

 

 

 

 

loginform.jsp를 실행하고 아무 값이나 넣어 로그인을 해보면 

브라우저에는 빈 화면이 출력되지만 콘솔창에는 다음과 같은 정보가 나온다.

이런 과정이 없으면 추후 에러 발생 시 찾아내기가 힘들어진다.

 

 

 

 

 

 

Action 인터페이스와 ActionForward 클래스

 

 

구현 클래스들은 Action.java의 인터페이스를 상속받고, 추상 메소드를 메소드 오버라이딩 하여

통일성 있게 구현한다.

 

 

 

 

Action.java는 확장자가 .java지만

클래스가 아닌 인터페이스로 생성한다.

 

 

 

 

추상 메소드를 작성한다.

매개변수로 request와 response를 설정한다

 

package service;

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

public interface Action {
	
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception;

}

 

 

 

 

 

ActionFoward.java는 인터페이스가 아닌 클래스로 생성한다.

 

private인 두 필드를 설정 후 getters-setters 메소드를 생성한다.

redirect는 포워딩 방식을 담당하고, path는 포워딩 페이지 설정을 담당한다.

 

이때, redirect의 경우 getRedirect가 아닌 isRedirect로 설정이 되어 있다.

 

	private boolean redirect;	// 포워딩 방식 설정
	private String path;		// 포워딩 페이지 설정
	
	
	public boolean isRedirect() {
		return redirect;
	}
	public void setRedirect(boolean redirect) {
		this.redirect = redirect;
	}
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		this.path = path;
	}