contoroller

황재원·2023년 5월 2일

capoeira web

목록 보기
13/18

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";

    }
}

CommentController

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";
        }
    }
}
profile
비전공 신입 개발자

0개의 댓글