JSP/JSP 공부

[jsp] 2. ProductController 만들기! (product 연결)

congs 2023. 5. 11. 11:04

 

페이지에서 페이지로 이동하는 경우,  controller를 거쳤다가 가야함!!!

그래서 controller에  (페이지에서 받고, 페이지에서 보내는 설정)을 해줘야함!

 

== 해야하는 설정 ==

  1. doGet, doPost (받는 값이 get일 경우, 받는 값이 post일 경우) 설정
    • 먼저, 서비스를 호출해서 받음
    • 다시 보내는 값을 do, post, service 등 어떤것으로 할지 설정!
    • 여기서는 둘 다 service로 보내는 걸로 설정했음
  2. service 설정
    • 받을때와 보낼때 인코딩 설정해주기
    • 단, 보내는 값은 추가적으로 컨텐츠의 타입을 정해서 보내주어야함!

package controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import service.ProductService;
import service.Service;

public class ProductController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	//해야하는것 : 상품등록,상품리스트,상품상세,상품수정,상품삭제
	
	//연결순서 : 컨트롤러 -> 서비스 -> dao -> DBconnection
	//컨트롤러 -> 서비스를 호출해서 값을 처리해야함
	//서비스 -> dao에서 서비스를 호출해서 처리
	//dao -> DBconnection을 연결해서 처리
	
	private Service svc;

    public ProductController() {
        // 생성자
    	svc = new ProductService();
    	
    }

	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// 주 작업 영역 =  서비스 영역
		
		//service(request,response);로 get,서비스로 오는 처리는 모두 서비스로 답변할 예정!
		//이때, post방식으로 데이터 처리를 할 떄 한글이 깨지는 것을 방지
		req.setCharacterEncoding("utf-8"); //받을떄
		res.setCharacterEncoding("utf-8"); //보낼때
		res.setContentType("text/html; charset=utf-8"); //보내는 값의 컨텐츠의 타입을 정해줌 (contentType="text/html; charset=UTF-8")
		
		//요청에 대한 모든것을 담고 있는 객체 uri 생성
		String uri = req.getRequestURI(); //전체 요청경로 (원하는 서비스를 담아옴)
		System.out.println(">>> uri  " + uri);
		//보통은 컨트롤러의 주소/요청서비스로 주는데, 컨트롤러의 주소가 이건하나니까 주소없이 요청서비스만 받아오게 생성!
		
		String context = req.getContextPath(); //프로젝트 명
		System.out.println("프로젝트명: " + context);
		
		//객체를 여기에 거쳤다가 보내야하는 목적지의 주소
		String destPage = ""; //목적지주소
		
		switch(uri) { //if문 사용도 가능은하는데 복잡해서 비추천
		case "/register.pd": 
			destPage = "/register.jsp"; // '/'를 넣어서 폴더변경해서 이동해주기 (/폴더명/jsp파일명.jsp)
			break;

		}
		
		
		
		
		//웹의 목적지 주소에 따라 보내는(연결해주는) 객체
		//destpage로 이동시 응답객체를 싣고 가야함!
		RequestDispatcher rdp = req.getRequestDispatcher(destPage);
		rdp.forward(req, res);
		
		
	}

	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// get방식으로 오는 값을 확인(체킹)
		
		//response.getWriter().append("Served at: ").append(request.getContextPath()); //get으로 보내는 구문
		//서비스로 처리해 보낼예정이라 get으로보내는 구문은 필요가 없음!
		
		//서비스로 보내는 구문
		service(req,res);
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// post방식으로 오는 값을 확인(체킹)
		
		//doGet(request, response); //get으로 보내는 구문
		//서비스로 처리해 보낼예정이라 get으로보내는 구문은 필요가 없음!
		
		//서비스로 보내는 구문
		service(req,res);
	}

}