JSP/서블릿 흝어 보기

질의 문자열(Query String)

※ 폼화면을 작성하고 서블릿으로 폼을 전송하여 질의 문자열을 추출해보자.

소스코드작성

memberInput.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>회원 가입하기</h3>
<form method="get" action="memberQueryTest">
    <p>아이디</p>
	<input type="text" name="userId" placeholder="이름을 입력해 주세요">

	<p>패스워드</p>
	<input type="password" name="passwd" placeholder="패스워드를 입력해 주세요">

	<p>이메일</p>
	<input type="text" name="email" placeholder="이메일을 입력해 주세요">

	
	<p>이메일 수신여부</p>
	<input type="radio" name="emailAgree" value="yes">예
	<input type="radio" name="emailAgree" value="no" checked>아니오
		
	<p>관심사항</p>
	<input type="checkbox" name="interest" value="IT">IT/인터넷
	<input type="checkbox" name="interest" value="movie">영화
	<input type="checkbox" name="interest" value="music">음악
	<input type="checkbox" name="interest" value="book">책
	<input type="checkbox" name="interest" value="food">음식
	
	<p>핸드폰</p>	
	<select name="hp_1">
        <option value="010">010</option>
        <option value="011">011</option>
        <option value="016">016</option>
        <option value="017">017</option>
     </select>
     <input type="text" name="hp_2" placeholder="핸드폰 번호를 입력해주세요">
	
	<p>자기소개</p>
	<textarea name="introduce" placeholder="자기소개를 입력해주세요" cols="30" rows="4"></textarea>
	<br/>
	
	<input type="submit" value="전송">
	
</form>
</body>
</html>

MemberQueryTestServlet.java

package job.study.web;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.print("<html><head><title>Query 문자열 테스트</title></head>");
		out.print("<body>");
		out.print("<h1>GET 방식으로 요청되었습니다</h1>");

		//getParameter는 중복되지 않고 유일하게 하나만 넘어올 떄 사용된다.
		//getParameter의 반환값은 String이다. 
		String userId = request.getParameter("userId");
		String passwd = request.getParameter("passwd");
		String email = request.getParameter("email");
		String hp_1 = request.getParameter("hp_1");
		String hp_2 = request.getParameter("hp_2");
		String emailAgree = request.getParameter("emailAgree");
		//getParameterValues는 체크박스처럼 다중 선택되는 입력 양식의 값을 추출할 떄 사용된다.
		String[] interest = request.getParameterValues("interest");
		String introduce = request.getParameter("introduce");

		out.println("<h3>회원아이디 : "+userId+"</h3>");
		out.println("<h3>패스워드 : "+passwd+"</h3>");
		out.println("<h3>이메일 : "+email+"</h3>");
		out.println("<h3>핸드폰 : "+hp_1+"-"+hp_2+"</h3>");		
		out.println("<h3>이메일수신여부 : "+emailAgree+"</h3>");
		out.println("<h3>관심사항: </h3>");
						
		for(int i=0; i< interest.length;i++)
		{
			if(i+1 == interest.length) {
				out.println(interest[i]);
			}else {
				out.println(interest[i]+",");
			}
		}
		out.println("<h3>자기소개 : "+introduce+"</h3>");

		out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.print("<html><head><title>Query 문자열 테스트</title></head>");
		out.print("<body>");
		out.print("<h1>POST 방식으로 요청되었습니다</h1>");
		
		//getParameter는 중복되지 않고 유일하게 하나만 넘어올 떄 사용된다.
		//getParameter의 반환값은 String이다. 
		String userId = request.getParameter("userId");
		String passwd = request.getParameter("passwd");
		String email = request.getParameter("email");
		String hp_1 = request.getParameter("hp_1");
		String hp_2 = request.getParameter("hp_2");
		String emailAgree = request.getParameter("emailAgree");
		//getParameterValues는 체크박스처럼 다중 선택되는 입력 양식의 값을 추출할 떄 사용된다.
		String[] interest = request.getParameterValues("interest");
		String introduce = request.getParameter("introduce");

		out.println("<h3>회원아이디 : "+userId+"</h3>");
		out.println("<h3>패스워드 : "+passwd+"</h3>");
		out.println("<h3>이메일 : "+email+"</h3>");
		out.println("<h3>핸드폰 : "+hp_1+"-"+hp_2+"</h3>");		
		out.println("<h3>이메일수신여부 : "+emailAgree+"</h3>");
		out.println("<h3>관심사항: </h3>");
						
		for(int i=0; i< interest.length;i++)
		{
			if(i+1 == interest.length) {
				out.println(interest[i]);
			}else {
				out.println(interest[i]+",");
			}
		}
		out.println("<h3>자기소개 : "+introduce+"</h3>");

		out.close();
	}
}

실행결과

이력서 작성 폼

위에서 처럼 폼 양식에 정보를 입력해주고 난 뒤 전송을 누르면 form 태그에 action에 정의한 경로의 서블릿으로 폼 데이터를 전송합니다. 위와 같이 정보를 입력하면 다음 처럼 doGet메소드가 작동하는 것을 볼 수 있다.

만약 memberInput.html에서 폼 태그의 method 값을 Post로 변경하여 폼을 전송하면 다음처럼 doPost( ) 메소드가 작동한다.

 

댓글

댓글 본문