※ 폼화면을 작성하고 서블릿으로 폼을 전송하여 질의 문자열을 추출해보자.
소스코드작성
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( ) 메소드가 작동한다.