BoardController
package capoeira.capoeiraweb.controller;
import capoeira.capoeiraweb.dto.BoardDTO;
import capoeira.capoeiraweb.dto.CommentDTO;
import capoeira.capoeiraweb.service.BoardService;
import capoeira.capoeiraweb.service.CommentService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@Controller
@RequiredArgsConstructor
@RequestMapping("/capoeiraweb")
public class BoardController {
private final BoardService boardService;
private final CommentService commentService;
@GetMapping("/save")
public String saveForm() {
return "save";
}
@PostMapping("/save")
public String save(@ModelAttribute BoardDTO boardDTO) throws IOException {
System.out.println("boardDTO = " + boardDTO);
boardService.save(boardDTO);
return "redirect:/capoeiraweb/paging";
}
@GetMapping("/")
public String findAll(Model model) {
// DB에서 전체 게시글 데이터를 가져와서 list.html에 보여준다.
List<BoardDTO> boardDTOList =boardService.findAll();
model.addAttribute("boardList", boardDTOList);
return "list";
}
@GetMapping("/{id}")
public String findById(@PathVariable long id, Model model,
@PageableDefault(page=1) Pageable pageable,
HttpSession session) {
/*
해당 게시글의 조회수를 하나 올리고
게시글 데이터를 가져와서 detail.html에 출력
*/
//새로 추가 05-05 수정
String nickname = (String)session.getAttribute("loginNickname");
model.addAttribute("nickname", nickname);
boardService.updateHits(id);
BoardDTO boardDTO = boardService.findById(id);
/* 댓글 목록 가져오기 */
List<CommentDTO> commentDTOList = commentService.findAll(id);
model.addAttribute("commentList", commentDTOList);
model.addAttribute("board", boardDTO);
model.addAttribute("page", pageable.getPageNumber());
return "detail";
}
@GetMapping("update/{id}")
public String updateForm(@PathVariable Long id, Model model) {
BoardDTO boardDTO = boardService.findById(id);
model.addAttribute("boardUpdate", boardDTO);
return "update";
}
@PostMapping("/update")
public String update(@ModelAttribute BoardDTO boardDTO, Model model) {
BoardDTO board = boardService.update(boardDTO);
model.addAttribute("board", board);
return "redirect:/capoeiraweb/" + boardDTO.getId();
}
@GetMapping("/delete/{id}")
private String delete(@PathVariable Long id) {
boardService.delete(id);
return "redirect:/capoeiraweb/paging";
}
// /board/paging?page=1
@GetMapping("/paging")
public String paging(@PageableDefault(page = 1) Pageable pageable, Model model) {
// pageable.getPageNumber();
Page<BoardDTO> boardList = boardService.paging(pageable);
int blockLimit = 3; // 보여지는 페이지의 갯수 3개
int startPage = (((int)(Math.ceil((double)pageable.getPageNumber() / blockLimit))) - 1) * blockLimit + 1; // 1 4 7 10 ~~
int endPage = ((startPage + blockLimit - 1) < boardList.getTotalPages()) ? startPage + blockLimit - 1 : boardList.getTotalPages();
// page 갯수 20개
// 현재 사용자가 3페이지
// 1 2 3
// 현재 사용자가 7페이지
// 7 8 9
// 보여지는 페이지 갯수 3개
model.addAttribute("boardList", boardList);
model.addAttribute("startPage", startPage);
model.addAttribute("endPage", endPage);
return "paging";
}
}
package capoeira.capoeiraweb.controller;
import capoeira.capoeiraweb.dto.CommentDTO;
import capoeira.capoeiraweb.service.CommentService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
@RequiredArgsConstructor
@RequestMapping("/comment")
public class CommentController {
private final CommentService commentService;
@PostMapping("/save")
public ResponseEntity save(@ModelAttribute CommentDTO commentDTO) {
System.out.println("commentDTO = " + commentDTO);
Long saveResult = commentService.save(commentDTO);
if (saveResult != null) {
// 작성 성공하면 댓글목록을 가져와서 리턴
// 댓글목록: 해당 게시글의 댓글 전체
List<CommentDTO> commentDTOList = commentService.findAll(commentDTO.getBoardId());
return new ResponseEntity<>(commentDTOList, HttpStatus.OK);
} else {
return new ResponseEntity<>("해당 게시글이 존재하지 않습니다.", HttpStatus.NOT_FOUND);
}
}
}
HederController
package capoeira.capoeiraweb.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/capoeiraweb")
public class HederController {
@GetMapping("")
public String index() {
return "index"; //=>templates 폴더의 index.html을 찾아감
}
//아바다 카포에이라 페이지 출력 요청
@GetMapping("/abada")
public String abada() {
return "abada_capoeira";
}
@GetMapping("/abadamap")
public String abadamap() {
return "abada_capoeiramap";
}
@GetMapping("/abadamapp")
public String abadamapp() {
return "abada_capoeiramapp";
}
// 서울센터 수업시간 및 수업가격 추가
@GetMapping("/abadamappp")
public String abadamappp() {
return "abada_capoeiramappp";
}
//부천센터 수업시간 및 수업가격 추가
@GetMapping("/abadamapppp")
public String abadamapppp() {
return "abada_capoeiramapppp";
}
//무젠자 카포에이라 페이지 출력 요청
@GetMapping("/muzenza")
public String muzenza() {
return "muzenza_capoeira";
}
@GetMapping("/muzenzamap")
public String muzenzamap() {
return "muzenza_capoeiramap";
}
//로그인 페이지
@GetMapping("/login")
public String loginForm() {
return "login";
}
//커뮤니티 페이지
@GetMapping("/cmniti")
public String cmniti() {
return "cmniti";
}
}
MemberController
package capoeira.capoeiraweb.controller;
import capoeira.capoeiraweb.dto.MemberDTO;
import capoeira.capoeiraweb.service.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
@Controller
@RequiredArgsConstructor
@RequestMapping("/capoeiraweb")
public class MemberController {
//생성자 주입
private final MemberService memberService;
//회원가입 페이지 출력 요청
@GetMapping("/login_info")
public String login_info() {
return "login_info";
}
@PostMapping("/login_info")
public String login_info(@ModelAttribute MemberDTO memberDTO) {
System.out.println("MemberController.save");
System.out.println("memberDTO = " + memberDTO);
memberService.login_info(memberDTO);
return "index";
}
//로그인 성공 실패
@PostMapping("/login")
public String login(@ModelAttribute MemberDTO memberDTO, HttpSession session) {
MemberDTO loginResult = memberService.login(memberDTO);
if (loginResult != null) {
//login 성공
session.setAttribute("loginNickname", loginResult.getNickname());
System.out.println("성공");
return "index";
}else {
//login 실패
System.out.println("실패");
return "login";
}
}
@GetMapping("/logout")
public String logout(HttpSession session) {
session.invalidate();
return "index";
}
@PostMapping("/member/idCheck")
public @ResponseBody String idCheck(@RequestParam("id") String id) {
System.out.println("id = " + id);
String checkResult = memberService.idChenk(id);
if (checkResult != null) {
return "ok";
}else {
return "no";
}
}
}