39_01단계_oracle_MVC(회원관리)_00 Oracle서버 구축 및 화면연결

2022. 1. 23. 21:30ksmart_jsp/07_jsp_java_MVC_model02_Oracle

728x90
목록
00 Oracle서버 구축 및 화면연결
     01_MController 연결
     02_MController_doPro 선언 및 호출
     03_MController_URI 매핑 경로 확인
     04_MActionForward생성_forward경로 세팅
     05_forward_redirect 조건 처리 후 view 경로 확인
01 가입화면
02 가입처리
03 리스트
04 입력화면
05 입력처리
06 상세보기
07 답글등록화면
08 답글등록처리
09 수정화면
10 수정처리
11 삭제화면
12 삭제처리

create table oracle_member(
ora_id VARCHAR2(10) NOT NULL PRIMARY KEY,
ora_pw VARCHAR2(10) NOT NULL,
ora_level VARCHAR2(10) NOT NULL,
ora_name VARCHAR2(20) NOT NULL,
ora_email VARCHAR2(80)
); 
insert into oracle_member values('id001','pw001','관리자','홍01','001@ksmart.or.kr');
insert into oracle_member values('id002','pw002','판매자','홍02','002@ksmart.or.kr');
insert into oracle_member values('id003','pw003','구매자','홍03','003@ksmart.or.kr');
insert into oracle_member values('id004','pw004','구매자','홍04','004@ksmart.or.kr');
insert into oracle_member values('id005','pw005','구매자','홍05','005@ksmart.or.kr');

mysqljavajsp42.war
1.65MB

URI Action클래스 View
/Min/m_insert_form.ksmart_m   m_insert_form.jsp
/Min/m_insert_pro.ksmart_m MInsertProAction  
/Mlist/m_list.ksmart_m MListProAction m_list.jsp
/Mup/m_update_form.ksmart_m MUpdateFormAction m_update_form.jsp
/Mup/m_update_pro.ksmart_m MUpdateProAction  
/Mdel/m_delete_pro.ksmart_m MDeleteProAction m_delete_pro.jsp
/Msearch/m_search_form.ksmart_m MSearchFormAction m_search_form.jsp
/Msearch/m_search_list.ksmart_m MSearchProAction m_search_list.jsp

 

패키지명 클래스명 메서드
kr.or.ksmart.controller MController void doGet
    void doPost
kr.or.ksmart.dto Member  
kr.or.ksmart.dao Mdao  
kr.or.ksmart.action MInsertProAction  
  MListProAction  
  MUpdateFormAction  
  MUpdateProAction  
  MDeleteProAction  
  MSearchFormAction  
  MSearchProAction  
kr.or.ksmart.Inter MActionInterFace  
kr.or.ksmart.forward MActionForward  

 

경로 파일명 설명
/minsert m_insert_form.jsp  입력화면 및 처리
  m_insert_pro.jsp 삭제됨
/mlist m_list.jsp 전체리스트
/mupdate m_update_form.jsp 수정화면 및 처리
  m_update_pro.jsp  수정됨
/mdelete m_delete_pro.jsp 삭제됨
/msearch m_search_form.jsp 검색화면 및 처리
  m_search_list.jsp  

 

index.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
response.sendRedirect(request.getContextPath()+"/Min/m_insert_form.ksmart_m");
%>

리다이렉트 방식으로 m_insert_form.ksmart_m으로 이동

가상의 경로 설정

연결된 파일 경로가 없어서 404에러가 뜬다.

@uri 경로 맵핑 시켜서 처리 시켜줘야한다.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MController</display-name>
  <servlet>
    <servlet-name>MController</servlet-name>
    <servlet-class>
		kr.or.ksmart.controller.MController</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MController</servlet-name>
    <url-pattern>*.ksmart_m</url-pattern>
  </servlet-mapping>
  
  
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

 


01_MController 연결

패키지명 kr.or.ksmart.controller
servlet MController.java

javax.servlet.http.HttpServlet로 부터 상속받은 클래스를 Servlet 이라고 한다

get방식으로 요청하면 doGet메서드 실행
post방식으로 요청하면 doPost메서드 실행 되는 지를 확인 하자

 

주석값을 할당받는것은 http가 클래스라면 주소를 할당 받을 것이고

interface는 구현을 명령받은 클래스 requestfacade로 예상을 할 수 있다.

doGet 메서드 호출 시 입력을 예상 할 수 있다.

package kr.or.ksmart.controller;

import java.io.IOException;

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

public class MController extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public MController() {
        super();
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-1 doGet 실행 MController.java");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-2 doPost 실행 MController.java");
	}

}

 


02_MController_doPro 선언 및 호출

@doGet과 doPost 를 하나의 메서드로 처리하기 위해

Process의 줄임말로 doPro http 서블릿으로부터 오버라이딩되어 선언 된 메서드가 아닌 일반 메서드를 선언한다.

