[SPRING] 게시판만들기 8 [ 어노테이션 기반 MVC 개발]

🐷Jinie (juniorDeveloper)·2020년 12월 2일
0

JSP/MVC/SPRING

목록 보기
58/81
  • 스프링은 어노테이션 기반 설정을 제공함으로써 과도한 XML 설정으로 인한 문제를 해결함.
  • HandlerMapping, Controller, ViewResolver 같은 여러 클래스를 등록해야하므로 어노테이션 설정을 최대한 활용하여 XML설정을 최소화

1. 어노테이션 관련 설정

  • xml파일의 bean을 줄이는 방법으로
  • bean루트 엘리먼트에 context 네임스페이스를 추가한다.
  • 스캐너 붙이기
<context:component-scan base-package="com.springbook.biz">
</context:component-scan>
  • 기존에는 Controller 클래스 생성을 위해서는 Controller 클래스들을 모두 스프링 설정파일에 bean등록해야함.
  • 하지만, 어노테이션을 사용하면 Controller클래스를 하나하나 다 등록할 필요없이 @Controller를 이용해서 자동으로 객체를 생성하게 할 수 있다.
  • 메서드를 딱 내가 실행할 부분만 남기고 편집해준다.
  • @RequestMapping 어노테이션을 사용해서 /insertBoard.do 가 주소에있으면 아래 실행코드를 매핑해줄 수 있도록 한다.

  • update, insert, delete를 모두 동일하게 수정해준다.
  • select문도 역시 수정해준다.
  • 전체적으로는 동일하게 수정하나 select 쿼리를 실행하는 메서드는 return이 있어야하기 때문에 ModelAndView타입의 return으로 결과를 받을 수 있는 공간을 일단 남겨준다.

2. 클라이언트 요청처리

  • 사용자가 요청한 값을 하나하나 VO에 set하고 사용했던 코드를 정리하자
  • 사용자 입력정보를 기존에는 getParameter를 이용해서 받아서 저장했었다.
  • 이렇게 코드를 사용하면 입력정보가 많을경우 코드가 너무 복잡해진다.
  • 따라서 Command 객체를 이용해서 정리한다.
  • Command객체는 메서드 매개변수로 받은 VO객체이다.

  • 이렇게 처리해주면 getParameter라는건 코드에 없다.
  • 다음으로 new로 생성했던 Service도 Command화 하자

  • 나머지 Controller도 처리한다.
  • select쿼리를 실행하는 메서드의경우 받아올 데이터가 있기때문에 return형이 ModelAndView가 된다.

[결과확인]

  • 입력하기

  • 목록보기
  • 삭제하기

  • 상세보기
  • 수정하기

  • 검색하기

  • 이때 주의할점! 매개변수로 Command화 할때는 반드시 인터페이스가아닌 실제 실행코드가 있는 객체를 이용한다! Service인터페이스를 만들었다면 클래스인 ServiceImpl로 매개변수선언!

3. 컨트롤러 통합하기

  • 여러개로 쪼개진 Controller를 하나의 파일에 통합한다.

4. 요청방식에 따른 처리 (GET/ POST)

  • Controller에 GET/POST 방식을 설정하고
  • form.jsp파일과 Controller에 각각 다른 방식으로 설정해준다.

  • 결과를 확인하면

  • 허용되지 않는 메소드라고 확인된다.
  • 이번에는 설정을 맞춰준다.

  • 값이 잘 입력되는 것을 볼 수 있다.

    잠깐 참고!

    [ GET방식의 특징]
    URL에 변수(데이터)를 포함시켜 요청한다.
    데이터를 Header(헤더)에 포함하여 전송한다.
    URL에 데이터가 노출되어 보안에 취약하다.
    전송하는 길이에 제한이 있다.
    캐싱할 수 있다.
    GET 방식은 간단한 데이터를 URL에 넣도록 설계된 방식으로 데이터를 보내는 양에 한계가 있다.

    [ POST방식의 특징 ]
    URL에 변수(데이터)를 노출하지 않고 요청한다.
    데이터를 Body(바디)에 포함시킨다.
    URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
    전송하는 길이에 제한이 없다.
    캐싱할 수 없다.
    GET방식은 URL에 데이터를 붙여서 전송하는 반면에 POST방식은 BODY에 데이터를 넣어서 전송

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글