본문 바로가기
project

Spring Boot+Jsp+Hello World 까지

by 스르나 2019. 9. 17.

이 글은 Spring Boot를 시작하기 위해 환경 설정을 하기 위한 글입니다.

이 글을 작성한 이유는 저도 처음 Spring을 시작할때 환경설정을 구축하는데 너무 오랜 시간을 낭비했고(주변에 spring을 할 줄아는 사람이 없었습니다ㅜㅜ) 많은 시행착오가 있었는데 이런 부분을 다른 분들이 격지 않았으면 해서 입니다.

더욱이 현재 spring boot에서는 jsp사용을 공식적으로 지원하지 않는다고 합니다. 하지만 저는 jsp를 사용해야 하는 상황이여서 jsp를 사용하는 방법을 찾는데도 시간이 좀 결렸습니다. 이부분 까지 이글에서 설명 하겠습니다.

사용한 IDE는 IntelliJ입니다. 그리고 DB는 MySql을 사용합니다. DB를 적은 이유는 뒤에 설명 하겠습니다.

 

우선 IDE에서 File -> New -> Project.. 순서대로 클릭을 합니다.

그러면 위와같이 나올것입니다. 그다은 좌측의 Spring Initializr를 선택해 주세요

그 다음 Next버튼을 눌러 주세요

그러면 위와같은 화면이 나올 것입니다. 위에 빨간 동그라미로 표시한 부분은 프로젝트 생성에 중요하다 생각되어서 표시해 두었습니다. 일단 Group은 자신의 프로젝트를 고유하게 식별하게 해 주는 것으로, 최소한 내가 컨트롤하는 domain name이어야 합니다 그다음  Artifact는 제품의 이름입니다. 그냥 프로젝트 이름과 동이하게 해주시면 됩니다.

위의 2개를 수정하면 마직막줄에 있는 Package의 내용이 변할 겁니다. Spring Boot에서 여기서 정한 Package는 유의미한 이름이니 신중하게 정해주세요. 그 다음으로는 Type부분입니다. 여기서 Type은 Maven기반인지 Gradel기반인지 정합니다. Maven과 Gradel과 관련된 내용은 여기서는 다루지 않겠습니다. 저는 평소 사용하면 Maven프로젝트로 하겠습니다. 그다음 Packaging을 보시면 현재는 jar파일로 되어있습니다. 다른 선택으로는 war이 있는데 war로 선택해도 jar형식으로 실행이 가능하니 일단 war형식으로 선택을 합니다. 그다음 java version을 선택하는데 이건 자신이 사용하는 java version과 동일하게 고르시면 됩니다.

Type => Maven, Packaging => War, java version => 8여기만 동일하면 저와 같은 겁니다. 바로 Next를 눌러 줍시다.

Next를 누르시면 위와 같은 화면이 나옵니다. 위 화면은 스프링 부트와 함께 사용할 라이브러리를 선택하는 것입니다. 여기서 선택을 미리하시면 Maven에 자동으로 주입이 되고 인텔리제이에도 설정이 자동으로 완료 됩니다.

우리는 스프링 부트와 jsp만들 사용한다고 했으니 필요한 것은

우측에 나온것처럼 선택해주세요 SQL을 보시면 mysql이나 mariaDb를 선택 안했는데 이유는 이글을 보시는분 마다 DBMS를 다르게 사용하기 때문입니다. DBMS라이브러리는 프로젝트 생성 후에 따로 Maven에 주입하도록 하겠습니다.

이제 Next를 눌러 주세요

 

여기서는 Project Location에서 우리의 프로젝트를 저장할 디렉토리를 선택해 주시고 Finish를 눌러주세요

 

정상적으로 하셨다면 프로젝트의 좌측에 이런식으로 디렉토리가 나옵니다. 여기서 pom.xml을 선택해 주세요

pom.xml은 메이븐 주입을 하는 곳 입니다. 여기에서 dependencies부분과 build부분을 모두 지워 주시고 아래의 코드를 지운 위치에 그대로 넣어주세요

 참고로 저는 mysql을 사용했습니다. 아래에도 mysql을 넣은 것 입니다.

<dependency>목록을 보시면 mysql이 들어있는 부분이 있습니다. 혹시나 다른 DBMS를 사용하시면

https://mvnrepository.com/ 여기로 가셔서 찾으시면 됩니다.

 

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/cos/cos -->

        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

그 다음에는

application.properties를 선택해 주시고

#스프링 부트에서 jsp를 사용하기 위함
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp


#스프링 부트의 DB연결을 위함
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=false&validationQuery=select 1
spring.datasource.hikari.password=root
spring.datasource.hikari.username=root
spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver


# orm
mybatis.configuration.map-underscore-to-camel-case=true

이코드를 넣어주시고 password와 username은 여러분의 db 아이디와 비밀번호를 넣어주세요

 

다음에는 com.example.demo(여러분이 만든 도메인 주소로 되어있을 겁니다.) 아래에 config, controller 자바 패키지를 생성 해주시고 controller에는 TextController.java, config에넌 DbConfig.java를 생성해주세요

그리고 아래의 코드를 각각 넣어주세요

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {


    @RequestMapping("/")
    public String index(Model model){
        model.addAttribute("msg","hello world!");
        return "index";
    }
}

 

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class DbConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.hikari")
    public HikariConfig hikariConfig(){
        return new HikariConfig();
    }

    @Bean
    public DataSource dataSource(){
        return new HikariDataSource(hikariConfig());
    }


}

이제 거의다 왔습니다!!

 

다음에는 src/main 아래에 webapp폴더를 생성해주세요

webapp폴더 안에 WEB-INF폴더 그안에 view폴더를 생성하고 index.jsp를 생성해주세요

 

index.jsp에는 ${msg}라고 써주세요 (참고. 인털리제이 유료버전에서는 msg라고 치시면 TestController에서 보낸 msg가 자동완성으로 나올 겁니다.)

 

그다음 실행버튼을 누르시고 브라우저에서 localhost:8080을 입력해 주세요

끝!

'project' 카테고리의 다른 글

Spring Boot + Mybatis  (0) 2021.05.19
도커+스프링+리액트+mysql  (0) 2021.01.15