Programming/JSP
L03 서블릿 메소드(2/2)
juyinjang25
2016. 10. 25. 17:46
**배운 것**
1) 회원가입 양식 제작: radio, checkbox 활용
2) 정보 전달 위해선 서블릿 주소(./signup) 필요
3) 여러 정보는 배열로 출력
String[] jobs = request.getParameterValues("job");
for (int i = 0; i < jobs.length; i++) {
if (i == (jobs.length - 1)) {
out.print(jobs[i]);
4) 초기 파라미터 지정(여러 서블릿에서 공유되는)
ㄱ. Servlet 클래스 만들고 @WebInitParam 붙임
ex. @WebServlet(urlPatterns={"/Servlet"},
initParams={@WebInitParam(name="id", value="walker1991"), @WebInitParam(다른 name, value) ......
ㄴ. ServletConfig의 메소드 이용해 불러오기
ex.
String id = getInitParameter("id");
String pw = getInitParameter("pwd");
**다른 방식(web.xml 이용)
<L02SignupForm.jsp: 회원가입 양식>
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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원가입 form</title>
</head>
<body>
<h1>L02SignupServlet(/signup)에 회원가입 양식을 제출하자</h1>
<form action="./signup" method="post">
<p>
<label>아이디:</label>
<input type="text" name="id" value="jsp">
</p>
<p>
<label>비밀번호:</label>
<input type="text" name="pw" value="admin1234">
</p>
<p>
<label>성별:</label>
<input type="radio" name="gender" value="0" checked>남자
<input type="radio" name="gender" value="1">여자
<!--type="radio"는 name 속성값이 같은 것은 하나만 선택 가능-->
</p>
<p>
<label>직업:</label>
<input type="checkbox" name="job" value="학생">학생
<input type="checkbox" name="job" value="공무원">공무원
<input type="checkbox" name="job" value="군인">군인
<input type="checkbox" name="job" value="강사" checked>강사
<input type="checkbox" name="job" value="서비스업">서비스업
<input type="checkbox" name="job" value="프로그래머" checked>프로그래머
</p>
<button type="submit">제출</button>
</form>
</body>
</html>
|
cs |
<제출하면 L02SignForm 서블릿에 parameter가 도착>
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 |
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/signup")
public class L02SignupForm extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//post로 통신할 때 파라미터가 header정보에 담기면서 charset이 바뀐다.
//그래서 request 객체에 characterEncoding을 바꿔야 한다.
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
// parameter는 문자열로만 반환
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String gender = request.getParameter("gender");
String[] jobs = request.getParameterValues("job");
PrintWriter out = response.getWriter();
out.print("<html><body>");
out.print("<h1>당신이 입력한 정보는</h1><hr>");
out.print("<h3>아이디:" + id + "</h3>");
out.print("<h3>비밀번호:" + pw + "</h3>");
out.print("<h3>성별:" + gender + "</h3>");
out.print("<h3>직업:" + "</h3>");
//성별 출력
switch (gender) {
case "0":
gender = "남자";
break;
case "1":
gender = "여자";
break;
}
//jobs[] 출력
if (jobs == null) {
out.print("<h3>선택한 항목이 없습니다.</h3>");
} else {
out.print("<h3>");
for (int i = 0; i < jobs.length; i++) {
if (i == (jobs.length - 1)) {
out.print(jobs[i]);
} else {
out.print(jobs[i] + ", ");
}
}
}
out.print("</h3>");
out.print("</body></html>");
}
}
|
cs |