※ 폼화면을 작성하고 서블릿으로 폼을 전송하여 질의 문자열을 추출해보자.
소스코드작성
memberInput.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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <!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
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 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( ) 메소드가 작동한다.