티스토리 뷰
1. 오라클에서 테이블 생성하기. 스크립트 실행(F5) -> 커밋(F11)
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');
2. ORACLE_MEMBER 테이블이 생성되었다.
3. index.jsp - get방식으로 요청했다.
<%@ 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");
//response.sendRedirect(request.getContextPath()+"/Mlist/m_list.ksmart_m");
%>
3. Mcontroller 생성하기.
1) 패키지 생성
2) 서블릿 생성 - avax.servlet.http.HttpServlet 로 부터 상속받은 클래스를Servlet 이라고 한다
3) MController2 화면 -
1. get 방식요청 -> doGet 메서드 실행
2. post 방식요청 -> doPost 메서드 실행
package kr.or.ksmart.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MController2")
public class MController2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public MController2() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("1-1 doGet 메서드 실행 MController2.java");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("1-2 doPost 메서드 실행 MController2.java");
}
}
4. web.wml
<- WEB-INF 하위에 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>OracleMVCMG</display-name>
<servlet>
<servlet-name>MController2</servlet-name>
<servlet-class>
kr.or.ksmart.controller.MController2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MController2</servlet-name>
<url-pattern>*.ksmart_m</url-pattern>
</servlet-mapping>
web.xml 설정정보에 url-pattern *.ksmart_m 확장자를 만날 경우
kr.or.ksmart.controller.MController servlet 클래스내 doGet 또는 doPost 자동 호출된다.
5. index 실행 후
6. doPro 메서드 생성하여 doGET, doPost 메서드를 만나면 실행되게 하자.
package kr.or.ksmart.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MController2")
public class MController2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public MController2() {
super();
}
protected void doPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("2 doPro 메서드 실행 MController2.java");
System.out.println(request + "<-- request, doPro MController2.java");
System.out.println(response + "<-- response, doPro MController2.java");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("1-1 doGet 메서드 실행 MController2.java");
doPro(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("1-2 doPost 메서드 실행 MController2.java");
doPro(request, response);
}
}
첫번째 매개변수(객체참조변수) request와
두번째 매개변수(객체참조변수) response 에 각각의 주소값이 입력되었다.
HttpServletRequest interface data type 으로 선언한 request 객체참조변수에
org.apache.catalina.connector.RequestFacade
통해 생성된 객체의 주소값을 받는다
org.apache.catalina.connector.RequestFacade 클래스는
HttpServletRequest interface로 부터 구현을 명령 받았다.
7. get이나 post 방식에 관계없이 전체경로를 기준으로 /프로젝트 하위경로를 추출하려고 한다.
/ | o | r | a | c | l | e | _ | j | i | n | _ | w | o | r | k | / |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
substring(시작할 index)
경로의 16번째 자리부터 문자열을 가져왔다.
8. 추출한 경로가 맞는지 확인한다.
if(command.equals("/Min/m_insert_form.ksmart_m")) {
System.out.println("03-01 조건문 /Min/m_insert_form.ksmart_m");
}
9. forward, redirect 경로 정해주기
MActionForward.java
package kr.or.ksmart.forward;
public class MActionForward {
private boolean isRedirect=false;
private String path=null;
public boolean isRedirect() {
return isRedirect;
}
public void setRedirect(boolean isRedirect) {
this.isRedirect = isRedirect;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
MController2,java doPro메서드에 코드 추가
MActionForward forward = null;
if(command.equals("/Min/m_insert_form.ksmart_m")) {
System.out.println("03-01 조건문 /Min/m_insert_form.ksmart_m");
}
if(command.equals("/Min/m_insert_form.ksmart_m")) {
System.out.println("04-01 조건문 /Min/m_insert_form.ksmart_m");
//포워드 or 리다이렉트 설정 및 경로 셋팅
forward = new MActionForward();
forward.setRedirect(false);
forward.setPath("/minsert/m_insert_form.jsp");
}
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);
}
}
실행 후 콘솔창 :
03-01 조건문 /Min/m_insert_form.ksmart_m 04-01 조건문 /Min/m_insert_form.ksmart_m /minsert/m_insert_form.jsp<--- forward.getPath()[jsp 이동경로] MController.java |
화면 : /minsert/m_insert_form.jsp 경로를 찾을 수 없기 때문.
10.
폴더/파일 추가
실행 후 ->
미리 만들어진 form도 추가하자.
<form action="<%= request.getContextPath() %>/minsert/m_insert_action.jsp" method="post">
<table border="1">
<tr>
<td>아이디</td>
<td><input type="text" name="m_id" size="20"></td>
<tr>
<tr>
<td>암호</td>
<td><input type="text" name="m_pw" size="20"></td>
<tr>
<tr>
<td>권한</td>
<td><input type="text" name="m_level" size="20"></td>
<tr>
<tr>
<td>이름</td>
<td><input type="text" name="m_name" size="20"></td>
<tr>
<tr>
<td>이메일</td>
<td><input type="text" name="m_email" size="20"></td>
<tr>
<tr>
<td colspan="4"><input type="submit" value="회원가입버튼"></td>
</tr>
</table>
11. 화면 만들기 끝!
'41기 개발자과정' 카테고리의 다른 글
20211206 상속, 다형성 (0) | 2021.12.06 |
---|---|
20211205 oracle_MVC(회원관리)_가입 (0) | 2021.12.06 |
20211204 oracle 설치하기 (0) | 2021.12.05 |
20211204 model1, model2 (0) | 2021.12.04 |
20211203 포워드, 리다이렉트 (0) | 2021.12.03 |