티스토리 뷰
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">
...
- Total
- Today
- Yesterday
- Java Server Page
- Cookie
- Session
- JSP
- 세션
- FMT
- 스프링
- 리액트
- script element
- html css
- CSS
- 제이쿼리
- Spring
- 내장객체
- CSS 속성
- Network
- react
- a 태그
- Binding
- httpServletRequest
- Redux
- javaserverpage
- nodejs
- 네트워크
- 미들웨어
- el
- 서블릿
- Servlet
- HTML
- 서브넷팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |