JSP/서블릿 흝어 보기

질의 문자열(Query String)

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

소스코드작성

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( ) 메소드가 작동한다.

 

댓글

댓글 본문
버전 관리
DongHyun Kim
현재 버전
선택 버전
공동공부
graphittie 자세히 보기