본문 바로가기

기존카테고리/Spring_문법

Parameter값 받기 - 실전(Command객체)

package com.test.customTag;


import javax.servlet.http.HttpServletRequest;


import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;


@Controller

@RequestMapping("users")

public class userController {

@RequestMapping("input")

public String userInput(){

return "/users/input";

}

@RequestMapping("inputUp")

public String userInputUp(@RequestParam("userId") String userId, 

@RequestParam("userName") String userName,

@RequestParam("userTel") String userTel,

@RequestParam("userEmail") String userEmail,

Model model){

Users users = new Users();

users.setUserId(userId);

users.setUserName(userName);

users.setUserTel(userTel);

users.setUserEmail(userEmail);

model.addAttribute("usersInfo", users);

return "/users/inputUp";

}

}



@RequestParam 어노테이션으로 값을 받아서 Model addAttribute로 파라미터 값을 세팅하지 않고
Users.class (DTO) 객체로 값을 세팅하고 있다. 그 후 객체를 Model addAttribute로 세팅해서 파라미터 값 몽땅 다 객체로 넘겼다.




Users.java

package com.test.customTag;

public class Users {
private String userId;
private String userName;
private String userTel;
private String userEmail;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserTel() {
return userTel;
}
public void setUserTel(String userTel) {
this.userTel = userTel;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
}


<%@ 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>
<h2>회원정보</h2>
<form method="post" action="inputUp">
아이디: <input type="text" name="userId" /> <br />
이름: <input type="text" name="userName" /> <br>
전화번호: <input type="text" name="userTel" /> <br>
이메일: <input type="text" name="userEmail" /> <br>
<input type="submit" value="전송" />
</form>

</body>
</html>


<%@ 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>
<h2>회원정보</h2>
아이디: ${usersInfo.userId}<br>
이름: ${usersInfo.userName}<br>
전화: ${usersInfo.userTel}<br>
이메일: ${usersInfo.userEmail}<br>
</body>
</html>

inputUp.jsp 페이지에서는 Controller 에서 model로 세팅된
model.addAttribute("usersInfo", users);
userInfo로 값을 표시하고 있다. 

아이디: ${usersInfo.userId}<br>


이 방식 말고 Command 방식으로 아주 간단히 파라미터도 받고 값도 셋팅하는 방식이 있다.
아래는 Command 방식:

package com.test.customTag;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("users")
public class userController {
@RequestMapping("input")
public String userInput(){
return "/users/input";
}
@RequestMapping("inputUp")
public String userInputUp(Users users){
return "/users/inputUp";
}
}

Users(Users.java) 객체만 인자로 전달한다.
그럼면 Spring 컨테이너가 알아서 값을 셋팅한다.

그 후 ${users.userId} 표시하는 값만 Users 객체로 표시한다.
아주 간단하다.



<%@ 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>
<h2>회원정보(Command)</h2>
아이디: ${users.userId}<br>
이름: ${users.userName}<br>
전화: ${users.userTel}<br>
이메일: ${users.userEmail}<br>
</body>
</html> 

나머지 페이지는 동일하다.
꼭 기억하자.