티스토리 뷰

반응형

Spring에서는 View에 직접 접근할 수 없다. 왜냐하면 View가 저장된 디렉토리가 WEB-INF디렉토리의 하위 디렉토리이기 때문이다. 접근하게 되면 404에러가 발생한다.

 

때문에 항상 Controller를 통해 View에 접근하게 되는데 이번 포스트에서는 연결하는 과정을 설명한다.


Controller ?

MVC 모델2 에서 사용되는 개념으로 모든 요청을 Controller에게 보내면 Controller는 이 요청을 보고 이후 어떤 작업을 진행할지 결정하게 되고, 필요에 의해서 DB접근 혹은 JSP파일로 포워딩(리다이렉트)하게 된다.

 

그래서 Controller에는 특정 요청(URL)에 대해 어떤 처리(Method)를 할 것인지 매핑이 되어있다.

그리고 반드시 Controller 클래스에는 @Controller 어노테이션이 설정되어야 한다.

 


매핑 Method 구성

@RequestMapping(value = {"/", "list.do"}) 와 같은 어노테이션이 각 Method에 붙는다.

  → "value에 저장된 두 URL로 요청이 오면 해당 Method로 처리한다" 라는 매핑이다.

  → 매핑 URL이 하나일 경우에는 @RequestMapping("/") 와 같이 표현할 수 있다.

  → 여기서 표현되는 URL에 생략된 기본경로는 webapp/views 디렉토리이다.

  → 메소드 지정도 가능한데 두 번째 인자로 method=RequestMethod.GET 와 같이 주면된다.

        (생략시 어떤 메소드가 와도 무관하다는 뜻이다.)

 

public [ 반환형 ] [ 함수 명 ] ( 매개변수 )

  ◎ 반환형

      1. void : 매핑한 URL와 View의 이름이 같을 경우 사용한다. ( 매핑명.jsp 으로 포워딩 )

      2. String : return "main"; 와 같이하면 main.jsp로 포워딩 한다. 

                   return "redirect:main"; 와 같이하면 main.jsp로 리다이렉트 한다.

                      (앞, 뒤 경로에 대한 생략은 servlet-context.xml에 표현되어 있다.)

      3. ModelAndView : 포워딩할 때 데이터하나를 포함하여 포워딩한다.

                                return new ModelAndView("main", "param1", 100); 와 같이 사용.

                                하나의 데이터밖에 안되기 때문에 여러개일 경우 Map을 사용해야한다.

  ◎ 함수명

     이건 자유롭게 해주면 된다. 리다이렉트할 때 함수명이 사용되니 기억해두자.

 

  ◎ 매개변수

     1. Model 객체 : 데이터를 담아서 return시 View로 전달한다. → Forwarding에서만 적용된다. 

              ( model.addAttribute("param1", "value1"); 와 같이 데이터 추가 )

              ( 이 때 View에서는 request.getAttribute("name");을 통해 사용가능하다. ) → EL표현식 사용도 가능

     2. 일반 변수 : URL 호출시 있던 파라미터명과 똑같이하면 알아서 형변환 후 저장이 된다.

              ( 반드시 URL?id="admin"&pw="123123" 와 같은 모양만 된다. → form사용을 통한 GET은 안된다.)

     3. HttpServletRequest 객체 : 기존의 JSP와 같은 방식으로 사용

              ( form 사용시 주로 사용하게 된다. )

 

 

 

마지막으로 ajax에 대해 좋은 설명이 있어 같이 적어둔다.

 → 비동기적인 처리로써 다른 페이지로 넘어가는게 아니라 현재 페이지에 그대로 있지만 백그라운드에서

     서버측의 내용을 처리하고 현재페이지에 변화를 준다.

 ( ajax를 위한 컨트롤러에는 반드시 @RestController, @ResponseBody 어노테이션이 붙어야 한다. )

반응형

'Web > Spring & JSP' 카테고리의 다른 글

[Spring] 스프링 프로젝트 구성 및 기본 설정  (0) 2019.06.05
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함