Spring Boot(JSP,Mybatis)

개발환경 설정

작성자
vita
작성일
2023-11-19 23:03
조회
123

프로젝트 생성 및 설정


1. Spring Starter 프로젝트 만들기

Spring Boot 애플리케이션을 만들기 위해서 File > New > Other 를 클릭합니다.  





 

Spring Starter Project를 클릭합니다.





 

프로젝트 이름, 패키지 이름, 자바 버전을 입력합니다.

프로젝트 이름 : product

Type : Maven

패키지 이름 : com.example.product

Java Version : 8

 


 

Spring Boot Version은 2.7.17 로 하겠습니다.

프로젝트에서 사용할 라이브러리들을 추가합니다.

SQL 에서 JDBC API, Mybatis Framework, MariaDB Driver 를 체크합니다.

Web 에서 Spring Web 을 체크합니다.

 



 

2. jsp 사용을 위한 디렉토리 추가

Spring Starter Project 는 기본적으로 템플릿 사용을 권장하고 있습니다.  타임리프 등의 템플릿을 사용하려면 새로운 문법을 익혀야 합니다.  여기서는 jsp에 익숙하신 분들이 이해하기 쉽도록 템플릿 대신 jsp 를 사용하겠습니다.

jsp를 사용하기 위해서는 src/main 하위에 디렉토리들을 직접 추가해야 합니다.

 

추가할 디렉토리들은 아래와 같습니다.

 

src/main/webapp

src/main/webapp/resources

src/main/webapp/resources/css

src/main/webapp/resources/images

src/main/webapp/WEB-INF

src/main/webapp/WEB-INF/views

 

src/main 하위에 아래의 구조대로 디렉토리들을 추가합니다.





 


3. pom.xml 라이브러리 추가

Spring Boot에서는 gradle과 maven 2가지의 빌드 도구를 지원합니다.  여기서는 maven 빌드 도구를 사용하겠습니다.  프로젝트 맨 아래에 있는 pom.xml 을 열어서 dependencies 태그 하위에 3개의 라이브러리들을 추가하겠습니다.




<?xml version="1.0" encoding="UTF-8"?>

[생략]

   <dependencies>

       <dependency>

           <groupId>commons-fileupload</groupId>

           <artifactId>commons-fileupload</artifactId>

           <version>1.5</version>

       </dependency>

       <dependency>

           <groupId>org.apache.tomcat.embed</groupId>

           <artifactId>tomcat-embed-jasper</artifactId>

           <scope>provided</scope>

       </dependency>

       <dependency>

           <groupId>javax.servlet</groupId>

           <artifactId>jstl</artifactId>

       </dependency>

       [생략]

</dependencies>


 

[해설]

 

commons-fileupload 는 파일 업로드를 지원하는 라이브러리입니다.

tomcat-embed-jasper 는 jsp를 지원하는 라이브러리입니다.

jstl 은 jsp에서 JSTL 태그를 사용할 수 있도록 지원하는 라이브러리입니다.

 

 

4. mybatis mapper 디렉토리 생성

Spring Boot 에서 sql 명령어를 실행시킬 때 많이 사용하는 기술은 mybatis 입니다.  

mybatis 는 주로 xml 파일에 SQL 명령어를 작성합니다.  이 파일을 mapper 라고 합니다.

mybatis mapper xml 파일을 저장하기 위하여 src/main/resources 하위에 mappers 패키지를 생성합니다.





 





 

 

5. ProductApplication.java

Spring Starter Project 의 시작 클래스는 프로젝트이름+Application.java 클래스입니다.  이번 실습에서는 ProductApplication.java 클래스가 시작 클래스입니다.

mybatis 관련 설정을 하기 위하여 method 를 추가하겠습니다.  빨간색으로 표시된 부분만 작성하시면 됩니다.  import 부분은 생략하겠습니다.  다운로드 받으신 전체 코드와 비교하시면 좋겠습니다.




package com.example.product;


@SpringBootApplication

public class ProductApplication {

   public static void main(String[] args) {

       SpringApplication.run(ProductApplication.class, args);

   }

   @Bean

   public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {

       SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

       bean.setDataSource(dataSource);

       Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml");

       bean.setMapperLocations(res);

       return bean.getObject();

   }

   @Bean

   public SqlSessionTemplate sqlSession(SqlSessionFactory factory) {

       return new SqlSessionTemplate(factory);

   }

}


 

[해설]

 


@Bean

