반응형
    
    
    
  
														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 | 
													Tags
													
											
												
												- 알고리즘
 - springboot
 - 버전관리
 - 보안
 - 컴퓨터비전
 - Yes
 - 데이터분석
 - 소프트웨어
 - 네트워크보안
 - 네트워크
 - 데이터과학
 - 컴퓨터과학
 - 자료구조
 - 사이버보안
 - 자바스크립트
 - 데이터구조
 - I'm Sorry
 - 웹개발
 - 인공지능
 - 데이터베이스
 - 클라우드컴퓨팅
 - 빅데이터
 - 컴퓨터공학
 - 프로그래밍
 - 파이썬
 - 소프트웨어공학
 - 머신러닝
 - 디자인패턴
 - 프로그래밍언어
 - 딥러닝
 
													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