반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 인공지능
- 데이터구조
- 딥러닝
- 데이터분석
- Yes
- 컴퓨터과학
- 네트워크보안
- 데이터과학
- 자료구조
- 자바스크립트
- 보안
- 프로그래밍
- 클라우드컴퓨팅
- 네트워크
- 프로그래밍언어
- 파이썬
- I'm Sorry
- springboot
- 디자인패턴
- 데이터베이스
- 웹개발
- 알고리즘
- 사이버보안
- 소프트웨어공학
- 빅데이터
- 소프트웨어
- 머신러닝
- 버전관리
- 컴퓨터비전
- 컴퓨터공학
Archives
- Today
- Total
스택큐힙리스트
자바 스프링으로 정적 게시판 만들기 본문
반응형
1. 목표 & 준비
“데이터베이스 연결 없이 정적 데이터만으로 게시판을 띄우려면?”
- 스프링 부트 + Thymeleaf만 있으면 끝!<br>
- start.spring.io에서 Spring Web, Thymeleaf 두 가지만 선택해 프로젝트를 내려받는다.
IntelliJ·VS Code·STS 등 어떤 IDE든 OK. 생성-실행까지 1분이면 충분하다.
2. 도메인 모델 – Post
// src/main/java/com/example/board/Post.java
package com.example.board;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class Post {
private Long id;
private String title;
private String writer;
private String content;
}
- Lombok를 쓰면 생성자·getter 작성 시간을 줄일 수 있다.
- DB가 없으므로 @Entity·JPA 설정은 필요 없다.
3. 컨트롤러 – in-memory 게시글 목록
// src/main/java/com/example/board/PostController.java
package com.example.board;
import java.util.List;
import java.util.stream.LongStream;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class PostController {
private final List<Post> posts =
LongStream.rangeClosed(1, 5)
.mapToObj(i -> new Post(
i,
"샘플 글 " + i,
"관리자",
"여기에 본문을 적으세요 🚀"))
.toList();
@GetMapping("/posts")
String list(Model model) {
model.addAttribute("posts", posts);
return "posts"; // templates/posts.html
}
@GetMapping("/posts/{id}")
String detail(@PathVariable Long id, Model model) {
posts.stream()
.filter(p -> p.getId().equals(id))
.findFirst()
.ifPresent(p -> model.addAttribute("post", p));
return "post"; // templates/post.html
}
}
- List<Post>로 게시글을 메모리에 보관하므로 실행할 때마다 초기화된다.
- /posts : 전체 목록, /posts/{id} : 상세 보기.
4. 뷰 – Thymeleaf 템플릿
src/main/resources/templates/posts.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>게시판</title></head>
<body>
<h1>게시판</h1>
<ul>
<li th:each="p : ${posts}">
<a th:href="@{|/posts/${p.id}|}" th:text="${p.title}">제목</a>
<span th:text="${p.writer}"></span>
</li>
</ul>
</body>
</html>
src/main/resources/templates/post.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title th:text="${post.title}">상세</title></head>
<body>
<h2 th:text="${post.title}">제목</h2>
<p><b th:text="${post.writer}">작성자</b></p>
<pre th:text="${post.content}">본문</pre>
<a href="/posts">← 목록으로</a>
</body>
</html>
- th:each·th:text·th:href 등 기본 문법만으로 리스트·상세를 쉽게 그릴 수 있다.
- 빌드 없이 Ctrl + F5로 브라우저 새로 고침하면 변경 사항이 즉시 반영된다.
5. 실행
./gradlew bootRun
# 또는
mvn spring-boot:run
http://localhost:8080/posts에 접속하면 게시글 5개가 보이고, 제목을 클릭하면 상세 페이지가 열린다.
6 요약
- 정적 게시판은 JPA·DB 없이도 가능—컨트롤러 내부 List로 충분.
- Thymeleaf는 스프링과 친화적이고, 코드-HTML 분리가 직관적.
- 추후 DB·페이징·검색을 붙여 나가면 완전한 CRUD 게시판으로 진화한다.
반응형
'개발' 카테고리의 다른 글
자바 스프링 Spring Security 로그인·권한 관리 (0) | 2025.07.14 |
---|---|
자바 스프링 게시판 DB 연동 (0) | 2025.07.14 |
Spring Boot로 1분 만에 프로젝트 만들기 (3) | 2025.07.14 |
자바 스프링 개발 시작하기 - 8일차 IoC·DI와 Bean 생명주기 (0) | 2025.07.14 |
Gradle 캐시 최적화로 빌드 시간 단축하기 (0) | 2025.07.13 |
Comments