스프링 시작하기

최혜미·2023년 5월 29일

Backend

목록 보기
2/8

<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 객체에 넣어서 전달)

  • 뷰에서 model attribute출력하는 법 : ${message}

[View]

웹브라우저의 요청에 대한 응답. 웹서버에서 웹브라우저로 전송되는 것은 대부분 html태그이다.(우리가 보는 웹페이지의 내용이 html이다.)


[실행순서]

  1. 웹브라우저에서 웹서버에 요청을 전달

  2. 요청된 URL과 일치하는 컨트롤러 액션메소드 실행

  3. 액션메소드에서 실행될 뷰파일이름 리턴

  4. 뷰파일 실행

  5. 출력된 html태그들이 웹브라우저로 전송

  • 뷰파일 위치와 확장자는 application.properties에서 설정할 수 있다.

[HelloController.java 추가]

import java.util.Date;
model.addAttribute("now", new Date());
  • 현재시각 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 이름을 틀리게 수정하고 실행하면 어떻게 출력되는가?

이름을 수정한 부분이 출력되지 않는다

0개의 댓글