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