Spring 서블릿 3.0

반응형

안녕하세요 무작정 일단 따라 해 보는 Spring 커뮤니티 만들기 3탄 시작합니다.

 

환경

Eclipse 2019-9 Jee 
JDK 1.8_231 
Apache Tomcat 8.5.47
+ MariaDB 10.4.10
+ MyBatis 3.2.2

 

오늘은 제일 중요한 DB 연결을 해볼껀데요, DB MariaDB 10.4.10 version 사용합니다. 참고 해주세요

 

Java DB 연결 할 필요한 준비물이 무엇입니까?

 

? DB 연결 코드?

?? 하느님께 기도하기?

??? MariaDB 모르겠다는 당신! 반성하십시오.

 

MSSQL, MySQL, MariaDB, PG 모든 DB JAVA 연결 할 DB 드라이버 라이브러리가 필요합니다.

 

, jar 파일말입니다. Spring 아니라면 jar 파일을 홈페이지에서 구해서 라이브러리 폴더에 넣어줘야 하지만

 

저희는 *Maven 사용하고 있습니다. *Maven 정확히 무엇인지는 모르겠지만

일단 라이브러리를 쉽게 다운받고 자동으로 등록 해주는 빌드 툴이라고만 알고 있읍시다.

 

대표적인 빌드

*Gradle : 자바 프로젝트의 빌드(build) 자동화 해주는 빌드 (build tool) (최신)

*Maven : 자바 프로젝트의 빌드(build)를 자동화해주는 빌드 툴(build tool)

 

 

1.Maven으로 MariaDB 라이브러리를 다운로드


https://mvnrepository.com/ 사이트 접속

 

검색 창에 mariadb 검색

1. MariaDB Java Client 클릭

 

Usages 가장 많은 2.3.0 버전을 받겠습니다.

2.3.0 클릭

<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.3.0</version>
</dependency>

코드 복사

 

프로젝트 돌아와 pom.xml이라는 파일에 붙여넣기 파일 저장

 

 

2.Spring version 및 서블릿(servlet) version 변경


pom.xml 파일을 손 댄김에 Spring 버전도 바꿔줍니다.

 

Spring 프로젝트 기본 버전

Spring Framework 3.1.1 
java version 1.6
Maven compiler
source 1.6
target 1.6
servlet-api 2.5
jsp-api 2.1

변경 후 버전

Spring Framework 4.3.4
java version 1.8
Maven compiler
source 1.8
target 1.8
servlet-api 3.0
jsp-api 2.2

 

주의 : Java version 1.8 올릴땐 로컬에 설치된 Java가 1.8이상이여야 합니다.

 

 

Before


pom.xml

<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>


<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>

        <compilerArgument>-Xlint:all</compilerArgument>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
    </configuration>
</plugin>

web.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

After


pom.xml

<properties>
<java-version>1.8</java-version>
<org.springframework-version>4.3.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>


<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>

        <compilerArgument>-Xlint:all</compilerArgument>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
    </configuration>
</plugin>

 

주의 : servlet-api는 artifactId도 변경해야 됩니다.

web.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

저장 Building workspace(n%) 기다려주세요 !

 

spring version, mariadb-java 잘 받아졌는지 확인

 

기다리셨으면 남아있습니다.

프로젝트 클릭 -> Properties -> Java Build Path -> Libraries 클릭 -> JRE System Library 더블클릭 or Edit… 버튼 클릭 -> Java 1.6으로 설정 돼있는걸 로컬에 있는 Java 1.8 파일 선택 Finish 클릭

주의 : jre 말고 꼭 jdk를 사용하셔야 나중에 불이익(?)이 없습니다.

 

바로 Properties Close 하지마시고

Project Facets 선택 -> Java 선택 -> 1.6 - 1.8 변경 -> Runtimes 클릭 -> Tomcat 체크 박스 체크

Apply and Close

기다림...

 

스프링은 설정이 반이라고 있는데요, 프레임워크를 쓰면 어쩔수 없이 설정부분이 많이 들어갑니다.

 

 

3.MyBatis 연결


! 이제 DB 연결의 시작인데요 Java 커넥션을 설정 할수도 있지만

저희는 바로 *MyBatis 이용하여 Spring + *MyBatis 사용합니다.

 

*MyBatis : 개발자가 하드코딩하는 굉장히 줄여주는 아주 고마운 SQL 프레임워크 생산성 쑥쑥

 

설정


pom.xml 라이브러리 추가

(이제 감 잡으신 분들도 있겠지만 라이브러리 추가는 항상 pom.xml)

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.2</version>
</dependency>

