이번 포스팅에서는 컨트롤러를 작성하고, JSP 방식으로 View를 설정 및 연동한다.
1. 컨트롤러 작성하기
DemoApplication이 위치하는 패키지 하위에 controller 라는 패키지를 생성했다. DemoApplication 구동 시 해당 클래스가 위치하는 패키지를 최상위 패키지로 ComponentScan을 하기 때문이다.
그리고 controller 패키지 아래에 MainController와 RestController라는 클래스를 생성했다.
MainController에 아래 내용을 작성했다. @Controller 어노테이션과 @RequestMapping 어노테이션만 있으면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.ilhoon.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MainController
{
@RequestMapping("/")
public String main ()
{
return "index.html";
}
}
|
cs |
여기까지 하면, http://127.0.0.1:8080으로 접속 시 앞서 작성한 index.html이 보이게 된다.
index.html 파일을 열어 아래 코드를 추가해보자. 버튼을 클릭하면 ajax로 REST 요청을 보내고 값을 받아와 텍스트에리어에 보여줄 것이다.
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
|
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>타이틀</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
function BTN_REST_click ()
{
$.ajax({
type: "GET",
url: "/rest/testvalue",
success: (data) => { console.log(data); $('#contents').html(data); }
});
}
</script>
</head>
<body>
스프링 부트 반가웡!
<button onclick="BTN_REST_click()">REST 테스트</button>
<textarea id="contents"></textarea>
</body>
</html>
|
cs |
그리고 앞서 만든 RestController 클래스를 열어 아래와 같이 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.ilhoon.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @RestController 란?
* @Controller + @ResponseBody
* JSON 또는 XML 형태의 데이터 반환시 사용. API 서버로 활용시 많이 사용한다.
*/
@org.springframework.web.bind.annotation.RestController
public class RestController
{
@RequestMapping(value = "/rest/testvalue", method = RequestMethod.GET)
public String getTestValue ()
{
return "레스트컨트롤러";
}
}
|
cs |
다시 index.html을 띄우고, 버튼을 클릭하면 레스트컨트롤러 라는 문자열이 텍스트에리어에 표시된다.
2. JSP 뷰 연동하기
기본적으로 스프링 부트에서는 JSP 보다는 Thymeleaf를 권장하지만, 나는 JSP가 편해서 JSP 뷰를 연동했다.
우선, 아래 이미지와 같이 src 폴더 하위에 webapp/WEB-INF/views 디렉터리를 만들어준다. jsp 파일은 이 위치에 생성할 것이다.
그리고 views 폴더에 main.jsp 라는 이름의 jsp 파일을 생성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
JSP 페이지입니다.
<%= request.getAttribute("testvalue")%>
</body>
</html>
|
cs |
스프링 부트 기본 설정에서는 JSP 뷰를 지원하지 않기 때문에, Dependency 추가가 필요하다. pom.xml에서 아래 의존성을 추가한다.
1
2
3
4
5
6
7
8
9
10
11
|
<!-- JSP 파일 지원을 위한 의존성 추가 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- JSTL 지원을 위한 의존성 추가 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
|
cs |
그리고 resources/application.properties 파일을 열어 아래 내용을 추가한다.
1
2
3
|
server.port=8080
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
|
cs |
위 설정을 적용하면, 컨트롤러에서 뷰 네임을 반환하면 앞 뒤로 prefix, suffix 값이 붙어 호출할 파일을 찾게된다.
MainController 클래스를 열어 /jsp 요청이 왔을 때, main.jsp를 호출하도록 메서드를 작성한다.
1
2
3
4
5
6
7
8
9
|
@RequestMapping("/jsp")
public ModelAndView jsp ()
{
ModelAndView model = new ModelAndView("main");
model.addObject("testvalue", "안녕!");
return model;
}
|
cs |
그리고 http://127.0.0.1:8080/jsp 요청을 보내면, 아래처럼 jsp 페이지가 출력된다.
'🌱 SPRING' 카테고리의 다른 글
[Spring Cloud Config] 설정값을 외부에서 관리하자! - 기본 (0) | 2021.10.10 |
---|---|
[SpringCloud] Resilience4j와 Spring Cloud Circuit Breaker (0) | 2021.05.16 |
[SpringBoot] 스프링 부트 프로젝트 생성 (0) | 2020.05.30 |
@MVC : RequestMapping (0) | 2018.03.29 |
의존관계 주입(DI, Dependency Injection) (0) | 2017.11.30 |