[spring] 메소드 리턴타입 정리

정예은·2020년 1월 16일
1

web

목록 보기
18/27

ModelAndView

view.setViewName("ModelAndView_test"); -> 이 안에 적은 string 값이 jsp 파일의 이름이 됨
view.addObject("name", "yeeun"); -> 이런식으로 객체를 만들어 정보 전달 가능

controller에서 이런 식으로 실행

@RequestMapping("/doE") 
    public ModelAndView hello() { 
    	ModelAndView view = new ModelAndView(); 
    	view.setViewName("ModelAndView_test"); 
    	view.addObject("name", "yeeun"); 
    	return view;
    }

ModelAndView_test.jsp 파일

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ModelAndView 타입</title>
</head>
<body>
	<h1>ModelAndView_test.jsp파일</h1>
	<p>view.setViewName("ModelAndView_test"); 이 안에 적은 string 값이 jsp 파일의 이름이 됨</p>
	<h4>이름 : ${name}</h4>
	<p>view.addObject("name", "yeeun");  이런식으로 객체를 만들어 정보 전달 가능</p>
	
</body>
</html>

스크린샷 2020-01-17 오전 1.02.20.png

String

데이터 전달하지 않을 때

데이터 전달하지 않을 때는 아래와 같은 형식으로 실행된다. return 된 string.jsp 파일을 보여준다.
아래에 있는 @ModelAttribute("msg")는 url이 넘어올때 ?msg=haha라고 넘어오면 msg의 값이 haha라고 된다.

@RequestMapping("/doB")
    public String doC(@ModelAttribute("msg") String msg){
        logger.info("문자열.jsp 파일을 찾아서 실행");
        System.out.println("doC 메시지 : "+msg);
        return "string";
    }

string.jsp 파일

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>string type</title>
</head>
<body>
<h1>
    string 타입으로 실행!!
</h1>
<p>문자열.jsp 파일을 찾아서 실행</p>
<p> @ModelAttribute("msg") 는 주소창에 msg라는 파라미터 값을 가져온다.<br>
    http://localhost:8080/doB?msg=haha 이런 식으로 넘김
</p>
<p>넘어온 것 찍어보자!!: ${msg}</p>
<p>넘기기 위해서는 위 url에 적어야 한다!! </p>

</body>
</html>

스크린샷 2020-01-17 오전 12.43.02.png

데이터를 전달할 때

데이터를 전달할 때는 addAttribute() 메소드를 사용한다.

addAttribute() 메소드

addAttribute("이름", 객체) : 이름을 이용해 객체를 사용
addAttribute(객체) : 이름을 지정하지 않을 경우 자동적으로 객체의 클래스명 앞글자를 소문자로 처리해서 이름으로 사용

userVO.java

package com.study.returnType.VO;

public class userVO {
	private String name;
	private String userId;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	
	@Override
    public String toString(){
        return "MemberVO [User name = " + name + ", User Id = " + userId + "]";
    }

}

controller
아래와 같이 setter를 사용해서 보낼 수도 있고 map과 같이 묶어서 보낼 수도 있다.

 @RequestMapping("/doC")
    public String doD(Model model){
        
        logger.info("setter로 저장해서 String 데이터 전달!!");
        
        userVO user = new userVO();
        user.setName("mary");
        user.setUserId("hahahaha");
        
        model.addAttribute("user", user);
        //model.addAttribute(member);
        
        logger.info("userVO : "+user.toString());
        
        return "data";  
    }
    
    @RequestMapping("/doD")
    public String doE(Model model){
        
        logger.info("map에 담아서 String 데이터 전달!!");
        
        Map<String,String> map = new HashMap<String,String>();
        map.put("name", "friend");
        map.put("userId", "7979");
        
        model.addAttribute("map", map);
    
        return "data";  
    }

스크린샷 2020-01-17 오전 12.47.31.png

스크린샷 2020-01-17 오전 12.47.40.png

void

url.jsp 파일을 보여줌

controller에서 이렇게 실행하면

@RequestMapping("/doA")
    public void doA(){
        logger.info("doA.jsp 찾아 실행!!");
    }

doA.jsp 파일 실행된다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>void type</title>
</head>
<body>
<h1>
    void 타입으로 실행!!
</h1>
<p>url.jsp 파일을 실행함!! 지금 이거는 doA.jsp 파일이다!!</p>
</body>
</html>

스크린샷 2020-01-17 오전 12.42.31.png

Object

RequestToViewNameResolver를 통해 자동생성되는 View 이름이 사용

@ResponseBody

메시지 컨버터를 통해 바로 HTTP 응답의 메시지 본문으로 전환

controller

 @RequestMapping("/doF") 
    @ResponseBody 
    public String doF() { 
    	return "<html><body><h1>doF!! not jsp file!!</h1></body></html>"; 
    }

스크린샷 2020-01-17 오전 1.04.34.png

0개의 댓글