ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 55일 차 Spring MVC 어노테이션 ( 실전에 제일 가까움 )
    삼성SDS_멀티캠퍼스/Spring Frame Work 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에서의 이름만 겹치지 않게 처리해주시면 얼마를 추가하던지 상관없습니다만



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



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









    반응형
Designed by Tistory.