일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 과정평가형
- POI
- CSS
- JVM
- spring
- 배열
- web.xml
- eGovFramework
- 개념
- input
- TO_DATE
- was
- Database
- Ajax
- mybatis
- jQuery
- json
- Oracle
- 함수
- javascript
- controller
- Java
- 암호화
- 태그
- sql
- eGov
- 오류
- html
- select
- array
- Today
- Total
web developer
[egov] @Controller 메서드의 리턴타입 본문
@Controller
해당 클래스가 Controller임을 나타내기 위한 어노테이션
@Controller 메소드의 리턴타입
리턴타입 | 설 명 |
ModelAndView | View 정보 및 모델 정보를 담고 있는 ModelAndView 객체, 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터, ModelMap(또는 Map) 타입의 파라미터 데이터가 View에 함께 전달된다. |
Model(or ModelMap) | 커맨드 객체와 @ModelAttribute이 적용된 메소드의 리턴 데이터가 Model 객체에 담겨 있다 |
Map | View 에 전달할 객체 정보를 담고 있는 Map을 리턴한다. 이때 뷰 이름은 요청 URL로 부터 결정된다. 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터가 View에 함께 전달된다. |
String | View 이름을 리턴한다. 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터, 그리고 ModelMap(또는 Map)타입의 파라미터 데이터가 뷰에 전달된다. |
void | 메소드가 직접 응답을 처리하는 경우 |
ModelAndView
1. 단순히 데이터 저장
@Controller
public class HelloController {
@RequestMapping("/hello")
public ModelAndView hello() {
ModelAndView view = new ModelAndView();
view.setViewName("hello");
/*
view.setViewName = 뷰의 이름을 설정
View는 hello.jsp
*/
view.addObject("name", "Lim");
/*
view.addObject = 뷰에 전달할 데이터를 저장
${name} = Lim
*/
return view;
}
}
1-2. List로 데이터 저장
@RequestMapping("BoardList.do")
public ModelAndView list(
HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
BoardVO bVO,
int bno,
ModelAndView mv
)
{
List<bVO> list = BoardService.SelectBoardList(bno);
mv.setViewName("board/BoardList");
/*
view.setViewName = 뷰의 이름을 설정
View는 BoardList.jsp
*/
mv.addObject("list", list);
/*
view.addObject = 뷰에 전달할 데이터를 저장
list
*/
return mv;
// http://localhost:8080/BoardList.do를 request한 경우, BoardList.jsp가 view가 된다.
}
mv.addObject("list", list)
서비스로직의 결과를 ModelAndView 객체에 담아서 클라이언트, 즉 jsp에서 그 결과를 사용할 수 있도록 한다.
mv에 값을 저장하는것은 map과 똑같이 키(key)와 값(value)로 구성이 되는데, BoardService.selectBoardList 메서드를 통해 얻어온 결과 list를 "list"라는 이름으로 저장하고 있다.
Map
@GetMapping("/test.do")
public Map<String, String> test() {
return data;
}
@GetMapping("test.do")
@ResponseBody
public HashMap<String, Object> example() {
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("name", "뜨루");
map.put("age", 28);
map.put("gender", "여자");
return HaspMap; // 자동으로 JSON타입으로 반환해서 전달한다.
}
String
@GetMapping("test.do")
public String test(Model model) {
model.addAttribute("data", data);
return "/test/data";
}
Model 안에 데이터를 key, value 값으로 담고, return 타입을 String 값으로 뷰의 이름을 지정해주면 뷰로 데이터가 전송되게 됩니다. 뷰에서는 해당 데이터의 key값을 객체 이름으로 하여 그 안에 데이터를 조회합니다.
@RequestMapping("test.do")
public String test() throws Exception {
return "redirect:/board/list.do";
}
redirect: 접두어를 붙이게 되는 경우 지정한 페이지로 리다이렉트가 되게 됩니다. 리다이렉트는 두 가지 방식으로 입력할 수 있습니다.
redirect: /api/test -> 현재 서블릿 컨텍스트에 대한 상대적인 경로로 리다이렉트를 하게 됩니다.
redirect: http//:localhost:8080/api/test -> 와 같이 전체 경로를 적는 경우 절대 경로로 리다이렉트를 하게 됩니다.
List
@RequestMapping("BoardList.do")
public List<BoardVO> list(bno){
return BoardService.SelectBoardList(bno);
}
@RequestMapping("BoardList.do")
public List<BoardVO> list(BoardVO bVO){
List<BoardVO> list = BoardService.SelectBoardList(bVO);
return list;
}
Void
@RequestMapping("test.do") //세부적인 url pattern
public void test(BoardVO bVO, HttpSession session) {
String userid = (String)session.getAttribute("userid");
bVO.setUserid(userid);
BoardService.selectBoardList(bVO);
// jsp 페이지로 가거나 데이터를 리턴하지 않음
// RequestToViewNameResolver를 통해 자동생성되는 View 이름이 사용된다.
// URL과 View 이름을 통일하여 사용해야한다.
}
출처 : https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:annotation-based_controller
'Framework > Egovframework [spring]' 카테고리의 다른 글
[eclipse] parameterType Class/TypeAlias 'vo' not found. (0) | 2022.03.19 |
---|---|
[egov] eclipse workspace 선택 후 실행 오류 (0) | 2022.03.14 |
[egov] egov mvc 폴더 기본구성 [myBatis] (0) | 2022.02.17 |
[egov] EgovMap이란? EgovMap으로 데이터 가져오기 (0) | 2022.02.17 |
[egov] @RequestMapping 속성 (0) | 2022.02.08 |