public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {



@Bean 어노테이션은 Java 객체를 만드는 명령어입니다.  웹서버가 시작될 때 이 method가 실행되면서 SqlSessionFactory 객체가 만들어지게 됩니다.

 


Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml");


 

여기서의 classpath는 src/main/resources 디렉토리를 의미합니다.

src/main/resources/mappers 패키지 하위에 xml 파일을 작성할 것입니다.  mapper xml 파일에는 sql 명령어들이 저장됩니다.    

 

 

6. application.properties

src/main/resources 디렉토리에 있는 application.properties 파일을 편집합니다.  이 파일에 데이터베이스 연결 정보 등 웹애플리케이션의 중요한 설정 정보를 작성합니다.




spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

spring.datasource.url=jdbc:mariadb://localhost:3306/web

spring.datasource.username=user

spring.datasource.password=1234

server.port=80

spring.mvc.view.prefix=/WEB-INF/views/

spring.mvc.view.suffix=.jsp

server.servlet.jsp.init-parameters.development=true

server.error.whitelabel.enabled=false

spring.servlet.multipart.maxFileSize=10MB

spring.servlet.multipart.maxRequestSize=10MB


 

[해설]

 


spring.datasource.driver-class-name=org.mariadb.jdbc.Driver


 

먼저 Spring 에서 MariaDB 데이터베이스에 연결하기 위한 설정을 합니다.  org.mariadb.jdbc.Driver 는 MariaDB 드라이버 클래스의 이름입니다.




spring.datasource.url=jdbc:mariadb://localhost:3306/web


 

MariaDB 데이터베이스 연결 문자열입니다.  

jdbc:mariadb://호스트:포트/데이터베이스 형식으로 되어 있습니다.

MariaDB는 3306번을 기본 포트로 사용합니다.

데이터베이스 이름은 web으로 하겠습니다.




spring.datasource.username=user

spring.datasource.password=1234


 

MariaDB 접속에 필요한 아이디는 user 이고 비밀번호는 1234 입니다.




server.port=80


 

Spring Boot에는 웹서버 프로그램인 아파치 톰캣이 내장되어 있습니다.  웹서비스 포트 번호는 기본적으로 80번을 사용하는 것이 좋습니다.  

포트번호가 80번이면 http://localhost:80 에서 포트번호를 생략하여 http://localhost 로 입력합니다.

포트번호가 8080이라면 http://localhost:8080 이라고 입력합니다.  포트번호가 80이 아닌 경우 반드시 포트번호를 입력해야 합니다.

포트번호를 80번으로 설정하겠습니다.  다른 프로그램에서 이미 80 포트를 사용하고 있다면 에러가 발생합니다.  그럴 경우 포트번호를 다른 번호로 변경하고 다시 실행해야 합니다.




spring.mvc.view.prefix=/WEB-INF/views/

spring.mvc.view.suffix=.jsp


 

우리는 웹페이지 출력을 위해 템플릿을 사용하지 않고 jsp 를 사용할 것입니다.

jsp 페이지의 경로는 /WEB-INF/views/ 디렉토리에 있는 jsp 파일로 설정할 것입니다.

/WEB-INF/views/list.jsp , /WEB-INF/views/detail.jsp 등으로 입력할 것입니다.

spring.mvc.view.prefix 는 jsp 경로의 접두사이고 spring.mvc.view.suffix 는 접미사입니다.

나중에 컨트롤러에서 return “list”; 라고 하면

/WEB-INF/views/list.jsp  페이지로 이동을 하게 됩니다.

복잡한 페이지의 경로를 짧게 작성하고자 하는 방법입니다.




server.servlet.jsp.init-parameters.development=true


 

원래 jsp 페이지의 내용이 바뀌면 웹서버를 재시작해야 합니다.  이 옵션을 true로 하면 웹서버를 재시작하지 않고도 웹브라우저에서 새로고침(F5)을 하면 화면에 변경된 내용이 출력됩니다.




server.error.whitelabel.enabled=false


 

에러가 발생할 경우에 기본적으로 표시되는 에러 페이지를 사용하지 않는 옵션입니다.




spring.servlet.multipart.maxFileSize=10MB

spring.servlet.multipart.maxRequestSize=10MB


 

파일 업로드의 최대 용량을 10 메가 바이트로 설정하겠습니다.  사이즈는 조정할 수 있습니다.  

maxFileSize와 maxRequestSize 2개의 속성을 같은 값으로 설정하면 됩니다.

 

 

Scroll to Top