protected void doPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     System.out.println("2 doPro 실행 MController.java");
}

호출

doPro(request,response);

02_MController_doPro 선언 및 호출 최종

package kr.or.ksmart.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MController extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public MController() {
        super();
    }
    protected void doPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	request.setCharacterEncoding("euc-kr");
    	System.out.println("2 doPro 실행 MController.java");
    	System.out.println(request + "<- request 2 doPro 실행 MController.java");
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-1 doGet 실행 MController.java");
		doPro(request,response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-2 doPost 실행 MController.java");
		doPro(request,response);
	}

}

 


03_MController_URI 매핑 경로 확인

@다른 가상의 경로를 추출하기 위한 작업

http://localhost:8082/Oracle_MVC_MG42/Min/m_insert_form.ksmart_m 경로에서 /Min/m_insert_form.ksmart_m 추출

package kr.or.ksmart.controller;

import java.io.IOException;

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

public class MController extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public MController() {
        super();
    }
    protected void doPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	request.setCharacterEncoding("euc-kr");
    	System.out.println("2 doPro 실행 MController.java");
    	////////////////////////////////////////////////////////////////////////////
        
        //////////////////////03_MController_URI매핑경로확인/////////////////////////
        
        ////////////////////////////////////////////////////////////////////////////
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-1 doGet 실행 MController.java");
		doPro(request,response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("1-2 doPost 실행 MController.java");
		doPro(request,response);
	}

}​
//////////////////////////////////////////////////////////////////////////////
////////////////////////03_MController_URI매핑경로확인/////////////////////////
String RequestURI=request.getRequestURI();

생성된 객체의 주소가 있고 접근이 가능

String RequestURI = "/Oracle_MVC_MG42/Min/m_insert_form.ksmart_m";

request객체참조변수에 할당된 주소를 찾아가서 메서드 영역에 getReqeustURI를 호출하면

http://localhost:8082/Oracle_MVC_MG42/Min/m_insert_form.ksmart_m

가 실행이 되고 리턴 값으로 /프로젝트명 하위 경로를 메서드 호출 한 곳으로 리턴한다.

String contextPath=request.getContextPath();​

String contextPath="/Oracle_MVC_MG42";

String command=RequestURI.substring(contextPath.length());​

String command=RequestURI.substring(16);
String command="/Min/m_insert_form.ksmart_m";

System.out.println(RequestURI + "<-- RequestURI MController.java");
System.out.println(contextPath + "<-- contextPath MController.java");
System.out.println(contextPath.length() + "<-- contextPath.length() MController.java");
System.out.println(command + "<-- command MController.java");
System.out.println("----------MController.java----------------");
System.out.println((command.equals("/Min/m_insert_form.ksmart_m")) + "<- 조건문 true or false  MController.java");

//////////////////////////////////////////////////////////////////////////////

03_MController_URI 매핑 경로 확인 최종

package kr.or.ksmart.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;


public class MController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public MController() {
		super();
	}

	protected void doPro(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("euc-kr");
		System.out.println("2 doPro 실행 MController.java");
		System.out.println(request + "<- request 2 doPro 실행 MController.java");
		System.out.println(response + "<- response 2 doPro 실행 MController.java");
		String RequestURI = request.getRequestURI();
		// String RequestURI = "/Oracle_MVC_MG42/Min/m_insert_form.ksmart_m";
		String contextPath = request.getContextPath();
		// String contextPath="/Oracle_MVC_MG42";
		String command = RequestURI.substring(contextPath.length());
		// String command=RequestURI.substring(16);
		// String command="/Min/m_insert_form.ksmart_m";
		System.out.println(RequestURI + "<-- RequestURI MController.java");
		System.out.println(contextPath + "<-- contextPath MController.java");
		System.out.println(contextPath.length() + "<-- contextPath.length() MController.java");
		System.out.println(command + "<-- command MController.java");
		System.out.println("----------MController.java----------------");
		System.out.println((command.equals("/Min/m_insert_form.ksmart_m")) + "<- 조건문 true or false  MController.java");

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("1-1 doGet 실행 MController.java");
		doPro(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("1-2 doPost 실행 MController.java");
		doPro(request, response);
	}

}

 


04_MActionForward생성_forward경로 세팅

@index 실행 했을 때 요청한 uri 맵핑 경로

redirect -> 제어의 흐름, 경로가 완전히 이동
forward -> 주소를 그대로 유지하면서 화면만

2022.01.17 - [SW개발/Java] - Redirect 와 Forward 차이

조건문 실행

if(command.equals("/Min/m_insert_form.ksmart_m ")) {
	System.out.println("3-1 /Min/m_insert_form.ksmart_m 조건문 실행");
}

패키지명 kr.or.ksmart.forward
클래스명 MActionForward
package kr.or.ksmart.forward;

