[Spring] get/post방식으로 데이터 전송하기

MVC2 에서는 컨트롤러에서 get,post 어느 방식으로 데이터가 들어와도 doProcess라는 메소드를 생성하여 둘다 한번에 처리하는 메소드를 만들어서 처리했습니다. 스프링 컨트롤러에서는 같은 메소드를 두개만들고 오버로딩을 하여 사용하면 됩니다.

 

studentInput.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="./student" method="post">
studentId: <input type="text" name="studentId"><input type="submit" value="post">
</form>
<form action="./student" method="get">
studentId: <input type="text" name="studentId"><input type="submit" value="get">
</form>
</body>
</html>

studentInput.jsp

위 화면처럼 post, get 버튼을 만들어서 입력한 값을 원하는 방식으로 보내보겠습니다.

 

post

get

 

get,post를 처리해주는 컨트롤러를 보겠습니다.

 

어떤 방식으로 데이터를 받아도 처리를 하기위해서 같은 메소드를 오버로딩해서  두개를 만들어주어야 합니다.

오버로딩하기 위해서는 매개변수의 갯수나 타입이 다르면 오버로딩을 할 수 있는 조건을 성립하게 됩니다.
그래서 하나는 ModelAndView 방식으로 처리하고, 하나는 Model방식으로 처리를 해주었습니다.

그러면 어떤방식으로와도 컨트롤러에서 알아서 처리를 해주게 됩니다.

 

Controller

package com.co.mvc05_02;


import javax.servlet.http.HttpServletRequest;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HomeController {

	@RequestMapping("/studentInput")
	public String StudentInput() {
		return "student/studentInput";
	}
	
	//studentInput에서 get,post 둘다 동작할 수 있도록 오버로딩 ( model, modelandview )
	@RequestMapping(value = "/student", method = RequestMethod.POST)
	public ModelAndView Student(ModelAndView mav, HttpServletRequest request) {
		mav.addObject("studentId",request.getParameter("studentId"));
		mav.setViewName("student/studentView");
		return mav;
	}
	@RequestMapping(value = "/student", method = RequestMethod.GET)
	public String Student(Model model, HttpServletRequest request) {
		String id = request.getParameter("studentId");
		model.addAttribute("studentId",id);
		
		return "student/studentView";
	}

}

댓글

Designed by JB FACTORY