티스토리 뷰
정적 리소스(Static resource)
스프링부트가 지원하는 뷰 : FreeMarker, Groovy, Velocity, Thymeleaf
Thymeleaf : spring boot 프로젝트 생성 시 dependencies를 추가했다면 추가 설정없이 src/main/resources/templates 아래에 html 파일을 만들어 사용할 수 있음. 파일은 html과 유사하지만 jsp처럼 동작함. → html 파일은 정적인 파일이 아닌 동적으로 컨텐츠를 표현하는 파일이 됨
정적인 요소(js, image, css)는 static 폴더에 작성
JSP
jsp 사용에 제약 사항이 있어 스프링부트에서 default로 제공하고 있지는 않음
스프링부트 내장 WAS : Tomcat, Jetty, Undertow
JSP 사용을 위한 dependencies 추가
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
JSP 파일을 보관할 디렉터리 지정 : spring.mvc.view.prefix와 spring.mvc.view.surfix 프로퍼티 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
test1.jsp : src/main/webapp/WEB-INF/views/test1.jsp
test2.jsp : src/main/webapp/WEB-INF/views/sub/test2.jsp
src/mai/java/com/study/springboot/MyController.java : RequestMapping → 특정 url이 실행되면 jsp 파일을 실행하도록 설정
Model
기본 설정
build.gradle : jsp dependencies 추가
application.properties : port, jsp 설정
MyController.java
폴더구성
src/main/webapp/WEB-INF/views/test1.jsp, src/main/webapp/WEB-INF/views/view/myView.jsp
jstl 코드를 사용함. 자동으로 사용할 수 있게 프로젝트에 설정이 되어 있지만 수동으로 설정 시 <%@ taglib prefix="c" uri="[http://java.sun.com/jsp/jstl/core](http://java.sun.com/jsp/jstl/core)" %> 코드 필요
src/main/java/com/study/springboot/MyController.java
package com.study.springboot;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
@RequestMapping("/")
public @ResponseBody String root() throws Exception {
return "Model & View";
}
@RequestMapping("/test1") // localhost:8081/test1
public String test1(Model model) {
// Model 객체를 이용해서, view로 data 전달
// 데이터만 설정 가능
model.addAttribute("name", "홍길동"); // name을 홍길동으로 지정해서 넘겨줌
return "test1"; // 실제 호출될 /WEB-INF/views/test1.jsp
}
@RequestMapping("/mv")
public ModelAndView test2(Model model) {
// 데이터와 뷰를 동시에 설정 가능
ModelAndView mv = new ModelAndView();
List<String> list = new ArrayList<>();
list.add("test1");
list.add("test2");
list.add("test3");
mv.addObject("lists", list); // jstl로 호출
mv.addObject("ObjectTest", "테스트입니다.");// jstl로 호출
mv.addObject("name", "홍길동"); // jstl로 호출
mv.setViewName("view/myView"); // 실제로 호출될 /WEB-INF/views/myView.jsp
return mv;
}
}
Form
기본 설정
MyController.java
test1 : 전형적인 servlet 형태 파라미터. httpServletRequest를 이용해 파라미터를 받아온 뒤 model에 담아 test1.jsp 호출
test2 : 스프링의 @RequestParam 이용. @RequestParam("A") String B A로 들어온 값을 B에 넣어줌.
test3 : 커맨드 객체를 이용. 커맨드의 세터와 파라미터의 이름이 같아야 됨. 모델과 커맨드객체 모두 데이터 객체로 넘어감
test4 : path에 변수를 넣어 이용. @PathVariable
jspfile
test1, test2 : id, name
test3 : 커맨드 객체를 이용하므로 member.id, member.name
test4 : PathVariable을 이용하므로 studentId, name
Lombok
lombok : 어노테이션을 기반으로 Getter, Setter, Equals, Tostring 등의 코드를 자동완성 해주는 라이브러리 ⇒ 간결한 코드 작성 가능
이전 예제를 Lombok을 이용한 형태로 변경
package com.study.springboot;
import lombok.Data;
@Data
public class Member {
private String id;
private String name;
}
인프런 - 예제로 배우는 스프링부트 입문 강의를 듣고 정리한 내용
'spring boot' 카테고리의 다른 글
| JdbcTemplate (0) | 2021.05.12 |
|---|---|
| Form Validation (0) | 2021.05.12 |
| DI(Dependency Injection) (0) | 2021.05.12 |
- Total
- Today
- Yesterday
- springboot
- 스택
- 출력 형식 지정
- valid annotation
- djnago
- 자료구조
- sequence type
- airbnb clone
- 스프링부트
- initBinder
- postfix notation
- tailwind
- 파이썬
- ljust
- for-else
- divmod
- 직접 주입
- string module
- 이진 탐색
- 의존 주입
- 선형 배열
- ValidataionUtils
- python flag
- most_common
- 선형 탐색
- Stack
- python
- 양방향 연결 리스트
- rjust
- Django
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
