2022. 1. 23. 21:30ㆍksmart_jsp/07_jsp_java_MVC_model02_Oracle
목록
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');
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 -> 주소를 그대로 유지하면서 화면만
조건문 실행
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에러가 뜬다 폴더와 파일이 없어서
'ksmart_jsp > 07_jsp_java_MVC_model02_Oracle' 카테고리의 다른 글
39_01단계_oracle_MVC(회원관리)_02 가입처리 (0) | 2022.01.23 |
---|---|
39_01단계_oracle_MVC(회원관리)_01 가입화면 (0) | 2022.01.23 |