Command 클래스를 통해서 데이터를 넘기고 받는 예제
1. dto 생성 - ListCommand 클래스 : 스프링에서도 DTO를 부르는 이름이 있음 Command
2. view 생성 - write.jsp(데이터 입력 페이지), write_ok.jsp(데이터 출력 페이지)
3. 컨트롤러 생성 - ListFormController
1. Command클래스 생성(DTO에 해당. Model)
package com.test; public class ListCommand { public String userId; private String userName;
public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } } |
2. view 생성 ① 입력 페이지
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="<%=cp%>/test/write_ok.action" method="post"> 아이디 : <input type="text" name="userId"/><br> 이름 : <input type="text" name="userName"/><br> <input type="button" value="전송하기"> </form> </body> </html> |
2. view 생성 ② 출력 페이지
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${message } </body> </html> |
3. 컨트롤러 생성
package com.test; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class ListFormContorller implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("test/write"); } } |
4. Dispatcher servlet.xml에 핸들러매핑 정보 등록 - SimpleUrlHandlerMapping
<!-- SimpleUrlHandlerMapping --> <bean id="SimpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="order" value="1"/> <property name="alwaysUseFullPath" value="true"/> <property name="mappings"> <props> <prop key="/test/write.action">ListFormController</prop> <prop key="/test/write_ok.action">ListController</prop> </props> </property> </bean> <bean name="ListFormController" class="com.test.ListFormController"/> <bean name="ListController" class="com.test.ListController"/> |
스프링은 Struts에 비해 Map에 해당되는 내용이 모두 디스패처서블릿에 들어감. 경량컨테이너라는 큰 장점.
① <property name="order" value="1"/>
스프링은 어노테이션을 일순위로 찾아감. 그런데 내가 정의한 핸들러내용을 1순위로 설정하고 싶으면 property로 order를 설정하면 된다. 스프링은 제일먼저 1순위로 설정된 내용을 읽고 설정된 내용에 해당된게 없으면 그 이후로 어노테이션을 찾아간다.
② <property name="alwaysUseFullPath" value="true"/>
http://localhost:8080/spring/board/list.action
여기에 value가 true라면 주소를 세분화 시킬수 있다. false가 오게되면 모든 액션명이 상이해야 오류가 나지않는다.
true : spring/board/list.action / false : spring/list.action
③ <property name="mappings">
주소에 따라 매핑되는 컨트롤러를 등록한다. 직접적으로 연결이 된다. 이 주소가 오면 어느 컨트롤러에 가라고 지정. 왔다갔다하는 개념이 아니라서 훨씬 단순하다.
5. 실행 페이지 ① 입력 페이지
5. 실행 페이지 ② 출력 페이지
'Dev > Spring' 카테고리의 다른 글
Spring2.5 MVC - AbstractWizardFormController (0) | 2019.04.05 |
---|---|
Spring2.5 MVC - Exception & SimpleFormController (0) | 2019.04.05 |
Spring2.5 MVC - AbstractController & BeanNameUrlHandlerMapping & 핸들러와 컨트롤러의 종류 (0) | 2019.04.05 |
Spring2.5/iBatis 셋팅 (0) | 2019.04.05 |
Spring2.5 - 제어의역전,의존성주입 예제 (0) | 2019.03.28 |