<dependency><groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>

<dependency> <groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>

<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

 

 

WEB-INF - spring - root-context.xml


 root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
<!-- mariaDB와 연결을 담당하는 dataSource --> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="jdbc:mariadb://127.0.0.1:3306/데이터베이스이름"></property> 
<property name="username" value="root"></property> 
<property name="password" value="password"></property> 
</bean> 
 
 <!-- SqlSessionFactory --> 
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
 <property name="dataSource" ref="dataSource"></property> 
 <property name="configLocation" value="/WEB-INF/spring/mybatis/mybatis-config.xml"></property>
 </bean> 
 
 <!-- SqlSessionTemplate --> 
 <bean id="sqlSessoinTemplate" class="org.mybatis.spring.SqlSessionTemplate"> 
 <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> 
 </bean>

		
</beans>

 

WEB-INF - spring - mybatis 폴더 생성 - mybatis-config.xml 파일 생성


mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="board" type="com.company01.springEx01.logic.Board"/>
</typeAliases>

<mappers>
<mapper resource="mapper/board-Mapper.xml"/>
</mappers>
</configuration>

 

src/main/resources -> mapper 폴더 생성 -> board-Mapper.xml 생성


board-Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.board-Mapper">

<select id="getBoardList" resultType="board">
select * from board;
</select>
</mapper>

 

 

4.MariaDB 만들기


MariaDB 접속 (HeidiSQL 이용)

새 DB 만들기

CREATE DATABASE toyblog;

새 Table 만들기

CREATE TABLE board (

id INT AUTO_INCREMENT PRIMARY KEY,
subject VARCHAR(64),
context VARCHAR(512),
attachments VARCHAR(64),
likes INT,
views INT,
create_time DATETIME,
update_time DATETIME
)

INSERT INTO board VALUES(1,'제목1','내용1','첨부없음',0,0,NOW(),NULL);

가짜 데이터도 하나 넣어주었습니다.

 

 

파일 제공


[Spring] 1편.sql
0.00MB

 

 

5.MyBatis를 이용한 DB 값 받아오기


src/main/java -> com.company01.springEx01 -> logic -> Board(VO). java 생성


Board.java 

public class Board { 

private int id; 
private String subject; 
private String context; 
private String attachments; 
private int likes; 
private int views; 
private Date create_time; 
private Date update_time;

//get and set ...

}

여기까지 만드시고

Source 탭 -> Generate Getters and Setters 클릭 후 Select All -> Generate 버튼 클릭

Source 탭 -> Generate toString().... 클릭

 

src/main/java -> com.company01.springEx01 -> service -> BoardService.java(인터페이스) 생성


import java.util.List;
import com.company01.springEx01.logic.Board;

public interface BoardService {
	List<Board> getBoardList();
}

 

주의 : BoardService class를 만드는게 아니고 interface를 만드는 겁니다. 

 

 

src/main/java -> com.company01.springEx01 -> service -> BoardServiceImpl.java 생성


BoardServiceImpl.java

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.company01.springEx01.dao.BoardDAO;
import com.company01.springEx01.logic.Board;

@Service
public class BoardServiceImpl implements BoardService{

	@Autowired
	BoardDAO boardDAO;

	public List<Board> getBoardList() {
		return boardDAO.getBoardList();
	}
	
}

 

src/main/java -> com.company01.springEx01 -> dao -> BoardDAO.java 생성


BoardDAO.java

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.company01.springEx01.logic.Board;

@Repository
public class BoardDAO {

	@Autowired
	public SqlSession sqlSession;
	
	public List<Board> getBoardList() {
		
		return sqlSession.selectList("getBoardList");
		
	}
}

 

src/main/java -> com.company01.springEx01 -> controller-> ViewController.java


ViewController.java 

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.company01.springEx01.logic.Board;
import com.company01.springEx01.service.BoardService;


@Controller
@RequestMapping("view/*")
public class ViewController {
	
	@Autowired
	BoardService boardService;
	
	@RequestMapping("view/dashboard")
	public ModelAndView dashboard() {
		List<Board> result = boardService.getBoardList(); 
		System.out.println(result);
		ModelAndView mav = new ModelAndView();
		
		return mav;
	}
	
}

결과

 

성공적으로 MyBatis를 이용한 DB 연결이 됐습니다.

얼추 세팅이 맞췄으니, 다음부턴 본격적으로 게시판 만들기에 돌입하겠습니다.


최종 Project Explorer

 

 

반응형

+ Recent posts