반응형
Notice
Recent Posts
Recent Comments
Link
불로구
(Servlet) 서블릿 여러 개의 값 전송 본문
반응형
여기서는 CheckBox를 사용해서 여러 개의 값을 보내겠습니다.
체크박스의 name 속성 값이 모두 동일하므로 서블릿으로 전송할 때 배열로 전송이 된다.
-HTML-
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="frmLogin" method="get" action="login">
아이디 : <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="Go">고언어
<br>
<input type="submit" value="로그인">
</form>
</body>
</html>
- 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;
@WebServlet("/login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
System.out.println("init 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
System.out.println("user_id : " + user_id);
System.out.println("user_pw : " + user_pw);
String[] subject = request.getParameterValues("subject");
for(String str : subject) {
System.out.println("선택한 과목 : " + str);
}
}
@Override
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
getParameterValues()를 이용해 input, html에서 체크박스의 name인 subject로 전송된 값을 받아와
문자열 배열로 저장
이렇게 전송을 하면
콘솔에 이렇게 나타난다!
그렇다면 전송될 데이터가 많아 name의 값을 기억하기 힘을 때는 어떻게 할까?
- getParameterNames() 메서드를 사용하자!
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 LoginNoNames
*/
@WebServlet("/login2")
public class LoginNoNames extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
System.out.println("init 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
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);
}
}
}
@Override
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
- 전송받은 name 속성들만 Enumeration 타입으로 받아 온다.
- 각 name을 하나씩 가져와 대응해서 전송되어 온 값을 출력한다.
반응형
'프로그래밍 > WEB' 카테고리의 다른 글
(Servlet) 서블릿 DB 연동하기 (1) (0) | 2021.03.15 |
---|---|
(Servlet) 서블릿 GET, POST 동시 요청 (0) | 2021.03.15 |
(Servlet) 서블릿 동작 과정, 애너테이션 (0) | 2021.03.13 |
[JSP] - (Servlet) 로그인 (0) | 2021.03.11 |
[JSP 웹 프로그래밍] 서블릿(Servlet) 이란? (0) | 2021.03.10 |
Comments