티스토리 뷰

반응형

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

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

 

요청 처리

- 로그인 창에서 ID 비밀번호를 입력 받아 HttpServletRequest 처리한다.

 

- 로그인 페이지는 프로젝트 디렉터리 아래의 WebContent 디렉터리 아래에 생성한다.

* WebContent/login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
	<form name="frmLogin" method="get" action="login" encType="utf-8">
		<label>아이디</label>
		<input type="text" name="user_id" />
		<br />
		<label>비밀번호</label>
		<input type="password" name="user_pw" />
		<br />
		<button type="submit">로그인</button>
    </form>
</body>
</html>

 

- 다음으로 입력한 정보를 받을 서블릿을 생성한다.

 

* src/servlet/LoginServlet.java

package servlet;

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

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String userId = request.getParameter("user_id");
		String userPw = request.getParameter("user_pw");
		System.out.println("아이디 : " + userId);
		System.out.println("비밀번호 : " + userPw);
	}

}

 

- 클래스 작성 후 톰캣을 실행시켜 브라우저에 주소창에 localhost:[port]/[project_name]/login.html 을 입력하여 접속한다.

작성한 로그인 페이지

- 아이디와 비밀번호를 입력하고 [로그인] 버튼을 누른 후 IDE의 콘솔을 확인해 보면...

콘솔 로그

 

 

다중 값 요청 처리

- 하나의 name으로 여러 값을 서블릿으로 요청한다.

- 로그인 수강 과목을 입력하되 번에 여러 과목을 입력해서 등록한다.

 

* WebContent/multipleInput.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러 input 타입</title>
</head>
<body>
	<form name="frmInput" method="get" action="input">
	아이디 : <input type="text" name="user_id"><br>
	비밀번호 : <input type="password" name="user_pw"><br>
	<input type="checkbox" name="subject" value="java" checked>자바
	<input type="checkbox" name="subject" value="C언어" >C언어
	<input type="checkbox" name="subject" value="JSP" >JSP
	<input type="checkbox" name="subject" value="안드로이드" >안드로이드
	<br><br>
	<input type="submit" value="전송">
	<input type="reset" value="초기화">
</form>
</body>
</html>

 

* src/servlet/InputServlet.java

package servlet;

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

/**
 * Servlet implementation class InputServlet
 */
@WebServlet("/input")
public class InputServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String userId = request.getParameter("user_id");
		String userPw = request.getParameter("user_pw");
		System.out.println("아이디 : " + userId);
		System.out.println("비밀번호 : " + userPw);
		
		// 하나의 이름으로 여러 값을 전송하는 경우  getParameterValues()를 이용해 배열 형태로 반환
		String[] subject = request.getParameterValues("subject");
		for(String str: subject) {
			System.out.println("선택한 과목 : " + str);
		}
	}
}

 

- 작성 후 톰캣을 재시작하여 브라우저에서 localhost:[port]/[project_name]/multipleInput.html 에 접속한다.

여러 인풋이 담긴 페이지

- 위 페이지에서 아이디, 비밀번호 및 언어를 체크하여 [전송]버튼을 누르면...

 

아이디, 비밀번호 및 선택 과목이 출력된다.

- 위 그림과 같이 IDE 콘솔에 입력한 값과 선택한 값이 출력된다.

 

getParameterNames()

 

- getParameterNames() 메서드를 이용해 전송된 폼에서 사용되는 input 태그의 name을 알 수 있다.

 

* src/servlet/InputServlet2.java

package servlet;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class InputServlet
 */
@WebServlet("/input2")
public class InputServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String userId = request.getParameter("user_id");
		String userPw = request.getParameter("user_pw");
		Enumeration enu = request.getParameterNames();
		
		while(enu.hasMoreElements()) {
			String name = (String)enu.nextElement();
			String[] values = request.getParameterValues(name);
			for(String value : values) {
				System.out.println("name = " + name + ", value = " + value);
			}
		}
	}
}

 

- multipleInput.html 파일에서 form 태그 안의 action에 대한 값을 "input2"로 변경하고 자바 코드를 수정했으므로 톰캣을 재시작한다. 그리고 폼을 다시 전송해 본다.

...
<form name="frmInput" method="get" action="input2">
...

 

input 태그의 name 값과 value를 출력

 

반응형

'Servlet' 카테고리의 다른 글

GET/POST 전송 방식  (0) 2024.08.11
서블릿 - 응답  (0) 2024.08.11
서블릿의 기능  (0) 2024.08.11
서블릿 매핑  (0) 2024.08.11
서블릿 생성  (0) 2024.08.11
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함