01. Spring 설정 변경 방법
01) 파일을 생성할 때 폴더 설정 변경하기
02) 버전 변경하기
- pom.xml 파일에서 수정
- java와 spring 버전을 다음과 같이 변경 후 저장
- 패키지 우클릭 후 'Properties' 선택
02. Spring 파일
- java 파일 : 자바로 작성된 Controller, Service, DAO 등이 있음.
.java파일은 (src/main/java/com/peazh/web) 에 위치 - webapp : 웹과 관련된 파일들이 위치해 있음 (ex. html, css, js, jsp 파일)
- webapp의 resources : jsp 파일 제외한 html, css, js 파일이 있음
- view : view로 사용될 파일로 jsp파일 위치
- pom.xml : Maven 설정 파일로 Maven은 프로젝트 빌드 도구 및 관리 도구임
- 'servlet-context.xml'에서 표시된 부분때문에 'HomeController.java'에서 return값이 'WEB-INF/views/home.jsp'에 위치한 파일이 열림
03. 'BoardController.java' 파일 생성
// 사용자가 board라고 호출하면 동작할 맵핑 메서드 생성
// board가 들어올 때 get방식만 실행
@RequestMapping(value = "/board", method = RequestMethod.GET)
// board가 들어올 때 get, post 방식 둘 다 실행
@RequestMapping(value = "/board", method = {RequestMethod.GET, RequestMethod.POST})
// 간단한 방법
@GetMapping("/board")// get 방식
@PostMapping("/board")// post 방식
04. 'board.jsp' 파일 생성
- src/main/webapp/view에 'board.jsp' 파일 생성하기
[ 전송 방법 1 ]
- 'BoardController.java' 파일
package com.peazh.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class BoardController {
@GetMapping("/board")
public String board() {
return "board";
}
}
- 'board.jsp' 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드</h1>
데이터는 잠시 후에 붙여보겠습니다.
</body>
</html>
- 실행화면
[ 전송 방법 2 ]
- 'BoardController.java' 파일
package com.peazh.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class BoardController {
//사용자가 board라고 호출하면 동작할 맵핑 메서드 생성
@GetMapping("/board")
public ModelAndView board() {
ModelAndView mv = new ModelAndView("board"); //jsp 파일명
mv.addObject("name", "채여름");
return mv;
}
}
- 'board.jsp' 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
</body>
</html>
- 실행화면
05. 'BoardDTO' 생성해서 연결하기
[ STEP 1 ] src/main/java/com/peazh/web 위치에 'BoardDTO.java' 생성
package com.peazh.web;
public class BoardDTO {
private int bno, blike;
private String btitle, bcontent, bwrite, bdate;
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public int getBlike() {
return blike;
}
public void setBlike(int blike) {
this.blike = blike;
}
public String getBtitle() {
return btitle;
}
public void setBtitle(String btitle) {
this.btitle = btitle;
}
public String getBcontent() {
return bcontent;
}
public void setBcontent(String bcontent) {
this.bcontent = bcontent;
}
public String getBwrite() {
return bwrite;
}
public void setBwrite(String bwrite) {
this.bwrite = bwrite;
}
public String getBdate() {
return bdate;
}
public void setBdate(String bdate) {
this.bdate = bdate;
}
}
[ STEP 2 ] 'BoardController.java'에서 DTO 담기
package com.peazh.web;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class BoardController {
//사용자가 board라고 호출하면 동작할 맵핑 메서드 생성
@GetMapping("/board")
public ModelAndView board() {
ModelAndView mv = new ModelAndView("board"); //jsp 파일명
mv.addObject("name", "채여름");
List<BoardDTO> list = new ArrayList<BoardDTO>();
return mv;
}
}
[ STEP 3 ] 'board.jsp'에서 list 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
${list }
</body>
</html>
06. jsp 파일에서 JSTL 사용하기
- JSTL : Jsp Standard Tag Library
- 아래의 코드를 jsp 파일 상단에 넣으면 jstl의 core 태그를 사용할 수 있음
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
[ 예시 1 ] <c:forEach> 반복문
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
${list }
<hr>
<c:forEach begin="1" end="10" var="i">
반복문
</c:forEach>
</body>
</html>
[ 예시 2 ] <c:forEach> 반복문
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
${list }
<hr>
<c:forEach begin="1" end="10" var="i">
${i }<br>
</c:forEach>
</body>
</html>
[ 예시 3 ] <c:forEach> 이용해서 list 출력하기
- items : <c:forEach> 태그에서 사용되는 속성으로 반복할 대상을 지정 (배열, 리스트만 들어갈 수 있음)
- var은 0번지 인덱스부터 차례대로 값을 가져옴
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
${list }
<hr>
<c:forEach items="${list }" var="i">
${i }<br>
</c:forEach>
</body>
</html>
[ 예시 4 ] <c:if test=""> if문과 동일하고 참의 값만 출력함
<c:if test="조건문">참만 나옵니다.</c:if>
[ 예시 5 ] <c:choose>문은 when과 otherwise와 함께 사용하며 참과 거짓 중 출력함
<c:choose>
<c:when test="${ 1 + 1 == 3 }">
참입니다.
</c:when>
<c:otherwise>
거짓입니다.
</c:otherwise>
</c:choose>
/* 거짓입니다. */
오류 해결 과정🤔
- 아래의 코드에서 없는 변수 ${i.writer } 를 입력해서 에러 발생
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
${list }
<hr>
<c:forEach items="${list }" var="i">
${i.bno } / ${i.btitle } / ${i.writer }<br>
</c:forEach>
</body>
</html>
- 오타를 수정해서 오류 해결 👌
07. list를 표에 넣기
[ STEP 1 ] 표 안에 내용 넣기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>첫 번째 글</td>
<td>채여름</td>
<td>2023-07-13</td>
<td>45</td>
</tr>
</tbody>
</table>
</body>
</html>
[ STEP 2 ] <c:forEach>태그 이용해서 표 안에 내용 넣기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<c:forEach begin="1" end="10" var="row">
<tr>
<td>1</td>
<td>첫 번째 글</td>
<td>채여름</td>
<td>2023-07-13</td>
<td>45</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
[ STEP 3 ] list를 가지고 와서 표 안에 내용 넣기
- <c:forEach items="${list }" var="row"> : List를 열어서 row로 하나씩 꺼내주기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board</title>
</head>
<body>
<h1>보드 : ${name }</h1>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list }" var="row">
<tr>
<td>${row.bno }</td>
<td>${row.btitle }</td>
<td>${row.bwrite }</td>
<td>${row.bdate }</td>
<td>${row.blike }</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
08. 'board.css' 파일 생성
[ STEP 1 ] 'board.jsp'에 </head> 위 부분에 아래의 코드 추가
<link href="./resources/css/board.css" rel="stylesheet">
[ STEP 2 ] 'src/main/webapp/resources에 'css' 폴더 만들고 그 안에 'board.css' 파일 생성하기
[ STEP 3 ] 'board.css' 파일 body에 색을 넣어 'board.jsp'와 잘 연결됐나 확인하기
@charset "UTF-8";
body{
background-color: pink;
}
[ STEP 4 ] 'board.css' 파일에서 스타일 주기
- margin: 0 auto; 가운데 정렬
- border-collapse: collapse 셀과 셀 사이의 약간의 기본 공백이 있는데 그 공백을 제거
- text-align: center; 글자 중앙 정렬
- border-bottom: 1px solid; 밑줄 1두께 실선
@charset "UTF-8";
@font-face {
font-family: 'SUITE-Regular';
src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2304-2@1.0/SUITE-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
body {
font-family: 'SUITE-Regular';
}
table{
margin: 0 auto;
width: 800px;
height: 500px;
}
th {
background-color: #fcc7f8;
}
td{
text-align: center;
border-bottom: 1px solid #fcc7f8;
}
#td1 {
width: 10%;
}
#td2 {
width: 20%;
}
tr:hover {
background-color: #EEEEEE;
}
09. 기본 파일 수정
01) 파일 경로 줄여주기
[ STEP 1 ] 'servlet-context.xml' 파일에서 코드 추가하기
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<resources location="/resources/css/" mapping="/css/**"/>
<resources location="/resources/js/" mapping="/js/**"/>
<resources location="/resources/img/" mapping="/img/**"/>
[ STEP 2 ] 'board.jsp' 파일에서 코드 수정하기
/* 원래의 코드 */
<link href="./resources/css/board.css" rel="stylesheet">
/* 수정된 코드 */
<link href="./css/board.css" rel="stylesheet">
02) 생성자를 만들어서 <c:forEach>문 줄이기
[ STEP 1 ] 'BoardDTO.java'에서 생성자 만들기
package com.peazh.web;
public class BoardDTO {
private int bno, blike;
private String btitle, bcontent, bwrite, bdate;
public BoardDTO() {}
public BoardDTO(int bno, String btitle, String bwrite, String bdate, int blike) {
this.bno = bno;
this.btitle = btitle;
this.bwrite = bwrite;
this.bdate = bdate;
this.blike = blike;
}
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public int getBlike() {
return blike;
}
public void setBlike(int blike) {
this.blike = blike;
}
public String getBtitle() {
return btitle;
}
public void setBtitle(String btitle) {
this.btitle = btitle;
}
public String getBcontent() {
return bcontent;
}
public void setBcontent(String bcontent) {
this.bcontent = bcontent;
}
public String getBwrite() {
return bwrite;
}
public void setBwrite(String bwrite) {
this.bwrite = bwrite;
}
public String getBdate() {
return bdate;
}
public void setBdate(String bdate) {
this.bdate = bdate;
}
}
[ STEP 2 ] 'BoardController.java'에서 코드 수정하기 (list : DTO)
@GetMapping("/board")
public ModelAndView board() {
ModelAndView mv = new ModelAndView("board"); //jsp 파일명
mv.addObject("name", "채여름");
List<BoardDTO> list = new ArrayList<BoardDTO>();
for (int i = 1; i < 11; i++) {
BoardDTO e = new BoardDTO(i, i + "번째 글입니다.", "채여름", "2023-07-" + i, i * 10);
list.add(e);
}
}
[ STEP 3 ] 'BoardController.java'에서 list2 추가하기 (list2 : Map)
List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> e = new HashMap<String, Object>();
e.put("bno", i);
e.put("btitle", i + "번째 글입니다.");
e.put("bwrite", "채여름");
e.put("bdate", "2023-07-13");
e.put("blike", i * 10);
list2.add(e);
}
mv.addObject("list2", list2);
return mv;
03) board2.jsp 만들기
[ STEP 1 ] 'BoardController.java' 파일에서 아래의 코드 추가
@GetMapping("/board2")
public String board2(Model model) {
model.addAttribute("name", "채여름");
List<BoardDTO> list = new ArrayList<BoardDTO>();
for (int i = 1; i < 11; i++) {
BoardDTO dto = new BoardDTO(i, "제목입니다", "채여름", "2023-07-13", i);
list.add(dto);
}
model.addAttribute("list", list);
return "board2";
}
[ STEP 2 ] 'board2.jsp' 파일 생성하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board2</title>
</head>
<body>
<h1>board2 : ${name }</h1>
</body>
</html>
[ STEP 3 ] 'board2.jsp' 파일에서 list 출력해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board2</title>
</head>
<body>
<h1>board2 : ${name }</h1>
${list }
</body>
</html>
[ STEP 4 ] 'board2.jsp' 파일에서 list 표로 출력해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board2</title>
</head>
<body>
<h1>board2 : ${name }</h1>
<table>
<tr>
<td>번호</td>
<td>제목</td>
<td>글쓴이</td>
<td>날짜</td>
<td>읽음</td>
</tr>
<c:forEach items="${list }" var="row">
<tr>
<td>${row.bno }</td>
<td>${row.btitle }</td>
<td>${row.bwrite }</td>
<td>${row.bdate }</td>
<td>${row.blike }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
04) 리스트가 없다면 실행 못하게 제한하기
[ STEP 1 ] 'BoardController.java' 에서 아래의 코드로 수정해서 오류 내보기
for (int i = 1; i < 0; i++) {
Map<String, Object> e = new HashMap<String, Object>();
[ STEP 2 ] 'board2.jsp' 에서 아래의 코드 추가하기
- Fn 태그에서 'length'를 이용하기 위함
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
[ STEP 3 ] 'board2.jsp' 에서 아래의 코드 활용하기
choose
<c:choose>
<c:when test="${fn:length(list) gt 0 }">
참입니다.
</c:when>
<c:otherwise>
출력할 데이터가 없습니다.<br>
관리자에게 문의하세요.
</c:otherwise>
</c:choose>
[ STEP 4 ] 'board2.jsp' 에서 위의 코드 적용하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board2</title>
</head>
<body>
<h1>board2 : ${name }</h1>
<c:choose>
<c:when test="${fn:length(list) gt 0 }">
<table>
<tr>
<td>번호</td>
<td>제목</td>
<td>글쓴이</td>
<td>날짜</td>
<td>읽음</td>
</tr>
<c:forEach items="${list }" var="row">
<tr>
<td>${row.bno }</td>
<td>${row.btitle }</td>
<td>${row.bwrite }</td>
<td>${row.bdate }</td>
<td>${row.blike }</td>
</tr>
</c:forEach>
</table>
</c:when>
<c:otherwise>
출력할 데이터가 없습니다.<br>
관리자에게 문의하세요.
</c:otherwise>
</c:choose>
</body>
</html>
- 리스트가 있을 경우 실행화면
- 리스트가 없을 경우 실행화면
05) 'pom.xml' 코드 추가하기
[ STEP 1 ] <dependencies> 위에 넣기
- 전자정부 페이징 사용하기 위함
<repositories>
<repository>
<id>mvn2</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>egovframe</id>
<url>http://www.egovframe.go.kr/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
[ STEP 2 ] <dependencies> 안에 추가하기
- jar 파일 사용하기 위함
<!-- spring jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 전자정부 페이징 -->
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.ptl.mvc</artifactId>
<version>3.8.0</version>
</dependency>
<!-- 파일업로드 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.8</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
06) web.xml 수정하기
- 프로젝트 실행했을 때 처음 나오는 화면을 바꿔주기 위함
[ STEP 1 ] 아래의 코드 추가하기
<welcome-file-list>
<welcome-file>/WEB-INF/views/board.jsp</welcome-file>
</welcome-file-list>
[ STEP 2 ] 완성된 코드
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
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">
<welcome-file-list>
<welcome-file>/WEB-INF/views/board.jsp</welcome-file>
</welcome-file-list>
<!-- The definition of the Root Spring Container shared by all Servlets
and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
10. mariaDB 연결하기
01) 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">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="username" value="id" />
<property name="password" value="password" />
<property name="url" value="jdbc:mariadb://localhost:/choongang" />
<property name="driverClassName" value="org.mariadb.jdbc.jdbc.Driver" />
</bean>
<bean id="sqlSessionFactoryBean"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:/mybatis/mappers/*-mapper.xml"></property>
<property name="configLocation" value="classpath:/mybatis/config/mybatisConfig.xml"></property>
</bean>
<bean id="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory"
ref="sqlSessionFactoryBean"></constructor-arg>
</bean>
</beans>
02) 필요한 파일 생성하기
03) 'BoardService.java' 파일
package com.peazh.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
// 비즈니스 로직 담당
// 컨트롤러랑 연결하기
@Service
public class BoardService {
//DAO와 연결하기
@Autowired
private BoardDAO boardDAO;
public List<BoardDTO> boardList() {
return boardDAO.boardList();
}
}
04) 'BoardDAO.java' 파일
package com.peazh.web;
//데이터베이스(마이바티스)와 연결
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class BoardDAO {
// sqlSession과 연결합니다.
@Autowired
private SqlSession sqlSession;
public List<BoardDTO> boardList() {
return sqlSession.selectList("boardtest.boardList");
}
}
05) 'board-mapper.xml' 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="boardtest">
<select id="boardList" resultType="boardDTO">
SELECT * FROM board
</select>
</mapper>
06) 'mybatisConfig.xml' 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.peazh.web.BoardDTO" alias="boardDTO"/>
</typeAliases>
</configuration>
07) 'BoardController.java' 수정
package com.peazh.web;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class BoardController {
// 서비스와 연결하기
// 보드서비스의 객체가 boardService안으로 들어감
@Autowired
private BoardService boardService;
//사용자가 board라고 호출하면 동작할 맵핑 메서드 생성
@GetMapping("/board")
public ModelAndView board() {
ModelAndView mv = new ModelAndView("board"); //jsp 파일명
// 서비스 일 시키기
List<BoardDTO> list = boardService.boardList();
mv.addObject("list", list);
return mv;
}
}
오류 해결 과정🤔
- 밑에 화면이 안 뜨는 이유 : jsp에서 컨트롤러가 통과를 안하기 때문
댓글