public class MActionForward {
	private boolean isRedirect=false;//isRedirect가 false면 포워드,true면 리다이렉트
	private String path=null;
	//default 생성자 메서드 선언
	public MActionForward() {
		
	}
	public boolean isRedirect() {
		return isRedirect;
	}
	public void setRedirect(boolean isRedirect) {
		System.out.println(isRedirect + "<- isRedirect setRedirect MActionForward.java");
		this.isRedirect = isRedirect;
	}
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		System.out.println(path + "<- path setPath MActionForward.java");
		this.path = path;
	}
	
}

 


05_forward_redirect 조건 처리 후 view 경로 확인

MActionForward forward = null;
MActionInterFace action = null;

MActionForward 클래스 데이터 타입으로 객체참조변수 forward 선언하고 null 값을 넣어 초기화

MActionInterFace 인터페이스 데이터 타입으로 객체참조변수 action 선언하고 null 값을 넣어 초기화

 

@경로를 확인하는 if문

if(command.equals("/Min/m_insert_form.ksmart_m")) {
	System.out.println("3-1 /Min/m_insert_form.ksmart_m 조건문 실행 MController.java");
	forward = new MActionForward();
//MActionForward 클래스 통해 생성된 객체 내에 forward 하기 위한 경로 세팅
	forward.setRedirect(false);
//초기값이 false이므로 생략 가능
	forward.setPath("/minsert/m_insert_form.jsp");
//forward는 절대경로가 프로젝트명 다음부터
}else if(command.equals("/Min/m_insert_pro.ksmart_m")) {
	System.out.println("3-2 /Min/m_insert_pro.ksmart_m 조건문 실행 MController.java");
}

 

@forward 할것인가 redirect 할것인가?

 

if(forward != null){
	if(forward.isRedirect()){
		response.sendRedirect(forward.getPath());
	}else{
		RequestDispatcher dispatcher=
		request.getRequestDispatcher(forward.getPath());
		System.out.println(forward.getPath() + "<--- forward.getPath()[jsp 이동경로]  MController.java");
		System.out.println();
		dispatcher.forward(request, response);
	}
}​

 

05_forward_redirect 조건 처리 후 view 경로 확인 최종

 

package kr.or.ksmart.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 kr.or.ksmart.Inter.MActionInterFace;
import kr.or.ksmart.action.MInsertProAction;
import kr.or.ksmart.forward.MActionForward;

public class MController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public MController() {
		super();
	}

	protected void doPro(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("euc-kr");
		System.out.println("2 doPro 실행 MController.java");
		System.out.println(request + "<- request 2 doPro 실행 MController.java");
		System.out.println(response + "<- response 2 doPro 실행 MController.java");
		String RequestURI = request.getRequestURI();
		// String RequestURI = "/Oracle_MVC_MG42/Min/m_insert_form.ksmart_m";
		String contextPath = request.getContextPath();
		// String contextPath="/Oracle_MVC_MG42";
		String command = RequestURI.substring(contextPath.length());
		// String command=RequestURI.substring(16);
		// String command="/Min/m_insert_form.ksmart_m";
		System.out.println(RequestURI + "<-- RequestURI MController.java");
		System.out.println(contextPath + "<-- contextPath MController.java");
		System.out.println(contextPath.length() + "<-- contextPath.length() MController.java");
		System.out.println(command + "<-- command MController.java");
		System.out.println("----------MController.java----------------");
		System.out.println((command.equals("/Min/m_insert_form.ksmart_m")) + "<- 조건문 true or false  MController.java");
		MActionForward forward = null;
		MActionInterFace action = null;
		if (command.equals("/Min/m_insert_form.ksmart_m")) {
			System.out.println("3-1 /Min/m_insert_form.ksmart_m 조건문 실행 MController.java");
			forward = new MActionForward();
			forward.setRedirect(false);
			forward.setPath("/minsert/m_insert_form.jsp");
		} else if (command.equals("/Min/m_insert_pro.ksmart_m")) {
			System.out.println("3-2 /Min/m_insert_pro.ksmart_m 조건문 실행 MController.java");
			action = new MInsertProAction();
			try {
				forward = action.execute(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		// --- 만약에 forward 객체참조변수 담겨있는 값이 null이 아니면
		// --- 포워드 할 것인가? 리다이렉트 할것인가?
		if (forward != null) {
			if (forward.isRedirect()) {
				response.sendRedirect(forward.getPath());
			} else {
				RequestDispatcher dispatcher = request.getRequestDispatcher(forward.getPath());
				System.out.println(forward.getPath() + "<--- forward.getPath()[jsp 이동경로]  MController.java");
				System.out.println();
				dispatcher.forward(request, response);
			}
		}

	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("1-1 doGet 실행 MController.java");
		doPro(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("1-2 doPost 실행 MController.java");
		doPro(request, response);
	}

}

 

index.jsp 를 실행하면 404에러가 뜬다 폴더와 파일이 없어서

728x90