<hello 프로젝트>
https://github.com/ghrltjdtprbs/Backend
[application.properties]
spring.mvc.view.prefix=/WEB-INF/views/ // 뷰파일 위치
spring.mvc.view.suffix=.jsp //뷰파일 확장자
server.port=8088 //톰캣서버가 사용할 포트번호
디폴트 포트는 8080이지만 다른서버와 충동할 확률 높음
application properties는 파일끝에 공백문자가 있으면 오류
[HomeController]
@Controller
public class HomeController {
@RequestMapping("/") // "/"액션매소드를 호출하기 위한 URL
public String index(Model model) { //Model은 데이터 전달 상자이다
model.addAttribute("message", "좋은 아침"); //"message" 이름 "좋은 아침" 값(Model 객체에 넣을 코드)
return "index"; // 실행시킬 뷰이름 리턴
}
}
액션 메소드 : 웹브라우저가 어떤 url을 웹서버에 요청하면 , 그 url에 해당 컨트롤러가 자동 호출
http://localhost:8088/
url을 웹브라우저가 웹서버에 요청하면 웹 서버에 HomeController 컨트롤러 클래스의 index 액션 메소드가 자동으로 호출되어 실행됨
[컨트롤러 액션 메소드의 리턴값]
컨트롤러 액션 메소드가 리턴하는 문자열은 뷰 파일의 이름이다 -> 뷰 파일 실행(index)
[model attribute]
Model에 담겨 뷰에 전달되는 데이터
컨트롤러의 액션 메소드는 Spring MVC 엔진에 의해 호출. 대부분의 액션메소드 파라미터에 Model model 객체 포함
(액션메소드가 뷰 파일에 전달할 데이터를 Model 객체에 넣어서 전달)
[View]
웹브라우저의 요청에 대한 응답. 웹서버에서 웹브라우저로 전송되는 것은 대부분 html태그이다.(우리가 보는 웹페이지의 내용이 html이다.)
[실행순서]
웹브라우저에서 웹서버에 요청을 전달
요청된 URL과 일치하는 컨트롤러 액션메소드 실행
액션메소드에서 실행될 뷰파일이름 리턴
뷰파일 실행
출력된 html태그들이 웹브라우저로 전송

[HelloController.java 추가]
import java.util.Date;
model.addAttribute("now", new Date());
[index.jsp 추가]
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %> // 날짜 시각을 출력하기 위한 JSTL확장태그
<h3><fmt:formatDate pattern = "yyyy-MM-dd HH:mm:ss" value = "${ now }" /></h3> //now 출력
<fmt:formatDate/> : 확장태그를 사용하기 위한 선언
pattern = "yyyy-MM-dd HH:mm:ss" : 이 패턴에 맞춰 출력됨

+404not Found 에러의 원인은?
컨트롤러 클래스에서 @Controller가 없음
@RequestMapping 에서 요청된 URL과 일치하는 액션 메소드가 없음
+model attribute 이름 :
${message}를 ${msg} 로 model attribute 이름을 틀리게 수정하고 실행하면 어떻게 출력되는가?
이름을 수정한 부분이 출력되지 않는다