코드로 배우는 스프링 웹 프로젝트 - 5

김상복·2022년 5월 18일
0

23번 영상 : 컨트롤러 설정 테스트


		@Controller
        @RequiredArgsConstructor
        @RequestMapping("/board/*")
        @Log4j
        public class BoardController {

        private final BoardService service;

        @GetMapping("/list")
        public void list(Model model) {

            log.info("list..............");

            model.addAttribute("list", service.getList());

        }

	}
    

중요한것은


1. @RequestMapping
2. private final BoardService - @RequiredArgsConstructor
3. void, string 반환형

RequestMapping

Request 매핑으로 해당 url이 입력 되었을 때 해당 메소드를 실행 시킨다는 의미
위의 코드를 따르자면
/board/* : board로 들어오는 모든 url
/list : board/list에 해당하는 url이 요청될 시 수행
이라는 의미이다

@RequiredArgsConstructor

스프링 4.3부터는 Autowired로 의존성을 주입하는 것은 선호하지 않는다고한다

대신 생성자 주입을 권장하는데

lombok에서는 그러한 생성자 주입을 편하게 할 수 있는 어노테이션 @RequiredArgsConstructor 을 제공한다

https://upcake.tistory.com/417

https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection

컨트롤러의 반환형 void, string

  1. Void : 해당 메소드명과 동일한 URL을 찾아간다
  2. String : return 된 문자열과 동일한 URL을 찾아간다

24번 영상 : 컨트롤러 게시물 등록(Post방식)


@PostMapping("url") : Post로 받는 url 반드시 redirect가 필요하다


25번 영상 : Post방식과 RedirectAttributes


Post 방식 이후 URL 방식 처리

  • 1) 별도의 결과 페이지를 만들어서 보여주는 방식
    EX) 회원 가입 완료 페이지 등
  • 2) 목록 페이지로 이동하는 방식
    EX) 목록 페이지에서 알림 메시지를 보여주는 방식

RedirectAttributes

			@PostMapping("/register")
	public String register(BoardVO board, RedirectAttributes rttr) {

        log.info("board : " + board);

        service.register(board);

        // 처음 보낼 때 한번만 전송하는것
        rttr.addFlashAttribute("result", 1);

        // 계속 데이터가 남음
        rttr.addAttribute("result2", 2);

        return "redirect:/board/list";
}

redirect를 사용할 때 쓰는 클래스

@RequestParam

	@PostMapping("/remove")
	public String remove(@RequestParam("bno") Long bno, RedirectAttributes rttr) {
	
        int count = service.remove(bno);

        if(count == 1) {
            rttr.addFlashAttribute("result", "Success");
        }

        return "redirect:/board/list";
}

@getParameter와 같은 메소드로써

@RequestParam("가져올 데이터의 이름") [데이터타입][가져온데이터를 담을 변수]

이런형태로 파라미터를 가져올 수 있다


26번 영상 : 부트스트렙 템플릿 적용하기


Jquery cdn

	<script src="https://code.jquery.com/jquery-3.6.0.min.js" 
    integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" 
    crossorigin="anonymous"></script>
    

include

include는 jsp의 내용이 길어질 때 대표적으로 header, footer를 나누어서 jsp를 항상 적용시키는 방법

<%@ include file='jsp 파일 경로' %>
profile
초보 개발자

0개의 댓글