Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

우리마의 웹 개발

[Spring]JSP에서 요청 파라미터를 Controller에서 처리하는 방법(커맨드 객체 사용) 본문

WEB/Spring

[Spring]JSP에서 요청 파라미터를 Controller에서 처리하는 방법(커맨드 객체 사용)

우리마 2020. 2. 5. 17:33

앞선 글 들에서 view단에서 java단으로 데이터를 넘기는 데에 있어서 원초적이 방법들을 소개하였다. 이번엔 마지막으로 진짜 SpringFramework에 걸맞게 데이터를 처리하는 방법을 내 머가리 속에 기억하려고 글로 쓴다.

 

이번에는 쪼~금 다른 형태로 할 건데 일단 로그인 페이지에서 보낸 데이터 중 id와 pw를 

java에서 비교하여서 성공하면 SUCCESS를 띄우는 페이지로 아니면 FAIL을 띄우는 페이지로 이동할 것이다.

지금은 DB를 사용하지 않기때문에 정적인 값과 비교한다.

 

먼저 VO클래스를 만들꺼다

VO(UserVO.java)
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
public class UserVO {
    private String userId;
    private String userPw;
    private String userName;
    private int userAge;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserPw() {
        return userPw;
    }
    public void setUserPw(String userPw) {
        this.userPw = userPw;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
    
}
 
cs

일단 VO라 함은 Value Object인데 jsp에서 input 태그의 name속성 값을 변수명으로 하고 private접급지정자로 정하며 getter, setter를 만들어 준다.

커맨드 객체라 함은 폼 태그의 값을 받아 처리할 수 있는 Class생성, 변수명을 폼 태그의 이름들과 일치하게 생성해주는 것을 말한다.  VO가 바로 그것이다

 

@RequestParam은 jsp에서 java로 데이터가 그대로 넘어오는데 VO를 사용하면

Controller로 넘어오면서 controller가 VO의 setter들을 호출한다. 

따라서 VO class에서 데이터 조작이 가능하며 유지보수가 편하다.

JAVA(StudyController.java)
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
@RequestMapping("/study/join.do")
    public String test(){
        return "/study/join";
    }
    
    @RequestMapping("/study/register.do")
    public String paramTest(UserVO vo, Model model) {
        String result = "";
        try {
            System.out.println("/study/join 요청");
            System.out.println("ID: " + vo.getUserId());
            System.out.println("PW: " + vo.getUserPw());
            System.out.println("Name: " + vo.getUserName());
            System.out.println("Age: " + vo.getUserAge());
            
            model.addAttribute("id", vo.getUserId());
            model.addAttribute("pw", vo.getUserPw());
            model.addAttribute("name", vo.getUserName());
            model.addAttribute("age", vo.getUserAge());
            
            if(vo.getUserId().equals("weMa"&& vo.getUserPw().equals("1")) {
                result = "/study/success";
            }
            else {
                result = "/study/fail";
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return result;
    }
 
cs

1~4 LINE : join.jsp를 그려주는 메서드

7 LINE : 메서드의 파라미터로 UserVO 객체와 Model객체를 받는다

Model 객채는 view로 전달하는 데이터를 담아서 보낼 수 있다. 이는 EL 식으로 사용할 수 있다. 

HttpServletRequest 객체의 setAttribute()와 유사한 역할을 한다.

16 LINE : addAttribute() 메서드를 사용함으로  큰따옴표 안의 이름으로 jsp에서 사용할 수 있다. 담을 값은 VO class에서 getter메서드를 호출한다.

21 LINE : 조건문으로 정적인 id와 pw를 비교하는데 String 끼리 비교할 때 == 말고 equals를 사용해야 한다.

 

JSP(/study/join.jsp , success.jsp , fail.jsp)
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
49
50
51
52
53
54
<!---------------------------join.jsp--------------------------------------------------->
 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 
<h2>요청 파라미터값 테스트!!</h2>
<form action="<c:url value='/study/register.do' />" method="post">
    <fieldset>
        <legend>회원가입 양식</legend>
        <p>
            - ID: <input type="text" name="userId" size="10"><br>
            - PW: <input type="password" name="userPw" size="10"><br>
            - NAME: <input type="text" name="userName" size="10"><br>
            - Age : <input type="number" name="userAge" size="10"><br>
            <input type="submit" value="회원가입">
        </p>
    </fieldset>
</form>
</body>
</html>
<!--------------------------------success.jsp---------------------------------------------->
    <body>
        <h1>SUCCESS!!!</h1>
        <ul>
            <li>ID : ${id}</li>
            <li>PW : ${pw}</li>
            <li>NAME : ${name}</li>
            <li>AGE : ${age}</li>
        </ul>
    </body>
<!--------------------------------fail.jsp---------------------------------------------->
<body>
    <h1>FAIL....T.T</h1>
        <ul>
            <li>ID : ${id}</li>
            <li>PW : ${pw}</li>
            <li>NAME : ${name}</li>
            <li>AGE : ${age}</li>
        </ul>
    <p style="color:red;">
    아이디나 비밀번호 둘중에 하나가 틀렸어요..
    </p>
    <a href="<c:url value='/study/join.do'/>">돌아가기</a>
</body>
 
 
cs

Model 객체에 담아서 view로 보낸 값을 El표현식을 사용해서 쓰고 있다.

project -> clean 하고 tomcat을 실행시켜보자.

정상

물론 콘솔에도 잘 찍힌다.

앞으로도 커맨드 객체를 사용해서 java단에서 데이터를 조작할 일이 허다할 거다.

다음에는 ModelAndView 에대해서 다뤄보겠다.

끗~

 

Comments