개발자가 만드는 빈은 클래스에서, 스프링이 하는 빈은 xml파일에서
어노테이션 만드는 법
1단계
DefaultAnnotationHandlerMapping
클래스 레벨에서 @RequestMapping
AnnotationMethodHandlerAdapter
메서드 래벨에서 @RequestMapping
2단계 태그 선언
<context:component-scan base-package="패키지이름"/>
@Controller : 스프링 테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환
@Service : 서비스 빈으로 자동 변환
@Repository : DAO 빈으로 자동 변환
@Component : 빈으로 자동 변환
MainController
//역할
//@Controller("mainController")애너테이션은 주로 Controller 클래스에 위치해 빈을 만든다.
//@RequestMapping("/test)는 URL 요청 시 첫번째 단계의 요청이 /test이면 mainController빈에게 요청을 전달한다
//@ReqeustMapping(value="/main1.do", method=RequestMethod.GET)을 메서드에 위치시킨 후 각 요청을 구분하여 메서드를 호출
XML파일 <bean id="mainController" class="com.spring.ex01.MainController"/> |
Controller클래스 (같음) @Controller("mainController") public class MainController{ } |
확인할 주소 : http://localhost:8090/pro26/test/main1.do
//main3,4 적으면 에러
Ex02
web.xml파일에 추가
요청은 http://localhost:8090/pro26/test/loginForm.do
loginForm.jsp
방법1
파라미터값 지역변수에서 받아 mav.addObject
방법2
파라미터 값 바로 매핑 후 mav.addObject()
required속성을 추가한다면, true일 때 해당 인풋태그에 값을 입력하지 않으면 예외 발생
(아마 크롬에서 처리를 해줘 예외발생하지 않았음, null도 그냥 공백으로 처리해주고 있음)
Map으로 받아서 넣기
Map<String, String> info
get(key)에서 key는 input태그의 name값
mav.addObject("info", info)로 넘긴다면 view단에서 꺼낼 때 info.를 추가하여 꺼낸다
@ModelAttribute("info") LoginVO loginVo
[어노테이션 클래스명 변수명]
전달된 매개변수에 대해 LoginVO클래스 객체를 생성
이어서 매개변수 이름과 같은 속성에 매개변수 값을 설정한 후
info이름으로 바인딩한다.
예를 들면 로그인창에서 전달된 매개변수 이름이 userID이고
값이 hong인 경우
@ModelAttribute로 LoginVO를 지정하면 (바인딩)
전달 시 LoginVO의 속성 userID에 전달된 값 hong을 자동으로 설정한다.
LoginVO를 만들고 LoginForm의 action="${context}/test/login4.do"일때
바인드 후 Setter호출되어 자동설정
input태그의 name과 view단의 속성 이름이 일치해야 함 그렇지 않으면 500번에러
Model객체
loginForm을 거치지 않고 http://localhost:8090/pro26/test/login5.do로 바로 요청
1.JSP로 값을 바로 전달 가능
2. Model클래스의 addAttribute()메소드는 ModelAndView의 addObject()메소드와 같은 기능
3. 용도 : 뷰 정보를 따로 전달할 필요가 없을 때 사용
'Spring > Servlet' 카테고리의 다른 글
뉴렉처 서블릿4 - 공지사항 게시판 만들기 예제 (0) | 2021.06.14 |
---|---|
뉴렉처 스프링 MVC (0) | 2021.06.09 |
뉴렉처 서블릿3 - MVC Model | EL | 태그라이브러리 (1) | 2021.06.07 |
뉴렉처 서블릿2 (동적 페이지 | doGet, doPost) (0) | 2021.06.06 |
뉴렉처 서블릿 (0) | 2021.06.01 |