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에서 처리하는 방법(HttpServletRequest 객체) 본문

WEB/Spring

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

우리마 2020. 2. 4. 16:51

Spring환경에서 회원가입 양식등 JSP에서 form태그내의 input태그로 데이터를 받아들여서 Controller에서 DB로 보낸다던지 아무튼 java단에서 처리해야 하는경우가 대다수이다.

이 글에서 jsp에서 요청한 데이터를 Controller에서 파라미터로 받아들이는 방법들에 대해서 적어보려고 한다. 먼저 첫번째로 가장 전통적인 방식을 소개한다.

전통적인 방식의 처리 HttpServletRequest 객체의 사용 -> GET방식

- JSP(study/join.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
<%@ 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/join.do' />" method="get">
    <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>
            <input type="submit" value="회원가입">
        </p>
    </fieldset>
    
</form>
 
</body>
</html>
 
 
 
 
cs

 

14Line : join.do를 호출하는데 get방식으로 데이터를 전송한다. 이는 submit을 했을때 url에

(생략)/study/join.do?userId=OOO&userPw=OOO&userName=OOO

이렇게 ?(물음표)뒤쪽으로 key,value로 url에 적혀서 Controller로 전송되는것이다.

 

- 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
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
public class StudyController {
    //요청 파라미터 받아보기
    @RequestMapping(value="/study/join.do")
        public String paramTest(HttpServletRequest request) {
        try {
            System.out.println("/study/join 요청: GET");
            String name = request.getParameter("userName");
            String id = request.getParameter("userId");
            String pw = request.getParameter("userPw");
            
            System.out.println("아이디:"+ id);
            System.out.println("이름: " + name);
            System.out.println("비밀번호: " + pw);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
            
            return "/study/join";
        }
}
 
 
cs

10Line : @RequestMapping 어노테이션에 join.do를 받아들인다

11Line : 메소드의 파라미터로 HttpServletRequest객체를 받는데 이 클래스가 get방식으로 넘어오는 url에 적힌 데이터를 읽어오는 객체이다

14~16Line : request는 HttpServletRequest클래스의 객체이고 getParameter 메소드가 key값을 가지고 value를 가져온다 여기서 key값은 input 태그의 name속성의 값이다.( 쌍따움표 안의 값)

 

이렇게 작성하고 서버를 실행시켜서 값을 넣어본다

회원가입 버튼을 클릭하면

이렇게 URL의 join.do뒤에 ?를 구분자로 key 와 value 가 적혀있다

그리고 이클립스 콘솔을 확인해보면

sysout 으로 찍은 값이 잘 나오는것을 확인해볼수있다.

 

하지만 이 방식의 단점으로는 파라미터로 넘어오는 값의 데이터타입이 무조건 String이라는 것이다. 따라서 java에서 직접 원하는 데이터타입으로 형변환을 해주어야하는 번거로움이 있다...

 

 

다음 글에서 @RequestParam 이라는 아노테이션을 사용해서 java코드가 조금더 간결해지는 방법을 소개하겠다..!

Comments