티스토리 뷰

spring boot

web 기초

jeongyeji 2021. 5. 12. 16:52

정적 리소스(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
링크
«   2026/04   »
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
글 보관함