new> project> Spring Boot > Spring Strater Project
Service URL :
Name : 설정하기, demo, web 등을 사용했음
Type : Gradle
Packaging : War (꼭 확인하기, 이렇게 안해서 다시 만들었음)
Java Version : 17(설치 되어있는 자바 버젼 확인하기)
Language : Java
Group : com.mask
package : com.mask.web
Spring Boot Version 확인해서 Available 에 필요한것 검색하면 된다.
Spring Boot DevTools
Lombok
MyBatis Framework
MySQL Driver
Spring Web
(Thymeleaf는 추가 하지 않았음. 하지만 추가 해도 된다. )
application.properties>jsp경로, DB설정, mapper설정
# jsp경로
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# Mariadb
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:port/db명
spring.datasource.username=c23c_22
spring.datasource.password=01234567
# mybatis
mybatis.type-aliases-package=com.mask.web.mybatis
mybatis.mapper-locations=static/mapper/*.xml
# 포트변경시
server.port=80
datasoutce jsp경로
build.gradle설정 = 의존성 추가하기(jar)
추가한 것
//implementation 'javax.servlet:jstl:1.2'//jsp
implementation 'jakarta.servlet:jakarta.servlet-api' // boot 3이상에서
implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api'
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'
implementation "org.apache.tomcat.embed:tomcat-embed-jasper"//tomcat사용하기
implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.8'//DB
jsp 폴더,파일 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인덱스</title>
</head>
<body>
<h1>index</h1>
</body>
</html>
컨트롤러 생성
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping("/index")
public String index() {
return "index";
}
}
mapper 생성
서버에서 보내온 메시지 띄우기
인덱스 컨트롤러
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class IndexController {
@GetMapping("/")
public ModelAndView index() {
ModelAndView mv = new ModelAndView("index");
mv.addObject("test", "테스트 입니다.");
return mv;
}
}
인덱스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>인덱스 입니다.</h1>
서버에서 보내온 메시지 : ${test }
</body>
</html>
리스트 담아서 보내기
인덱스 서비스 컨트롤러 만들기
package com.mask.web.service;
import org.springframework.stereotype.Service;
@Service
public class IndexService {
}
컨트롤러와 연결
@Autowired
private IndexService indexService;
인덱스 서비스 dao 만들기 (인터페이스)
package com.mask.web.dao;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public class IndexDAO {
}
서비스와 연결
인덱스 컨트롤러 >리스트 담아서 보내기
인덱스서비스
package com.mask.web.service;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mask.web.dao.IndexDAO;
@Service
public class IndexService {
@Autowired
private IndexDAO indexDAO;
public List<Map<String, Object>> boardList() {
return indexDAO.boardList();
}
}
인덱스DAO
package com.mask.web.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface IndexDAO {
List<Map<String, Object>> boardList();
}
인덱스 매퍼
<?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.mask.web.dao.IndexDAO">
<select id="boardList" resultType="Map">
SELECT board_no, board_title,
board_write, board_date, board_count, comment
FROM boardview LIMIT 0,
10
</select>
</mapper>
경로 잘 지정해주기, 나는 자꾸 짝꿍꺼 경로 복사해와서 안열린다. 화나 > mask인데 짝꿍 이름으로 경로 지정함
jstl 사용해서 리스트 출력하기
STS > spring initializt 에서 만들기
MySQL Driver가 없어서 MariaDB Driver 추가
MyBatis Framework
Thymeleaf
Lombok
Spring Web
Spring Boot DevTools
>generate
다운로드 받은 파일 전자정부 워크스페이스에 압축 풀기
import > Gradle
설정가져오기
# DB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://guro.wisejia.com:3308/c23c_22
spring.datasource.username=c23c_22
spring.datasource.password=01234567
# mybatis
mybatis.type-aliases-package=com.mask.web.mybatis
# 페이지 구동되면 아래 static 하위 폴더들이 먼저 실행 됨
mybatis.mapper-locations=static/mapper/*.xml
# 포트변경시
server.port=80
bulid.gradle > 처음에 다 추가해서 줘서 확인만 했음
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3'
}
controller 패키지, 클래스 생성
package > com.myhand.web.controller
class > IndexController
어노테이션 설정> @Controller
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping("/index")
public String index(){
return "index";
}
}
src/main/resources>templates >HTML파일 만들기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인덱스</title>
</head>
<body>
<h1>인덱스다~</h1>
</body>
</html>
구동하기
데이터 보내기
IndexController
IndexController
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping("/index")
public String index(Model model){
model.addAttribute("test","테스트입니다.");
return "index";
}
}
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>인덱스</title>
</head>
<body>
<h1>인덱스다~</h1>
[[${test}]]<br>
<th:block th:text="${test}"></th:block>
</body>
</html>
boardList 출력하기
controller>service>dao>mapper 까지
IndexController > list 만들어서 보내기
IndexController > service와 연결
@Autowired
private IndexService indexService;
@GetMapping("/")
public String index(Model model) {
model.addAttribute("test", "텍스트입니다");
List<Map<String, Object>> list = indexService.boardList();
model.addAttribute("boardList", list);
return "index";
}
com.mask.web.service 패키지, IndexService 클래스 생성
어노테이션으로 dao와 연결
@Autowired
private IndexDAO indexDAO;
IndexService > boardList
public List<Map<String, Object>> boardList() {
return indexDAO.boardList();
}
com.mask.web.dao패키지, IndexDAO 인터페이스 생성
@Repository
@Mapper
public interface IndexDAO {
List<Map<String, Object>> boardList();
indexMapper
<?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.mask.web.dao.IndexDAO">
<!-- <select id="boardList" resultType="Map"> SELECT board_no, board_title, board_write, board_count, comment, board_date FROM boardview LIMIT 0, 10 </select> -->
<select id="boardList" resultType="Map">
SELECT board_no, board_title,
board_write, board_date, board_count, comment
FROM boardview LIMIT 0,10
</select>
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>인덱스입니다~~~</h1>
<hr>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>글쓴이</th>
<th>날짜</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<tr th:each="row : ${boardList}">
<td th:text="${row.board_no}"></td>
<td th:text="${row.board_title}"></td>
<td th:text="${row.board_write}"></td>
<td th:text="${row.board_date}"></td>
<td th:text="${row.board_count}"></td>
</tr>
</tbody>
</table>
</body>
</html>
디테일 만들기
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>인덱스입니다~~~</h1>
<hr>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>글쓴이</th>
<th>날짜</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<tr th:each="row : ${boardList}">
<td th:text="${row.board_no}"></td>
<td>
<a th:href="@{/detail(no=${row.board_no})}" th:text="${row.board_title}"></a>
</td>
<td th:text="${row.board_write}"></td>
<td th:text="${row.board_date}"></td>
<td th:text="${row.board_count}"></td>
</tr>
</tbody>
</table>
</body>
</html>
디테일jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
[[${detail.board_no}]]
[[${detail.board_title}]]
<th:block th:utext="${detail.board_content}"></th:block> <!-- th:utext 이미지 출력 -->
</body>
</html>
'2023.11.21-2024.05.31' 카테고리의 다른 글
20240308 전자정부(로그인2,로그아웃, 상세보기) (2) | 2024.03.08 |
---|---|
20240307 전자정부(DB-multiboard 만들기, 부트스트랩 사용하기) (0) | 2024.03.07 |
20240305 스프링(관리자 페이지-상세보기 창으로 열기) (0) | 2024.03.05 |
20240305 스프링(쿠키-아이디 자동로그인, 세션) (4) | 2024.03.05 |
20240304 스프링(페이징, 검색, 게시글 수,searchTitle,postDel) (0) | 2024.03.04 |