1. Spring Stater Project 생성
MyBatis Framewor, MariaDB Driver, Spring Web 선택 후 Finish버튼
2. Pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.4</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.eugeneprogram</groupId> <artifactId>TestWeb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>TestWeb</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <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>3.0.2</version> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <scope>runtime</scope> </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>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <version>3.0.2</version> <scope>test</scope> </dependency> <!-- This is for JDBC --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- This is for JDBC --> <!-- JSTL for JSP --> <!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api --> <dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> </dependency> <!-- JSTL for JSP --> <!-- Need this to compile JSP --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.6.1</version> <scope>provided</scope> </dependency> <!-- Need this to compile JSP --> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
여기서 주석 부분은 프로젝트 생성 후 기본 dependencies 목록에 추가된 것이다.
JSTL의 경우 1.2 버전이 Spring 3 이상에서는 오류가 발생하므로 위 xml 파일의 <!-- JSTL for JSP --> 주석 부분으로 대체한다.
위 설정 파일에서 <!-- --> 주석 부분은 sts-4에서 생성한 pom.xml에 직접 추가한 부분이다.
3. DatabaseConfig.java 생성 package root
package com.eugeneprogram.testweb; import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @MapperScan(basePackages = "com.eugeneprogram.testweb.dao") @EnableTransactionManagement public class DatabaseConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); return sessionFactory.getObject(); } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception { final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory); return sqlSessionTemplate; } } |
4. TestMapper.java(Interface) 생성 package dao
package com.eugeneprogram.testweb.dao; import java.util.List; import java.util.Map; public interface TestMapper { public List<Map<String, Object>> getList() throws Exception; } |
5. TestService.java package service
package com.eugeneprogram.testweb.service; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.eugeneprogram.testweb.dao.TestMapper; @Service public class TestService { @Autowired TestMapper testMapper; public List<Map<String, Object>> getList() throws Exception { return testMapper.getList(); } } |
6. MainController.java package controller
package com.eugeneprogram.testweb.controller; import java.util.ArrayList; import java.util.List; import java.util.Map; 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.eugeneprogram.testweb.service.TestService; @Controller public class MainController { @Autowired TestService testService; @RequestMapping(value = "/main.do") public String goMain() { return "main"; } @RequestMapping(value = "/dbTest.do") public ModelAndView dbTest() throws Exception { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list = testService.getList(); return new ModelAndView("testDbList", "testDbList", list); } } |
7. testMapper.xml 위치 src/main/resources
<?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="com.eugeneprogram.testweb.dao.TestMapper"> <select id="getList" resultType="java.util.Map"> SELECT col1, col2 FROM test_tb </select> </mapper> |
MariaDB [test]> desc test_tb;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| col1 | varchar(100) | YES | | NULL | |
| col2 | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
test_db의 간단한 구성이다.
8. application.properties 수정. 위치 src/main/resources
spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://192.168.?.?/test spring.datasource.username=test spring.datasource.password=password spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp |
9. jsp 생성(src/main/WEB-INF/jsp)
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1><%="Main" %></h1> </body> </html> |
위 jsp는 그저 이 프로젝트가 잘 동작하는 지 보기위한 파일아다.
testDbList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page import="com.eugeneprogram.testweb.service.TestService" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <table> <tr> <th>col1</th> <th>col2</th> </tr> <c:forEach var="testMap" items="${testDbList}" varStatus="status"> <tr> <td><p>${testMap.col1 }</p></td> <td><p>${testMap.col2 }</p></td> </tr> </c:forEach> </table> </body> </html> |
localhost:8080/dbTest.do에 접속하면,
|
와 같은 페이지가 나온다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
4 |
fetch()와 await fetch()
![]() | 김지훈 | 2025.04.17 | 11 |
3 |
Spring Security 적용법
![]() | 김지훈 | 2024.09.20 | 53 |
2 |
@Controller와 @RestController의 차이점
![]() | 김지훈 | 2024.07.19 | 31 |
» | SpringToolSuite 4를 이용한 Spring Boot Web 프로그래밍 기초 | Eugene | 2023.10.17 | 1849 |