본문 바로가기
개발자 기초 & 실무

화면에서 백단 쿼리로 파라미터 넘기기 — JSP & Servlet 실습

by yamoojin83 2025. 11. 12.

화면에서 백단 쿼리로 파라미터 넘기기 — JSP & Servlet 실습

웹 개발의 핵심은 ‘화면과 서버의 소통’입니다.

사용자가 입력한 데이터를 JSP 화면에서 서버(백엔드)로 안전하게 전달하고, 그 값을 DB 쿼리로 처리하는 과정이 바로 웹 애플리케이션의 본질이죠.

이번 글에서는 초보 개발자도 쉽게 이해할 수 있도록 Form 태그로 파라미터를 전달하고, Servlet에서 받는 전체 흐름을 예시와 함께 단계별로 정리했습니다.

 

jsp form parameter servlet 연결 흐름

1. JSP에서 데이터 입력하기 — form 태그의 기본

사용자가 화면에서 데이터를 입력하면, 그 값은 <form> 태그를 통해 서버로 전달됩니다.

기본 구조는 다음과 같습니다.


<form action="register.do" method="post">
    이름: <input type="text" name="userName"><br>
    이메일: <input type="email" name="userEmail"><br>
    <input type="submit" value="등록">
</form>

💡 설명:
- action: 데이터를 받을 서버 주소(서블릿 URL)
- method: 전달 방식 (GET or POST)
- name 속성: 서버에서 값을 식별할 키

이 폼에서 사용자가 이름과 이메일을 입력하고 ‘등록’ 버튼을 누르면, 데이터는 HTTP 요청 형태로 서버에 전송됩니다.

2. Servlet에서 파라미터 받기

서버에서는 JSP에서 넘어온 값을 HttpServletRequest 객체를 통해 받습니다.

즉, JSP의 name 속성과 동일한 키를 사용해 값을 꺼낼 수 있습니다.


@WebServlet("/register.do")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        String userName = request.getParameter("userName");
        String userEmail = request.getParameter("userEmail");

        System.out.println("이름: " + userName);
        System.out.println("이메일: " + userEmail);
    }
}

💡 중요 포인트:
1) request.getParameter()는 JSP의 name 속성 이름과 동일해야 합니다.

2) 한글 데이터는 request.setCharacterEncoding("UTF-8")으로 인코딩 설정을 해줘야 깨지지 않습니다.

3. JSP → Servlet → DB 쿼리 연동 흐름

입력값을 받은 후, 백엔드에서는 DAO(Data Access Object)를 통해 DB와 연결합니다.

예시로 회원 등록 로직을 간단히 살펴볼까요?


// DAO.java
public void insertUser(String name, String email) {
    String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
    try (Connection conn = getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setString(1, name);
        pstmt.setString(2, email);
        pstmt.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

💡 흐름 요약:
1) JSP에서 form 입력 → 2) Servlet이 request로 파라미터 받음 → 3) DAO에서 쿼리 실행

이렇게 데이터가 **화면 → 서버 → DB** 순서로 이동하게 됩니다.

4. GET과 POST의 차이

GET 방식은 주소(URL)에 파라미터가 노출됩니다.
예: register.do?userName=홍길동&userEmail=test@test.com

반면 POST는 요청 본문(Body)에 데이터가 담기므로 보안성이 더 높습니다.

로그인, 회원가입, 결제 등 중요한 데이터는 반드시 POST를 사용해야 합니다.

5. 디버깅 팁 — 콘솔 확인하기

초보자들이 자주 겪는 실수 중 하나는 폼의 name 속성과 getParameter() 키가 다를 때입니다.

이럴 땐 서버 콘솔에 출력 로그를 찍어보세요.


System.out.println("전달된 이름: " + request.getParameter("userName"));

값이 null로 찍힌다면, JSP의 name이 일치하지 않은 것입니다.

또한 서버 로그가 아예 찍히지 않는다면, action 경로나 servlet 매핑 URL을 다시 확인하세요.

 

jsp servlet 데이터 연동 완성 화면

 

마무리

JSP와 Servlet의 관계는 마치 대화하는 두 사람과 같습니다.

화면(JSP)은 사용자의 입력을 전달하고, 서버(Servlet)는 그 정보를 받아 처리한 뒤 결과를 다시 화면에 돌려줍니다.

이 흐름을 정확히 이해하면 MVC 구조, Spring Framework, REST API 설계로 자연스럽게 확장됩니다.

지금 배운 ‘파라미터 전달의 원리’가 바로 그 출발점입니다.