[Spring] MVC 이해하기3

    전에는 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

    댓글

    Designed by JB FACTORY