------

[ AD ] Port Monitor ( Try to use a Best WebSite Monitoring Tool )

------


SpringDynamicMvc_src.zip

맨아래 원본자료가 있으며, 실제 테스트 하면서, 언급되지 않아서 해당 정보를 찾는데,
시간이 소요된 것 같네요.. 이런 부분을 추가를 해 봤습니다..


[Spring]Spring MVC

DispatcherServlet : 최초로 요청을 받아들임, 다른 MVC관련 빈 객체를 담는 컨테이너
Controller :
실제 요청을 처리하는 객체
HandlerMapping : DispatcherServlet
이 받은 요청을 실제로 처리할 컨트롤러를 결정
ModelAndView : Controller
의 요청 처리의 결과물로 사용할 View(page) Model(Data)의 집합
ViewResolver : ModelAndView
정보로 실제 View로 가공하는 작업을 수행
View : Client
에게 응답할 완성품

 


1. Spring MVC 환경 설정 및 예제

1-1. Dynamic web project 클릭후 아래의 그림처럼 next 를 계속 누른다.


 1-2. 아래의 표시된 부분을 체크하고 finish!!

 1-3. maven 속성 적용 후 필요 라이브러리 pom.xml 파일에 아래에 내용 추가 정의



  
   org.springframework
   spring-core
   3.2.8.RELEASE
  
  
   org.springframework
   spring-context
   3.2.8.RELEASE
  
  
   org.springframework
   spring-web
   3.2.8.RELEASE
  
  
   org.springframework
   spring-webmvc
   3.2.8.RELEASE
  
 


1-4. web.xml 파일에 아래의 그림에 표시된 필요없는 부분 삭제

 

1-5. web.xml 파일 설정

  - DispatcherServlet을 웹어플리케이션에 등록(ex: [servletname]-servlet.xml)
  - DispatcherServlet
이 스프링 컨테이너가 되기 위해 사용할 스프링 설정파일 지정


예)


  Spring_MVC

 
 
      
      dispatcher
      
      org.springframework.web.servlet.DispatcherServlet
      
      
           contextConfigLocation
           /WEB-INF/dispatcher-servlet.xml
      
      
      1
 

 
 
      dispatcher
      *.do
 
 





   
    org.springframework.web.context.ContextLoaderListener
   
   

  
  
  
  
  
  


  

 
  encodingFilter
  org.springframework.web.filter.CharacterEncodingFilter
  
   encoding
   EUC-KR
  
 

 
  
  encodingFilter
  
  /*
 


1-6. web.xml 파일에 정의한  /WEB-INF/dispatcher-servlet.xml  파일 생성후 설정

(Spring bean configuration file
형식으로 생성)
  - DispatcherServlet 설정파일에 Controller, HandlerMapping, ViewResolver 빈으로 등록
)



 
  

 
 
  
  
  
    
    
    
  

 

1-7. controller 작성

) 

package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

//@Controller 에노테이션으로 서블릿 컨테이너에 controller객체를 빈으로 등록

@Controller
public class HelloController {
 
 //controller 클래스의 각 메소드에 처리할 url을 @RequestMapping으로 지정한다
 //이것이 HandlerMapping을 대체함
 @RequestMapping("hello.do")
 public ModelAndView hello(){
  
  ModelAndView modelAndView =new ModelAndView();
  //ModelAndView 객체에 속성and값 추가
  modelAndView.addObject("msg", "hello spring MVC");
  //ModelAndView 객체에 view 파일 셋팅
  modelAndView.setViewName("/jsp/hello.jsp");   // -> "hello"로 수정
  return modelAndView; // ViewResolver에 modelAndview를 리턴 
  }

​
  // 스프링 MVC 컨트롤러 요청처리에서 다양한 반환유형
  // 데이터와 뷰의 정보가 둘다 있는 경우 : ModelAndView
  // 데이터만 있는 경우(뷰의 정보가 없는 경우) : Map, Model등의 반환유형
  // >>> 뷰의 정보는 요청 url에서 확장자를 뗀 값을 viewName으로 사용
  // 뷰의 정보만 있는 경우(데이터의 정보가 없는 경우) : String, View 등의 반환유형
  // >>> 매개변수의 Model객체를 데이터로 사용
  // 둘다 없는 경우 : void
  // >>> 뷰의 정보는 요청 url에서 확장자를 뗀 값을 viewName으로, 매개변수의 Model객체를 데이터로

  @RequestMapping("onlyModel.do")  //return view 정의 안했을때는 onlyModel.jsp 로 간다
  public Map onlyModel() {
   Map model = new HashMap();
   model.put("msg", "모델만 있는 컨트롤러 메소드");
   return model;
  }

  @RequestMapping("onlyViewName.do")
  public String onlyViewName(Model model) {
   model.addAttribute("msg", "ViewName만 있는 컨트롤러 메소드");
   return "onlyViewName";
  }

  @RequestMapping("noInfo.do")
  public void noInfo(Model model) {
   model.addAttribute("msg", "아무정보도 없는 컨트롤러 메소드");
  }

  @RequestMapping("sessionTest.do")
  public String accessSession(HttpSession session) {
   session.setAttribute("sessionVal", "session에 값 넣었따");
   return "sessionTest";
  }

@RequestMapping("paramTest.do")
  public String paramTest(Model model, @RequestParam("num1") int a,
    @RequestParam("num2") int b) {
   model.addAttribute("val", a + b);
   return "paramTest";
  }


  //////////// 아래 Member가 모델 클래스에 있다고 가정했을때

  class Member{
   String id;
   String pw;
   public String getId() {
    return id;
   }
   public void setId(String id) {
    this.id = id;
   }
   public String getPw() {
    return pw;
   }
   public void setPw(String pw) {
    this.pw = pw;
   }
  }
  @RequestMapping("join.do") //join.do?id=kkk&pw=aaa 요청이 들어오면 알아서 member 객체에 들어감
  public String join(Member member)
  {
   System.out.println(member.getId()); // 출력결과 : kkk
   System.out.println(member.getPw()); // 출력결과 : aaa
   return "main";
  }
 }

 1-8. view 작성

)


 
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

Insert title here
${msg }

 이클립스에서 테스트시 해당 프로젝트 우클릭>RunAs>RunOnServer 클릭으로 테스트

 결과)

controller 관련 설정은 서블릿컨테이너 설정파일에 설정하고,
모든 서블릿이 공유해야하는 모델, 서비스, DAO 등을 루트컨테이너 설정 파일에 정의하자

 

발췌 : http://exploit_code.blog.me/220136918515

'0.일반개발' 카테고리의 다른 글

HttpServlet not found  (0) 2015.06.05
Spring Boot 프로젝트 생성 예제  (0) 2015.05.13
Spring MVC 개념  (0) 2015.04.28
Objective-C / Cocos2d / MVC  (0) 2012.07.06
cocos2d 기초 강좌 - 기본 함수  (0) 2012.06.01

+ Recent posts