스프링 MVC 패턴 간단하게 구현하기 (최신 버전의 어노테이션을 이용한 방식)


1. 일단 설정파일 servlet-context.xml에는

<context:component-scan base-package="spring.mvc.ch03" /> 

이런식으로 프로로젝트의 패키지명을 넣어준다.


2. 컨트롤러를 만들고 클래스명 위에 @Controller를 붙인다.


3. 컨트롤러 내부에서 값을 반환하는 메서드 생성

방법1. 전통적 방식으로 ModelAndView 타입으로 메서드 생성

방법2. 문자열로 반환하게끔 String으로 메서드 생성


4. 메서드 위에는 @RequestMapping("~.do") 형식으로 요청을 넣어줌



5. 메서드의 파라미터는 @RequestParam으로 입력값을 가져와서 담아줄 수 있다.

- @RequestParam("name") String name 

- 이것으로 인해 request.getParameter 필요없어짐.


6. ModelAndView로 객체 생성했으면 해당 객체명.addObject로 jsp에서 꺼내갈 수 있게 된다.


7. 객체명.setViewName("jsp 파일명")으로 안에 jsp 파일명을 담아주면 해당 명칭의 jsp로 전송하게 된다.


8. 해당 jsp 파일에서는 표현언어 ${} 안에 컨트롤러에서 addObject에서 첫번째 "" 안의 값을 넣어주면 불러오게 된다.





1. 컨트롤러


package spring.mvc.ch03.controller;


import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.servlet.ModelAndView;


@Controller

public class SearchController {

// 컨트롤러에서 값을 반환할 때

// 방법1. 문자열로 반환하게끔 String으로 메서드 생성

// 방법2. 전통적 방식으로 ModelAndView 타입으로 메서드 생성


@RequestMapping("/internal.do")

public ModelAndView searchInternal(@RequestParam("name") String name, @RequestParam("age") int age) {

System.out.printf("%s", "%d", name, age);

ModelAndView mav = new ModelAndView();

mav.addObject("name", name);

mav.addObject("age", age);

mav.setViewName("search/internal");

return mav;

}

}




2. 인덱스 jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<li><a href="<%= request.getContextPath() %>/hello.do">ch01_HelloController</a></li>    
<li><a href="<%= request.getContextPath() %>/newArticle.do" >ch02_NewArticleController</a></li>
<li><a href="<%= request.getContextPath() %>/internal.do?name=hong&age=35" >ch03_SearchController</a></li>
</ul>
</body>
</html>




3. 결과 jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<li>이름 : ${name}
<li>나이 : ${age}
</ul> 
</body>
</html>


Posted by netyhobby
,