티스토리 뷰
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 |
---|