삼성SDS_멀티캠퍼스/Spring Frame Work

55일 차 Spring MVC 어노테이션 ( 실전에 제일 가까움 )

박성우기 2015. 11. 25. 10:32
반응형


오늘 작성할 스프링MVC 어노테이션을 이용한 프로젝트는


실전에 가장 많이쓰이기 때문에 주의깊게 봐야합니다.







우선 클래스에서 컨트롤러 인터페이스를 구현하는 방식으로


web.xml에 dispatcher를 정의하고 매핑시킵니다



<web.xml>




<servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet;</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>








<dispatcher-servlet.xml>





그다음 스프링빈설정파일에서


Namespaces에 들어가서


에노테이션을 사용하기 위해 context 컨피그레이션 파일에 체크를 합니다.





<context:component-scan base-package="controller"></context:component-scan>



그리고 이거 한줄만 추가해주면 앞으로는 controller라는 패키지에 있는 모든 클래스들을 매핑할 수 있게 합니다.






이렇게 하시면 됩니다







<HelloController.java>





매핑하였으면


controller 패키지에 클래스들을 추가합니다.


저는 HelloController라는 클래스를 추가하겠습니다.





package controller;


import org.springframework.stereotype.Controller;

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

import org.springframework.web.servlet.ModelAndView;


@Controller

public class HelloController {


@RequestMapping("hello.do")

public ModelAndView hello() {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("msg", "hello");

modelAndView.setViewName("hello.jsp");

return modelAndView;

}






이 작업에 대해서 설명하자면



생성된 클래스의 상단에 @Controller를 임포트시켜서 스프링설정파일과 연결시킵니다.


그 후에 자신이 만들고 싶은 함수명의 위에 @RequestMapping을 임포트시켜서


어떤 이름이 들어오면 해당 동작을 할지를 정합니다.


저는 hello.do라고 명명하겠습니다.



그리고 ModelAndView를 이용하여 어제(54일차)와 같이 작업을 해주시면 됩니다.


return값으로 ModelAndView의 객체를 리턴합니다









<hello.jsp>





<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!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>


에노테이션을 이용한 스프링MVC<br>



${msg}


</body>

</html>







컨트롤러에서 setViewName을 이용하여 hello.jsp로 값을 전달시켰습니다.


hello.jsp에서는 EL표현식을 이용하여 컨트롤러에서 보낸 값을 보여주기만 하면 되는 View입니다.



그렇기 때문에 body태그안에 



${ 컨트롤러에서 보낸 키 값 } 을 쓰시면 됩니다.











결과 창












지금 예제에서는 컨트롤러에 하나의 함수(hello)만 구현했는데



그 밑에 더 많은 종류의 함수를 추가해도 괜찮습니다.



@RequestMapping에서의 이름만 겹치지 않게 처리해주시면 얼마를 추가하던지 상관없습니다만



좋은 방법은 아니라고 합니다.



더 좋은 방법이 무엇인지는 다음 포스팅에 올리겠습니다.









반응형