[Spring] MVC 이해하기3
- Web/Spring
- 2020. 10. 26.
전에는 jsp로 값을 넘겼다면, 이번 시간에는 jsp로부터 값을 받는 경우에 대해 설명하겠습니다.
예를 들면 회원가입을 하였을 때, 입력 값을 Spring에게 건넸을 때 받는 방식 입니다.
여러가지의 방식이 있으며, 이에 대해서는 상황에 따라 선택해서 사용하시면 되겠습니다.
첫 번째 방법
@RequestMapping("/sendTest")
public String sendTest(Model model, HttpServletRequest request)
{
String id = request.getParameter("id");
String pw = request.getParameter("pw");
model.addAttribute("identify", id);
model.addAttribute("password", pw);
return "list/send02";
}
JSP처럼 HttpServletRequest 방식을 이용하는 방법입니다.
JSP를 배웠다면, 매우 친숙한 방법이며, 만약 Spring에서 사용하게 된다면 굳이 사용하지 않는 방법이기도 합니다.
왜냐하면, 좀 더 코드가 간결해지기 때문입니다.
그러나 만약의 경우를 대비해 이렇게 JSP의 방법 또한 되므로 제일 먼저 적었습니다.
두 번째 방법
@RequestMapping("/send04")
public String send04(@RequestParam("id") String id, @RequestParam("pw") String pw, Model model) {
model.addAttribute("identify", id);
model.addAttribute("password", pw);
return "abc/send04";
}
매게변수에 @RequestParam을 이용해서 받는 방식 입니다.
String id = request.getParameter를 대신해서 매게변수를 통해 값을 받습니다.
코드가 줄어드는 장점은 있지만, 처음에는 친숙하지 않은 방법이라서 약깐 헷갈릴 수도 있는 방법입니다.
1~3개 정도 사용 할 때가 제일 적당한 방법입니다.
세 번째 방법
@RequestMapping("/student/{studentId}")
public String getStudent(@PathVariable String studentId, Model model) {
model.addAttribute("studentId", studentId);
return "student/studentView";
}
맴핑을 통해서 값을 입력 받는 방식입니다.
매개변수에 담은 {레퍼런스 이름}이 곧 매개변수의 래퍼런스 명과 결과값이 됩니다.
두 번째 방식이 친숙해졌다면 세번째 방식 또한 쉽게 다가 올 수 있는 방법입니다.
그러나 아쉬운 점은 POST 방식에서는 사용하기 어렵습니다.
URL에 변수 값을 넘길 수가 없는 구조이므로 매개변수로 결과값을 받기 어렵기 때문 입니다.
네 번째 방법
@RequestMapping("/member/join")
public String MemberJoin(MemberVO member)
{
return "abc/MemberTest";
}
커멘더 클래스 방식입니다.
처음 보았을 때 매우 당황스러운 방식입니다.
그러나 MemberVO의 레퍼런스 이름, JSP의 NAME값이 일치가 된다면 자동으로 MemberVO에 결과값이 담기게 됩니다.
결과값이 넘어오는 것을 확인 할 수가 있습니다.
아래에 간략하게나마 입력했습니다.
Student02.jsp
<body>
<form action="student02View">
이름:<input type="text" name="name"><br />
나이 : <input type="text" name="age"><br />
학년 : <input type="text" name="classNum"><br />
반 : <input type="text" name="gradeNum"> <br />
<input type="submit" value="전송">
</form>
</body>
(Bean)StudentVO.java
package com.kr.bean;
public class StudentVO {
private String name;
private String age;
private String classNum;
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 getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
public String getGradeNum() {
return gradeNum;
}
public void setGradeNum(String gradeNum) {
this.gradeNum = gradeNum;
}
}
(Controller)StudentController.java
//student02 화면 이동
@RequestMapping("student02")
public String student02()
{
return "student/Student02";
}
// student 확인하기
@RequestMapping("student02View")
public String student02View(@ModelAttribute("studentInfo") StudentVO studentVO) {
return "student/Student02View";
}
예시처럼 사용해도 되지만, jsp에서 결과값이 studentInfo 이므로
model.addAttribute를 사용한 대신 커멘드를 이용해서
결과값을 StudentVO를 StudentInfo로 변경하였다.
Student02View.jsp
<body>
이름 : ${studentInfo.name}<br/>
나이 : ${studentInfo.age} <br/>
학년 : ${studentInfo.classNum}<br/>
반 : ${studentInfo.gradeNum}
</body>
입력하기
결과 받기
네 번째 방법은 Spring의 최고의 장점이라고 할 수 있습니다.
회원가입처럼 여러개의 값을 옮겨야 할 때 자동으로 결과를 넣어주고 넘겨주기 때문입니다.
'Web > Spring' 카테고리의 다른 글
[Spring] LifeCycleException, Catalina Exception 해결하기 (0) | 2021.01.14 |
---|---|
[Spring] Interceptor (0) | 2021.01.06 |
[Spring] MVC 패턴 이해하기2 (0) | 2020.10.26 |
[Spring] Spring MVC를 만들어보자 (0) | 2020.10.23 |
[Spring] AOP 사용하기(Java) (0) | 2020.10.22 |