공부한것들을 정리하는 블로그 입니다.
2. 게시판 구조 변경 : (Spring MVC 구조) -> (어노테이션 기반 MVC) 본문
2. 게시판 구조 변경 : (Spring MVC 구조) -> (어노테이션 기반 MVC)
호 두 2019. 11. 26. 09:45
게시판 구조 변경 이유 : (Spring MVC 구조) -> (어노테이션 기반 MVC)
- 스프링은 어노테이션 기반 설정을 제공함으로써 과도한 XML 설정으로 인한 문제를 해결한다.
- Spring MVC도 스프링 설정파일에 HandlerMapping, Controller, ViewResolver 같은 여러 클래스를 등록해야 하므로 어노테이션 설정을 최대한 활용하여 XML 설정을 최소화 할 수 있다.
1. 스프링 설정파일에서 어노테이션 관련 설정을 해준다.
- 스프링 설정파일에 <context:component-scan>으로 스프링 컨테이너가 컨트롤러 객체들을 자동으로 생성해주도록 수정한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:component-scan base-package="com.springbook.view"></context:component-scan>
</beans>
2. WEB-INF 하위에 위치한 JSP 파일들의 위치를 src/main/webapp 폴더 밑으로 수정한다
- WEB-INF 하위 폴더 및 파일은 웹서버로 검색 불가 (JavaScript, form태그)
- WEB-INF 하위 폴더 및 파일은 WAS로만 검색 가능 (JSP, Servlet)
- 기존에는 Servlet 및 JSP를 재정의하여 사용했기 때문에 쓸 수 있었으나, 이제 웹서버를 통해 호출할 시 원래대로 파일경로를 수정해줘야 한다.
3. @Controller 사용하기
- 스프링 설정파일에 <context:component-scan>으로 스프링 컨테이너가 컨트롤러 객체들을 자동으로 생성했기 때문에, 기존의 *Controller. 클래스에서 Controller 인터페이스를 상속받는 부분 (Implements Controller) 을 제거한다.
- 클래스명 위에 @Controller을 명시하고 import를 정리한다.
- 메서드명 위에 @Override를 제거한다
- 메서드명을 handleRequest() 에서 insertBoard/getBoard 등 기능에 맞춰 수정한다.
- 리턴타입을 기능에 맞춰 수정한다.
- 매개변수를 기능에 맞춰 수정한다.
@Controller 어노테이션 설정으로 인해 *BoardController 클래스 객체는 스프링 컨테이너가 자동으로 생성하고, Controller 객체로 인식한다.
따라서 해당 Controller 클래스는 POJO 클래스로 변경되었으므로 메서드명, 리턴타입, 매개변수를 변경 할 수 있다.
4. @RequestMapping 사용하기
- 기존의 HandleMapping 설정을 대체한다.
- 나머지는 @Controller에서 설명했으니 생략.
5. @Controller 와 @RequestMapping 으로 변경된 모습
- 변경전
- 변경후
6. 클라이언트 요청처리
- 기존에는 HttpServletRequest 의 getParameta() 메소드를 사용했는데
- 이제는 Command객체 - VO객체(BoardVO vo) 를 이용해 인자를 전달한다.
- 위의 5번항목 캡처 참고
예시)
- insertBoard() 메소드의 매개변수로 사용자가 입력한 값을 매핑할 BoardVO 클래스를 선언하면
- 스프링 컨테이너가 insertBoard() 메소드를 실행 할 때 Command 객체(VO)를 생성하여 넘겨주는데
- 이때 사용자가 입력한 값들을 Command 객체에 셋팅까지 해서 넘겨준다.
- 결과적으로, 사용자 입력정보 추출 + VO객체 생성 + 값 설정을 모두 컨테이너가 자동으로 처리하는 것이다.
=====================================================
7. 서비스 동작 확인
1. 브라우저에서 도메인주소 또는 ip주소 입력 ( http://localhost:8080/biz/login.do )
2. login.jsp 실행확인 ( url : http://localhost:8080/biz/login.jsp )
3. 다른 기능들 확인(insert/delete/update/logout)
게시판 구조 변경 : (Spring MVC 구조) -> (어노테이션 기반 MVC) : https://github.com/cyh789/BoardWeb2_2019
'(2019) 사이드 프로젝트 > BoardWeb2(게시판-SpringMVC)' 카테고리의 다른 글
7. gmail로 email 인증번호 보내기(비밀번호 찾기 기능/ 회원가입시 이메일 인증) (0) | 2020.01.06 |
---|---|
6. 프레젠테이션 레이어와 비즈니스 레이어 통합 (0) | 2019.11.29 |
5. @SessionAttributes, @ModelAttribute 사용하기 (0) | 2019.11.26 |
4. @RequestParam, @ModelAttribute 사용하기 (0) | 2019.11.26 |
3. Controller 통합(@RequestMapping), JSP에서 Command객체 사용(EL,@ModelAttribute), Servlet API 사용(HttpServletRequest, HttpSession) (0) | 2019.11.26 |
1. 시작하기 : 게시판 만들기(Spring MVC 구조) (0) | 2019.11.25 |
0. 환경설정 (Spring MVC) (0) | 2019.11.22 |