본문 바로가기
프로그래밍/SpringBoot

[스프링 부트 게시판] Spring Boot Project 생성하기 / View 띄우기

by 소소로드 2019. 12. 1.

 

Spring Boot Project 생성하기 / View 띄우기

 

 


들어가기 전에 읽어보면 도움될 만한 부분 : https://yulfsong.tistory.com/42

 

1. 프로젝트 간단히 만들어서 다운받기

Spring Initializr

https://start.spring.io/

: STS 안에서 만들어도 되지만, 처음부터 이렇게해서 그런지 손에 익었다. 

들어가보면 딱히 어려운 부분도 없어서 자주 애용중이다.

 

Group - 기본 패키지 이름 (com)

Artifact - 프로젝트 이름 (helloproject)

com.helloproject가 총 패키지 이름이 된다.

만약 프로젝트 이름을 숫자로 시작하면 온전히 웹 어플리케이션을 생성할 수 없다.

Dependencies - 가장 중요한 부분, pom.xml에 올라올 내용들이다.

기본적인 설정을 위해 web, mysql, mybatis, lombok 정도로 넣어두고 다운로드!

다른 필요한 것들은 프로젝트를 만들면서 조금씩 추가해도 될 것 같다.

 

 

다운 받은 뒤에는 압축을 풀고, 자신의 스프링 폴더에 넣고
(대부분 spring-workspace 이런 식의 이름으로 되어있다.)

해당 STS에서 File - Open Projects from File System을 통해 import해서 받으면 된다.

 +

2020.09월 추가
바뀐 스프링 이퀄라이저 캡쳐본

 

이런식으로 적용하면 된다.

 

* 받고 난뒤 mybatis, mysql의 경우 연동된 상태가 아니라서 에러가 뜰 수도 있으니까 pom.xml에서 일단 주석 처리.
* 프로젝트 이름은 숫자로 시작하면 온전히 웹 애플리케이션을 생성하기 어려움. 
* mybatis는 2.0.1버전 사용하도록
* view의 방식중 jsp를 쓸 예정이라면 application.properties 설정은 필수(다음 편에서 알려준다.)

 

[내 개발환경] 

Server OS : Windows10 
Language : JAVA 1.6 
Framework : Spring 3.1.1 
WEB Server : Apache  
WAS Server : Tomcat 7 
build tool : maven 2.5.1 
DB : MySQL 5.7.16 
ORM : mybatis 3.2.7


2. pom.xml 에러 문제 해결

Clean과 Update에도 불구하고 Unknown error가 난다면

디펜던시에서 설정이 잘못되었거나 뭔가 충돌을 일으켰을 가능성이 크다.

 

검색해보니까 version이 안맞아서 그런거라고 한다.

2.1.4로 변경하니 pom.xml오류는 잡혔는데

src/test/java에서 오류가 났다. 해당 import지워주고 다시 import하니까 오류가 잡힘

중간 중간 프로젝트 클린도 해주세요~

그래도 계속 이유없이 프로젝트에 엑박이 뜨면 update project해주세요~

*

최근에 다시 프로젝트를 만들었을때 mybatis버전에서 문제가 생겼었다.

혹시 마이바티스 부분에 오류가 뜬다면 2.0.1버전으로 사용


3. JSP를 위한 application.properties 설정, folder 생성

 

View의 방식중 templates일 경우, 별 다른 설정이 필요하지 않지만

JSP는 템플릿에서 작동을 안하므로 따로 설정이 필요하고 main에서 경로를 직접 만들어줘야 한다.


src<main<webapp<WEB-INF<views

 

이런식으로 폴더를 구성해야 한다. views안에 jsp 파일들이 들어가게 되는 구조로 만들기

application.properties를 열어 jsp를 인식할 수 있게 설정을 해주자.

만드는 과정에서 스펠링 주의, 정확하게 쓰자.

톰캣 포트는 그대로 쓸 거라면 바꾸지 않아도 된다.

 

1
2
3
4
5
6
#view
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
 
#tomcat
server.port=7070
cs

 

이름 그대로 controller에서 리턴값이 "test"인 경우,

/WEB-INF/view/test.jsp를 일일히 가져오지 않고
test로만 가져와서 편리하게 쓰겠다는 의미이다.

혹시 톰캣 서버의 번호를 바꿀 생각이라면 #tomcat의 내용도 추가


4. JSP로 View 띄우기 TEST

 

1. com.helloproject 아래에 controller라는 폴더와 BoardController라는 클래스 추가
   (컨트롤러 이름은 원하는대로 지어주세요.)
2. views 폴더에 test라는 이름의 jsp 파일 추가
3. 해당 프로젝트 오른쪽 마우스 - run As - spring boot App 클릭
4. 웹페이지에 http://localhost:설정한포트/test를 눌렀을 때 "테스트 성공!"이 뜨면 성공

 

현재 패키지 구조
src/main/java
ㄴ com.helloproject
ㄴ controller
   ㄴBoardController

1
2
3
4
5
6
7
8
9
10
@Controller
public class BoardController {
    
    // JSP View Test
    @RequestMapping(value="/test")
    public String test(Model model) {        
        model.addAttribute("test""테스트 성공!");
        return "test";
    }
}

 

 

cs

 

@Controller : 현재 클래스가 컨트롤러라는 것을 명시

@RequestMapping : /test라는 value값이 붙으면 이곳으로 오겠다 라는 것을 명시

Model : 뷰에 전달되는 모델데이터로서, model.addAttribute("이름지정", "값")이런 식으로 넣을 경우

           뷰단에서 ${이름지정}을 넣어주면 값이 나온다.

return "test" : 아까 만들어준 views 밑의 test.jsp파일로 갈 것이라는 것을 명시

 

1
2
3
4
5
6
7
8
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    ${test}
</body>
</html>
cs


4-1. 오류보고서 : view가 안뜨고 404에러가 뜬다.
      혹은 spring boot Path with "WEB-INF" or "META-INF"가 뜬다.

 

분명 설정까지 마치고 controller에서 테스트를 올리고, 
jsp로 파일도 만들어줬는데 에러가 난다면(테스트 방법은 맨 아래에 있다.)

웹 애플리케이션 / JSP 관련 설정을 안 해줘서 그런 것 같다.
근데 많은 강의를 보면 이 부분 추가를 안해줘도 되는 것 같던데 왜 그런지 모르겠음

(다음에는 처음부터 이 부분도 넣어줘야지)

<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency> // 웹 애플리케이션 실행을 위한 의존성
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency> //jsp 관련 의존성

 

4-2. 오류보고서 : 그래도 view가 안뜨고 에러가 뜬다.

그래도 안된다면 프로퍼티스 문제일 가능성이 있으므로 
내장톰캣인 스프링부트 어플리케이션 클래스(~Application.java라는 이름)에서 다음과 같은 소스추가

	@Bean
	public InternalResourceViewResolver setupViewResolver() {
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		
		resolver.setPrefix("WEB-INF/views/");
		resolver.setSuffix(".jsp");
		return resolver;
	}

 

4-3. 오류보고서 : 그래도 view가 안뜨고 에러가 뜬다.

혹시 제대로 된 패키지에 컨트롤러를 만들지 않았을 수도 있다.

초기에 group - com.hello / artifact - project로 설정해두면

com.hello.project가 패키지 이름이다.

com.hello가 그룹명이니까 되겠지하고 만들면 404에러 파티. 초보적인 실수이다.

 

패키지 문제 수정 전

 

패키지 문제 수정 후