데이터베이스
Maria DB


회원가입, 로그인 구현
- controller/userController.java
package com.example.sessac.first.controller;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.example.sessac.first.mapper.UserMapper;
import com.example.sessac.first.model.User;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
UserMapper userMapper;
@GetMapping("join")
public String join() {
return "user/join";
}
@PostMapping("join")
public String join(HttpSession session, User user){
userMapper.join(user);
return "redirect:/";
}
@GetMapping("login")
public String login(){
return "user/login";
}
@PostMapping("login")
public String login(HttpSession session, User user){
String id = user.getUserId();
String pw = user.getUserPw();
return "redirect:/";
}
@GetMapping("logout")
public String logout(HttpSession session){
session.removeAttribute("user");
return "redirect:/";
}
}
package com.example.sessac.first.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.example.sessac.first.model.User;
@Mapper
public interface UserMapper {
public void join(User user);
public String getPw(String id);
public User selectUser(String id);
}
package com.example.sessac.first.model;
import lombok.Data;
@Data
public class User {
private String userId;
private String userPw;
private String userName;
private String userAddr;
}
<?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.example.sessac.first.mapper.UserMapper">
<insert id="join" parameterType="com.example.sessac.first.model.User">
insert into user values(#{userId},#{userPw},#{userName},#{userAddr})
</insert>
<select id="getPw" parameterType="String" resultType="String">
select userPw
from user
where userId=#{userId}
</select>
<select id="selectUser" parameterType="String" resultType="com.example.sessac.first.model.User">
select *
from user
where userId=#{userId}
</select>
</mapper>

- 회원가입에서 입력해도 db로 넘어가지 않는 경우 ->pom.xml에 오타가 있었다. 해결 후 정상적으로 넘어감
게시글 구현

- controller/BoardController.java
package com.example.sessac.first.controller;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
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.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.sessac.first.mapper.BoardMapper;
import com.example.sessac.first.model.Board;
import com.example.sessac.first.model.User;
@Controller
@RequestMapping("board")
public class BoardController {
@Autowired
BoardMapper boardMapper;
@GetMapping("boardList")
public String boardList(HttpSession session, Model model){
ArrayList<Board> boardList = boardMapper.boardList();
model.addAttribute("boardList", boardList);
return "board/boardList";
}
@GetMapping("boardCreate")
public String boardCreate(){
return "board/boardCreate";
}
@PostMapping("boardCreate")
public String boardCreate(HttpSession session, Board board){
User user = (User) session.getAttribute("user");
board.setBoardWriter(user.getUserName());
boardMapper.boardCreate(board);
return "redirect:/board/boardList";
}
@GetMapping("boardDetail")
public String boardDetail(HttpSession session, Model model, @RequestParam("boardNo") int boardNo){
ArrayList<Board> boardList = boardMapper.boardList();
for(Board board : boardList){
if (board.getBoardNo() == boardNo){
model.addAttribute("board", board);
}
}
return "board/boardDetail";
}
@GetMapping("boardUpdate")
public String boardupdate(HttpSession session, @RequestParam("boardNo") int boardNo, Model model){
ArrayList<Board> boardList = boardMapper.boardList();
for(Board board : boardList){
if (board.getBoardNo() == boardNo){
model.addAttribute("board", board);
}
}
return "board/boardUpdate";
}
@PostMapping("boardUpdate")
public String boardUpdate(HttpSession session, Board board){
boardMapper.boardUpdate(board);
return "redirect:/board/boardList";
}
@GetMapping("boardRemove")
public String boardRemove(@RequestParam("boardNo") int boardNo){
boardMapper.boardRemove(boardNo);
return "redirect:/board/boardList";
}
}
package com.example.sessac.first.mapper;
import java.util.ArrayList;
import org.apache.ibatis.annotations.Mapper;
import com.example.sessac.first.model.Board;
@Mapper
public interface BoardMapper {
public ArrayList<Board> boardList();
public void boardCreate(Board board);
public void boardUpdate(Board board);
public void boardRemove(int boardNo);
}
package com.example.sessac.first.model;
import java.util.Date;
import lombok.Data;
@Data
public class Board {
private int boardNo;
private String boardTitle;
private String boardContent;
private String boardWriter;
private Date boardTime;
}
<?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.example.sessac.first.mapper.BoardMapper">
<select id="boardList" resultType="com.example.sessac.first.model.Board">
select * from board
</select>
<insert id="boardCreate" parameterType="com.example.sessac.first.model.Board">
insert into board values( NULL , #{boardTitle},#{boardContent},#{boardWriter}, now())
</insert>
<update id="boardUpdate" parameterType="com.example.sessac.first.model.Board">
update board
set boardTitle=#{boardTitle}, boardContent=#{boardContent}
where boardNo=#{boardNo}
</update>
<delete id="boardRemove" parameterType="int">
delete from board where boardNo=#{boardNo}
</delete>
</mapper>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<table border="1">
<tr>
<td>게시글번호</td>
<td>게시글제목</td>
<td>작성자</td>
</tr>
<th:block th:if="${boardList} !=null">
<tr th:each="board : ${boardList}">
<td th:text="${board.boardNo}"></td>
<td>
<a th:href="@{/board/boardDetail(boardNo=${board.boardNo})}">[[${board.boardTitle}]]</a>
</td>
<td th:text="${board.boardWriter}"></td>
</tr>
</th:block>
<th:block th:unless="${boardList} != null">
<tr>
<td colspan="3">게시글이 존재하지 않습니다.</td>
</tr>
</th:block>
</table>
<a href="/board/boardCreate">글쓰기</a>
</body>
</html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<h1>- 게시글 상세보기 -</h1>
<h3>작성자 : [[${board.boardWriter}]]</h3>
<h3>글 제목</h3>
<textarea name="boardTitle" style="width:100%;" readonly>[[${board.boardTitle}]]</textarea>
<h3>글 내용</h3>
<textarea name="boardContent" style="width:100%; height:200px;" readonly>[[${board.boardContent}]]</textarea>
<h3>글 작성 시간</h3>
<span>[[${board.boardTime}]]</span><br/>
<a href="/board/boardList">목록으로</a>
<th:block th:if="${board.boardWriter} == ${session.user.userName}">
<a th:href="@{/board/boardUpdate(boardNo=${board.boardNo})}">글 수정</a>
<a th:href="@{/board/boardRemove(boardNo=${board.boardNo})}">글 삭제</a>
</th:block>
</body>
</html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<h1>- 게시글 작성 -</h1>
<form action="/board/boardCreate" method="post">
<h3>작성자 : [[${session.user.userName}]]</h3>
<h3>글 제목</h3>
<textarea name="boardTitle" style="width:100%;"></textarea>
<h3>글 내용</h3>
<textarea name="boardContent" style="width:100%; height:200px;"></textarea>
<input type="submit" value="게시글작성"/>
</form>
</body>
</html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<h1>- 게시글 수정 -</h1>
<form action="/board/boardUpdate" method="post">
<input type="hidden" name="boardNo" th:value="${board.boardNo}"/>
작성자 : <input type="text" name="boardWriter" th:value="${board.boardWriter}"/>
<h3>글 제목</h3>
<textarea name="boardTitle" style="width:100%;">[[${board.boardTitle}]]</textarea>
<h3>글 내용</h3>
<textarea name="boardContent" style="width:100%; height:200px;">[[${board.boardContent}]]</textarea>
<input type="submit" value="게시글수정"/>
</form>
</body>
</html>




