/usr/article/write에서 글 작성 폼 표시/usr/article/list로 리다이렉트 GET 요청: 폼 보여주기POST 요청: 저장 처리 후 리스트로 이동package com.example.demo.controller;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.demo.repository.ArticleRepository;
import com.example.demo.vo.Article;
import lombok.RequiredArgsConstructor;
@Controller
@RequiredArgsConstructor
public class ArticleController {
private final ArticleRepository articleRepository;
@RequestMapping("/usr/article/list")
public String showList(Model model) {
List<Article> articles = articleRepository.getArticles();
model.addAttribute("articles", articles);
return "article/list";
}
@RequestMapping(value = "/usr/article/write", method = RequestMethod.GET)
public String showWriteForm() {
return "article/write";
}
@RequestMapping(value = "/usr/article/write", method = RequestMethod.POST)
public String doWrite(@RequestParam String title, @RequestParam int memberId) {
articleRepository.writeArticle(title, memberId);
return "redirect:/usr/article/list";
}
}

package com.example.demo.repository;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.example.demo.vo.Article;
@Mapper
public interface ArticleRepository {
List<Article> getArticles();
void writeArticle(@Param("title") String title, @Param("memberId") int memberId);
}

src/main/resources/mappers/ArticleMapper.xml<mapper namespace="com.example.demo.repository.ArticleRepository">
<select id="getArticles" resultType="com.example.demo.vo.Article">
SELECT id, regDate, title, memberId
FROM article
ORDER BY id DESC
</select>
<insert id="writeArticle">
INSERT INTO article
SET regDate = NOW(),
title = #{title},
memberId = #{memberId}
</insert>
</mapper>

빨간 오류는 원래 항상 나는 오류.
src/main/webapp/WEB-INF/jsp/article/write.jsp<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>글 작성</title>
</head>
<body>
<h1>글 작성</h1>
<form action="/usr/article/write" method="post">
<div>
제목: <input type="text" name="title" required>
</div>
<div>
작성자 ID: <input type="number" name="memberId" required>
</div>
<div>
<button type="submit">저장</button>
</div>
</form>
</body>
</html>


/usr/article/write (GET) → 글 작성 폼 표시
제목 + 작성자 ID 입력 후 전송
/usr/article/write (POST) → DB에 INSERT
완료 후 /usr/article/list로 이동
리스트 페이지에서 새 글 확인 가능


404: JSP 경로 확인 (article/write.jsp 맞는지)
HTTP 405 (Method Not Allowed): method = RequestMethod.POST 확인
NullPointerException: Repository 주입 누락 여부 확인
글 상세 페이지(/usr/article/detail?id=...)
상세보기에서 수정/삭제 버튼 추가