본문 바로가기

《 IT 》/JSP + Servlet

[Servlet] 서블릿 기초(3)

[ Servlet ] 서블릿 기초(3)

(수정: -)


⚠️ 개요

해당 글은 작성자가 공부한 내용을 정리한 글입니다.

더보기

1. [servlet] 서블릿 이란? (글보기)

2. [servlet] 서블릿 기초

  • (1)세 가지 기본 기능
  • (2)<form> 태그 이용해 서블릿에 요청
  • (3)서블릿에서 클라이언트의 요청을 얻는 방법
  • (4)서블릿의 응답 처리 방법
  • (5)웹 브라우저에서 서블릿으로 데이터 전송하기
  • (6)GET 방식과 POST 방식 요청 동시에 처리하기
  • (7)자바스크립트로 서블릿에 요청하기

 

 

📕 서블릿 기초

톰캣과 같은 WAS가 처음 나왔을 때 웹 브라우저 요청을 스레드 방식으로 처리하는 기술이 바로 서블릿이었습니다.

서블릿 기초 글은 웹 프로그래밍의 뼈대를 배우는 내용입니다. 해당 글들을 모두 이해하면 전체 웹 프로그램이 어떤 식으로 동작하는지 쉽게 이해할 수 있습니다.

 

 

✅ 서블릿에서 클라이언트의 요청을 얻는 방법

HttpServletRequest 클래스에서 <form> 태그로 전송된 데이터를 받아 오는데 사용하는 메서드로는 다음과 같습니다.

메서드 기능
String getParameter(String name) name의 값을 알고 있을 때 그리고 name에 대한 전송된 값을 받아오는데 사용합니다.
String[] getParameter(String name) 같은 name에 대해 여러 개의 값을 얻을 떄 사용합니다.
Enumeration getParameterNames() name 값을 모를 때 사용합니다.

이 중에서 가장 많이 사용하는 것이 getParameter() 메서드입니다. 만약 같은 name으로 여러 개의 값이 전송되었을 떄는 배열 형태로 값을 반환하는 getParameterValues() 메서드를 사용합니다.

 

 

📖 HttpServletRequest로 요청 처리 예제

<form> 태그로 전송된 정보를 서블릿에서 받아 와서 출력하는 과정의 예제입니다.

로그인창에서 ID와 비밀번호를 입력 받아 HttpServletRequest로 처리하는 간단한 예제입니다.

 

다음은 login.html 파일에 작성된 코드입니다. 로그인창에서 ID와 PW를 입력 받을 후 서블릿으로 전송하는 코드입니다.

/* 최신 버전에서는 WebContent 파일 위치가 아래와 같이 변경되었습니다. */
/* 프로젝트/src/main/webapp/login.html */

<!DOCTYEP>
<html>
<head>
	<meta charset="UTF-8">
	<title>로그인창</title>
</head>
<body>
    <form name="formLogin" method="get" action="login" encType="UTF-8">
    	ID : <input type="text" name="user_id"><br>
        PW : <input type="text" name="user_pw"><br>
        <input type="submit" value="로그인">
        <input type="reset" value="다시입력">
    </form>
</dody>
</html>

<form> 태그에서 action="login"의 매핑된 login이름의 서블릿으로 전송합니다.

텍스트 박스에 입력된 ID와 PW를 user_id, user_pw로 값을 전송합니다.

 

매핑된 이름은 무엇이고, 값은 어디로 전송되는지 다음 코드를 보며 알아보겠습니다.

/* 프로젝트/src/sec1/ex1/LoginServlet.java */

package sec01.ex01;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/login")
public class LoginServlet extends HttpServlet {

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init 메서드 호출");
	}

	public void destroy() {
		// TODO Auto-generated method stub
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    request.setCharacterEncoding("utf-8"); //전송된 데이터를 UTF-8로 인코딩합니다.
        
            //getParameter()를 이용해 <input>태그의 name 속성 값으로 전송된 value을 받아 옵니다.
            String user_id = request.getParameter("user_id");
            String user_pw = request.getParameter("user_pw");
        
            System.out.println("ID:" + user_id);
            System.out.println("PW:" + user_pw);
	}
}

좀 더 자세한 경로는 아래 사진을 확인해주세요.

위와 같은 경로에서 login.html LoginServlet.java를 작성한 후 톰캣으로 실행합니다.

위와 같은 경로로 들어가면 ID와 PW를 입력할 수 있는 페이지가 나옵니다.

ID와 PW를 입력하면 GADS 1234라는 값이 LoginServlet.java에 매핑된 이름과 동일한 곳으로 전달되며 HttpServletRequest클래스의 getParameter() 메서드로 전송된 ID와 PW를 받아옵니다.

 

login.html
LoginServlet.java

 

'《 IT 》 > JSP + Servlet' 카테고리의 다른 글

[JSP] doGet(), doPost() 정리  (2) 2023.11.28
[Servlet] 서블릿이란?  (1) 2023.11.27
[Servlet] 서블릿 기초(2)  (2) 2023.11.26
[Servlet] 서블릿 기초(1)  (58) 2023.11.25