SPRING - GET, POST, @ModelAttribute

이번 포스팅에서는 JSP에서 form태그로

값을 보내고 컨트롤러에서 데이터를 처리하고

다시 화면으로 뿌려주는 것을 해보겠습니다.

그리고 같이 @ModelAttribute 어노테이션을

알아 보겠습니다.


먼저 jsp파일을 만들어서 form태그로 값을

보내줄수 있도록 합니다.

스프링을 공부하시는 분들이라면

이미 JSP는 공부하셨을거라 생각하고

form태그에 대한 자세한 설명은

하지 않겠습니다.


먼저 index.jsp 생성합니다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    String context = request.getContextPath();
    System.out.println(context);
%>    
<form action="<%=context%>/studentView" method="post">
    이름: <input type="text" name="name"><br/>
    나이: <input type="age" name="age"><br/>
    학년: <input type="gradeNum" name="gradeNum"><br/>
    <input type="submit" value="전송">
</form>
</body>
</html>
 
 
cs


12line 에서 sysout은 context에 무슨값이

담겨있는지 확인하기 위해 사용했습니다

getContextPath메소드는 프로젝트의

contextPath값을 반환합니다. 


다음 form태그에서 입력값들을 POST 방식으로

studentView로 액션합니다. 

다음 컨트롤러 보겠습니다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.spring.ex;
 
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        return "home";
    }
    @RequestMapping("/index")
    public String index() {
        return "index";
    }
    @RequestMapping("/studentView")
    public String studentView(@ModelAttribute("studentInfo") StudnetInformation studnetInformation){
    
    return "studentView";
    }
    
    
    
    
    
}
 
cs


38line 에서 @ModelAttribute 어노테이션은

커맨드 객체의 이름을 개발자가 변경 할 수 있습니다.

즉 StudentInformation 객체명을 "studentInfo" 로 변경 한겁니다.

다음 StudentInformation 클래스 생성해줍니다


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
package com.spring.ex;
 
public class StudnetInformation {
    
    private String name;
    private String age;
    private String gradeNum;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getGradeNum() {
        return gradeNum;
    }
    public void setGradeNum(String gradeNum) {
        this.gradeNum = gradeNum;
    }
 
}
 
cs


마지막으로 데이터를 뿌려줄 화면단을 만들어줍니다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    이름 : ${studentInfo.name}<br/>
    나이 : ${studentInfo.age}<br/>
    학년 : ${studentInfo.gradeNum}<br/>
</body>
</html>
cs

이제 테스트를 해봅니다


주소창 URL은 http://localhost:9080/ex/index 로 입력해줘야

정상적으로 테스트 할수 있습니다.



이름 나이 학년 입력하고 전송버튼 누릅니다



전송버튼을 누르면 form 태그에서

입력한 데이터 값들을 확인 할수있습니다

이름은 한글이 깨졌습니다

스프링에서 한글처리 방법은 

다음 포스팅에서 하겠습니다.

댓글

Designed by JB FACTORY