https://github.com/ghrltjdtprbs/Backend
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
pom.xml 파일은 maven의 설정파일
위 항목들은 다음과 같은 라이브러리를 프로젝트에 포함시키기 위함임
(위 설정에 의해 maven이 이 라이브러리를 자동으로 다운로드해 프로젝트에 설치해준다.)
jstl : jstl확장태그를 사용하기 위해 필요한 라이브러리이다.
JSP파일을 servlet으로 변환하는 컴파일러
스프링 부트 앱에 내장된 톰캣 서버에는 tomcat-embed-jasper이 내장되어있지 않다.
만약 이것이 없으면 JSP파일이 실행되지 않고 웹브라우저에서 다운로드된다. 톰캣은 servlet만 실행하고 다른 파일들은 웹브라우저로 그대로 전송하기 때문이다.
스프링부트에는 톰캣서버(servlet container)가 내장되어있다
sevlet container : servlet을 실행하는 서버
(만약 JSP파일을 톰캣서버에서 실행하고 싶다면 tomcat-embed-jasper을 통해 JSP파일을 servlet으로 변환해야함)
컨트롤러(.java) : 실행할 뷰 이름 리턴
뷰(.jsp) : html태그 출력(우리가 보는 화면)
+DTO클래스 : 제품(product)의 이름, 가격 데이터를 넣어서 전달하기 위한 클래스(파라미터로 전달, 리턴값으로 전달)
package net.skhu.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import net.skhu.dto.Product; //DTO클래스를 사용하기 위해
@RestController // RestController은 데이터 전달 역할, 아닌경우 JSON형태로 전환
@RequestMapping("first")
public class FirstController {
@RequestMapping("test1") // url -> first/test1
public String test1() {
return "안녕하세요"; // 리턴값이 문자열이므로 웹브라우저에 그대로 전송
}
...
@RequestMapping("test4")
public Product[] test4() {
return new Product[] { // Product(DTO) 클래스 호출, 리턴값이 배열이므로 JSON형태로 전환해 전송. 자바 객체일 경우에도 동일
new Product("맥주", 2000),
new Product("우유", 1500)
};
}
}
컨트롤러 클래스 : 웹브라우저의 URL요청을 받아 웹서버에서 실행되는 클래스(요청한 URL에 해당하는 컨트롤러의 액션메소드가 자동호출 )
액션메소드 : URL에 해당하는 액션메소드 자동호출
리턴값이 "데이터"이다.
restcontroller가 리턴하는 것이 string문자열일 경우 웹브라우저에 그대로 전송
restcontroller가 리턴하는 것이 배열이나 자바객체일 경우 JSON형태로 변환되어 웹브라우저에 전송된다([]가 있거나 문자열에 "" 붙을경우)
리턴값이 "뷰(view)이름"
뷰이름을 리턴한 후 해당 뷰를 실행한다. 뷰의 실행결과 출력이 웹브라우저에 전송된다.

웹 브라우저가 서버에 요청(HTTTP Request)전달.
+요청 대상을 가리키는 URL이 들어있음
요청을 Spring Web MVC엔진이 받음
+요청된 컨트롤러 액션메소드를 찾아 호출
ex)test3액션 메소드를 찾아 호출
FirstController의 test3 액션 메소드는 Java객체 리턴
ex)Product객체 리턴
리턴된 Java객체는 Spring Web MVC엔진에 의해서 JSON형태의 문자열로 변환
JSON형태의 문자열이 웹브라우저에 전송
+HTTP Request에 대한 HTTP Response
웹 서버로부터 전송된 JSON형태의 문자열이 웹브라우저에 표시
웹브라우저 : 웹서버와 쌍방향 통신하는 HTML문서나 파일에 연동하고 출력할 응용 소프트웨어(크롬,사파리 등)
웹서버 : 웹브라우저로부터 HTTP요청 받음. 필요한 정보를 반환해줌
소프트웨어에서의 서버 : 웹브라우저에게 HTTP요청을 받고 HTMP문서 등의 정보를 반환하는 컴퓨터 프로그램
하드웨어에서이 서버 : 위에 언급한 기능을 제공하는 컴퓨터 프로그램
웹페이지 : 텍스트 ,이미지 등으로 형성된 온라인 페이지. 해당페이지로 연결되는 특정 URL제공
ex)https://github.com/ghrltjdtprbs
웹사이트 : 웹페이지들이 모여 하나의 웹사이트 형성
ex) https://github.com
웹브라우저의 요청(HTTP Request)에 대한 응답(HTTP Response)
대부분 html로 이루어짐(위치 설정은 application.properties에서 가능)
[뷰파일]
http://localhost:8088/second/test2
${product.name}
-> test2.jsp파일에 전달된 데이터(모델 에트리뷰트) 중에 이름이 product객체인 getName() 메소드 호출하고 리턴값으 출력한다.
${product.unitCost}
->product 객체의 getUnitCost()호출하고 리턴값을 출력한다.
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import net.skhu.dto.Product; // dto클래스에서 데이터 받음
@Controller // 뷰이름 리턴
@RequestMapping("second")
public class SecondController {
@RequestMapping("test1")
public String test1(Model model) {
model.addAttribute("message", "안녕하세요");
return "second/test1";
}
@RequestMapping("test2")
public String test2(Model model) {
Product product = new Product("맥주", 2000); //Product에 전달(생성자)
model.addAttribute("product", product); //model attribute값을 product 객체로 받음
return "second/test2";
}
}

웹브라우저가 웹 서버에 HTTP Request전달
요청을 Spring Web MVC가 받고 URL에 일치하는 컨트롤러 액션메소드를 찾아 호출한다.
컨트롤러 액션메소드는 데이터를 모델 객테에 넣는다
컨트롤러 액션메소드가 뷰 이름을 리턴한다
뷰실행 -> 뷰는 Model 객체에서 데이터 꺼내서 출력, html태그들 출력
뷰가 출력한 html 태그들이 웹브라우저에 전송된다. (HTTP Response)
전송받은 html태그들이 웹브라우저에 출력된다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String index() {
return "home/index";
}
}
(Run/Run on Server) 절차로 실행 : "/프로젝트이름" 가 context path
->따로 설치한 tomcat 서버가 없어서 이 방법은 사용안할 예정 _