- 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;
}
'JSP > model 2' 카테고리의 다른 글
MVC 회원관리 (3) - 로그인 폼 (0) | 2022.09.19 |
---|---|
MVC 회원관리 (2) - 회원가입 (0) | 2022.09.19 |
JSTL 데이터베이스 라이브러리 (0) | 2022.09.16 |
JSTL 국제화 라이브러리 - formatDate, setTimeZone, timeZone, formatNumber (0) | 2022.09.16 |
JSTL 코어 라이브러리 - set, remove, if, choose-when-otherwise, forEach, forTokens, catch, out (0) | 2022.09.16 |