백엔드/Spring Boot

47 - Spring Boot : JSPCookBook 프로젝트 생성

두개의 문 2023. 7. 5. 16:23
* 폴더 구조 
\application 
                  \controller → 라우팅 기능 
                  \domain     → ( DTO / VO ) ⇒ 데이터   /   DAO ⇒ 메서드 
                  \service     → 데이터 정제 기능 
                  \util            → 기타 기능 

 

 

 1. 파일 생성 , 폴더도 함께 생성시키기 

 

 - Project Package창에서 생성시킨 결과 확인  

 

 

 

 2. index.jsp 파일 생성 , Spring Boot App 실행

 - console창에서 톰캣이 8080 포트로 시작한다는 것 

 → 서버창에 ‘localhost:8080’ 입력 시, Whitelabel Error Page 출력됨 

 

• 현재 톰캣 서버의 포트 : 80 → 'src/main/resources' 내 application.properties 파일에서 서버 포트 변경해주기 

 

  - console창에서 톰캣이 80포트로 시작한다는 것 확인 가능 

 

 

 → 서버창에 ‘localhost:80’ 입력 시, index.jsp 화면 출력됨 

 

 

 

3. controller를 통해 jsp 파일로 접근 : 스프링 부트 방식 

   1) hello.jsp 생성 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
HELLO
</body>
</html>

 

 

   2) HomeController 클래스 생성 

   • ‘@Controller’ 주석 추가 → 라우터 역할 

    - 하나의 컨트롤러에 여러 종류의 관련된 메서드 생성 가능 

    - jsp 파일 만든 , controller 메서드 추가 

package org.choongang.cook.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

// 스프링 부트에서 uri를 분석해 원하는 메서드를 연결해주는 역할 = 라우터 (Router)
// @Controller
// * 컨트롤러 : 요청한 주소(uri)로 처리할 메서드를 연결해주는 기능  
//          → 이 요청을 처리할 View를 호출함 
//			  다른 처리가 필요하다면 서비스나 모델에 의뢰함 
// @RestController
// * 레스트(Rest) 컨트롤러 : 표현할 View가 없고, 실행 후 텍스트값이 생성됨 
//			  일반적으로 텍스트 형식은 JSON 형식 사용함 
// * Controller에서 JSON 출력 가능함 
//   → 메서드에서 결과값 앞에 '@ResponseBody'라는 주석을 붙여주면 됨 

@Controller 
public class HomeController {

	// 요청 uri 처리 : 매핑(mapping)이라는 주석을 사용 
	// @GetMapping : 요청값이 GET 방식으로 요청되었을 때 
	// @PostMapping : 요청값이 POST 방식으로 요청되었을 때 
	// @RequestMapping : 위의 두 가지를 합쳐놓은 통합 형식 
	//   				 → 입력 글자수가 많아 거의 사용하지 않음 
	
	@GetMapping("/") 
	// '/'로 요청이 들어오면, 메서드의 반환값 = view 파일의 이름 
	// 메서드의 구현부에 다른 데이터를 처리할 서비스나 모델을 부름 
	// 그 후 생성된 데이터를 view로 전달함 
	public String home() {
		return "index";
	}
	
	@GetMapping("/hello")
	public String hello() {
		return "hello";
	}
}

 

 3)  console창에 'localhost/hello' 호출

 

 

 

 

 

4. 서블릿을 통해 jsp 파일로 접근 

  1) hi.jsp 생성 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	Servlet를 통해 접근하면, Hi~! 
</body>
</html>

 

 

  2) 서블릿 생성 : HiServletController

       서블릿을 작동시키기 위해서 Application ‘@ServletComponentScan’ 주석 추가

 

package org.choongang.cook.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(name="hiServletController", urlPatterns="/hi")
public class HiServletController extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
	
	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// 이 쪽으로 요청이 오면, view 파일을 호출함 
		req.getRequestDispatcher("/WEB-INF/view/hi.jsp").forward(req, res);
	}
}