ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ MVC01 / Controller ] BoardController.java
    Spring 2022. 7. 22. 08:03
    package com.smhrd.web;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import com.smhrd.domain.Board;
    import com.smhrd.mapper.BoardMapper;
    
    // 어노테이션
    // POJO임을 명시
    @Controller
    public class BoardController {
    	
    	//IOC : Inbersion of Controll(제어 역전)
    	//우리가 xml에 적어두면, spring이 알아서 객체 생성 사용을 한다
    	
    	// DI : Dependency Injection(의존성 주입)
    	@Autowired //self service
    	BoardMapper mapper;
    	//메서드 <--> 주소 연결(Mapping)
    	// /boardList요청이 들어오면 이 메서드 실행
    	@RequestMapping("/boardList.do")
    	public String boardList(HttpServletRequest request) {
    		//Request나, Session같이 필요한게 있으면, 매개변수
    		
    		//게시물 가져오기
    		List<Board> list = mapper.boardList();
    		
    		//객체바인딩
    		request.setAttribute("list", list);
    		
    		
    		//jsp(view) 파일의 이름
    		//forward방식 이동
    		// /WEB-INF/views/boardList.jsp
    		return "boardList";
    	}
    	
    	@RequestMapping("/boardForm.do")
    	public void boardForm() {
    		
    	}
    	@RequestMapping("/boardInsert.do")
    	public String boardInsert(Board vo) {
    	      
    	      // 1. input태그의 name == VO의 필드명 == table의 컬럼명
    	      // 2. 기본생성자
    	      // 매개변수를 통해서 파라미터 수집가능
    	      // 만약 한개만 보내주는 경우라면? - 매개변수 변수명 == input태그의 name
    	      
    	      // 파라미터 수집
    	      // form태그로 보낸 데이터 받기(변수에 담기)
    	      /*
    	       * String title = request.getParameter("title"); String writer =
    	       * request.getParameter("writer"); String content =
    	       * request.getParameter("content");
    	       * 
    	       * Board vo = new Board(); vo.setTitle(title); vo.setWriter(writer);
    	       * vo.setContent(content);
    	       */
    	      // 게시글 저장 
    	      mapper.boardInsert(vo);
    	      
    	      // /WEB-INF/views/boardList.do.jsp
    	      // Redirect : 컨트롤러(POJO 메소드로 다시 요청하는 경우 사용)
    	      // urlMapping앞에 redirect:/를 붙이면 동작한다.
    	      return "redirect:/boardList.do";
    	   }
    	@RequestMapping("/boardContent.do")
    	public void boardContent(int idx, Model model) {
    	      
    	    // DB에서 글 가져오기
    		Board vo = mapper.boardContent(idx);
    		
    		mapper.boardCount(idx);
    	    // 객체바인딩
    	    // Model -> 객체바인딩 특화, request영역에 저장
    	    model.addAttribute("vo", vo);
    	         
    	   }
    	@RequestMapping("/boardDelete.do/{idx}")
    	public String boardDelete(@PathVariable("idx") int num) {
    		//주소 모양 그대로 데이터를 보내는 방식 : path variable
    		//RequestMapping에서 /{name} 을 통해 받아줘야함
    		//@PathVariable : 메서드의 매개변수로 Path Variable의 값을 받아옴
    		//@PathVariable("name") : name 값에 해당하는 path Variable값을 매개변수에 담아준다
    		// @RequestParam("name") : 변수의 이름이 일치하지 않아도 수집
    		mapper.boardDelete(num);
    		return "redirect:/boardList.do";
    	}
    	//Get방식 요청만 받아들이는 Controller
    	//boardUpdate.jsp이동
    	@GetMapping("/boardUpdate.do")
    	public String boardUpdateForm(int idx, Model model) {
    		Board vo = mapper.boardContent(idx);
    		model.addAttribute("vo",vo);
    		return "boardUpdate";
    	}
    	//같은 url요청이라도, 요청방식에 따라 다른 처리를 해야할 때 사용
    	//실제 Update기능
    	@PostMapping("/boardUpdate.do")
    	public String boardUpdateForm(Board vo) {
    		mapper.boardUpdate(vo);
    		return "redirect:/boardContent.do?idx="+vo.getIdx();
    	}
    }

    'Spring' 카테고리의 다른 글

    [ MVC02 / JS ] Board.js  (0) 2022.07.22
    [ MVC02 / View ] Base.jsp  (0) 2022.07.22
    [ MVC01 / Mapper ] BoardMapper  (0) 2022.07.22
    [ MVC01 / Domain ] SQL.sql  (0) 2022.07.22
    [ MVC01 / Domain ] BoardVO.java  (0) 2022.07.22

    댓글

Designed by Tistory.