이전 포스팅에서 Spring Boot의 기본 세팅을 해봤다.
이번에는 Controller 생성 및 JSP를 연동할 것이다.
최상위 패키지
예) com/example/demo/DefaultApplication.java
@SpringBootApplication
// @SpringBootApplication
// => @EnableAutoConfiguration + @ComponentScan + @Configuration
// 해당 annotation을 설정한 클래스가 있는 package를 최상위 패키지로 인식하고 ComponentScan을 수행
public class DefaultApplication {
public static void main(String[] args) {
SpringApplication.run(DefaultApplication.class, args);
}
}
- 만약 새로운 파일을 메인 경로와 다른곳에 위치한다면 에러가 난다.
예) com/example/DefaultApplication.java
com/new/TestController.java
에러가 나는 이유는 최상위 패키지가 위치한 경로를 시작으로 전체 ComponentScan을 하기 때문에
다른 폴더에 있는 Component 들은 스캔하지 못하여 파일을 찾을 수 없다고 뜬다. Not Found Page
- 새로운 파일을 생성할 때는 꼭 최상위 패키지와 같은 위치의 폴더를 생성하거나 하위에 생성하자.
예) com/example/DefaultApplication.java
com/example/board/BoardController.java
com/example/TestController.java
Controller 생성
@Controller
public class TestController {
@GetMapping("/home")
// Spring 4.3 이후 간략하게 가능
// => RequestMapping(value="/home", method=@RequestMethod.GET)
public String home() {
return "index.html";
}
@ResponseBody
// => 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할
@GetMapping("/test1")
public String valueTest() {
String value = "test1";
return value;
}
}
테스트 페이지 확인
resource/static/index.html 생성하여 다음과 같이 테스트 페이지 작성
(static 안에는 jsp 파일을 넣어도 읽을 수가 없다. 이에 대해 아래에서 따로 작성)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="test">
<h1></h1>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function () {
$.ajax({
type: "GET",
url: "/test1",
success: (data) => {
console.log(data);
$("#test h1").html(data);
},
});
});
</script>
</body>
</html>
test1 실행 결과
link -> localhost:8080
만약 Rest 처리만 하는 경우 다음과 같은 컨트롤러를 생성하면 된다
@RestController
// @Controller + @ResponseBody
// 전역 메서드에 @ResponseBody 이 기본적으로 활성화 되어있다
public class TestRestController {
@GetMapping(value = "/test3")
public String getMethodName() {
String val = "test3";
return val;
}
}
JSP 연동 설정 및 테스트
pom.xml
에서 다음을 추가
<!-- jasper (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>
application.yml
에서 jsp 경로 설정 (application.properties 에서 확장자 yml로 수정)
(확장자 선택은 본인 자유)
spring:
mvc:
view:
prefix: /WEB-INF/sources/jsp/
suffix: .jsp
jsp
경로 설정 (src/main/webapp/WEB-INF/sources/jsp) 폴더가 없으면 생성
글쓴이 경로는 이렇다.
index.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>${name}</h1>
</body>
</html>
@GetMapping(value = "/main.do")
public ModelAndView home(Model model) throws Exception {
model.addAttribute("name", "jeffrey");
return new ModelAndView("client/index");
}
test2 테스트 결과
link -> localhost:8080/main.do
Previous Chapter
Next Chapter
'Backend > Spring' 카테고리의 다른 글
Spring Boot - (3) Database 연동하기(Mysql, MyBatis, HikariCP, sample_db 첨부) (0) | 2020.11.22 |
---|---|
Ajax를 통한 JSON 데이터 주고 받기 (Spring Boot로 수정) (2) | 2020.11.19 |
Spring Boot - (1) 환경세팅 (0) | 2020.11.14 |
이미지 웹 출력 (0) | 2020.11.06 |
Spring Framework (스프링프레임워크) 기본 동작 순서 및 구조 (0) | 2019.11.21 |