본문 바로가기

JSP, Servlet/JSP, Servlet 기초

[JSP/Servlet] 체크박스(check box)

체크박스와 getParameterValues()
 사용자가 여러 개의 항목을 선택할 수 있도록 하는 입력 양식

 HTML에서 여러 개의 항목을 선택 후, 전송하면 퀴리 스트링에 동일한 이름으로 여러 개의 값들이 전송됨

 

체크박스와 getParameterValues() (계속)
 체크박스에서 전송된 여러 개의 값은 서블릿에서 getParameterValues()를 사용하여 읽는다.
 서블릿에서는 지정한 이름을 가진 모든 파라미터의 값을 배열 형태로 가져온다.

 

<JSP 파일>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>악세사리</h3>
	관심항목을 선택하세요.
	<hr>
	<form method="get" action="CheckboxServlet">
		<input type="checkbox" name="item" value="신발">신발
		<input type="checkbox" name="item" value="가방">가방
		<input type="checkbox" name="item" value="벨트">벨트
		<input type="checkbox" name="item" value="모자">모자
		<input type="checkbox" name="item" value="시계">시계
		<input type="checkbox" name="item" value="주얼리">주얼리
		<br><br>
		<input type="submit" value="확인">
	</form>
</body>
</html>

 

<Servlet 파일>

package unit05;

import java.io.IOException;
import java.io.PrintWriter;

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 CheckboxServlet
 */
@WebServlet("/CheckboxServlet")
public class CheckboxServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CheckboxServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		// 입력한 데이터 수신
		// 여러개의 값을 수신할 때 getParameterValues()를 이용
		String items[] = request.getParameterValues("item");
		
		PrintWriter out = response.getWriter();
		
		out.println("<html><head></head><body>");
		if(items == null) {
			out.println("선택한 항목이 없습니다.");
		} else {
			out.println("당신이 선택한 항목입니다.<br>");
			for(String item: items) {
				out.println("[" + item + "] ");
			}
		}
		out.println("<br><a href='javascript.history.go(-1)'>다시</a>");
		out.println("</body></html>");
		out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

 

유효성 검사를 통하여 선택되지 않았을 경우에는 선택하지 않았다는 페이지를 보여주고

여러개가 선택되었을 경우는 배열형태로 저장해 각각을 출력한다.

728x90
반응형