본문 바로가기

JSP/기본다지기

JSP 3일차 필기 (간단한 회원가입 양식)

Post방식을 이용하여 회원가입 form 제출하기.


WebContent에 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
41
42
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>会員 ID:</label>
            <input type="text" name="id" value="jsp">
        </p>
        <p>
            <label>パスワード:</label>
            <input type="password" name="pass" 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="学生" checked>学生
            <input type="checkbox" name="job" value="公務員">公務員
            <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>プログラマー
            <!-- 
            checkbox는 중복선택 가능 파라미터 배열로 넘어간다.
            getParameterValues로 받는다. 
            -->
        </p>
        <button type="submit">提出</button>
    </form>
</body>
</html>
cs


L03ServletMethod 프로젝트의 src/com.jsp.method에


L02SignupServlet 서블릿을 생성.


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
package com.jsp.method;
 
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;
 
@WebServlet("/signup")
public class L02SignupServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        //post로 통신할 때 파라미터가 header정보에 담기면서 charset이 바뀐다.
        //그래서 request 객체에 characterEncoding을 바꿔야한다.
        response.setContentType("text/html; charset=UTF-8");
        String[] jobs = request.getParameterValues("job");
        String id = request.getParameter("id");
        String pass = request.getParameter("pass");
        String gender = request.getParameter("gender");
        if(gender != null){
            int int_gender = Integer.parseInt(gender);
            if(int_gender==0){
                gender = "男子";
            }else{
                gender = "女子";
            }
        }
        PrintWriter out = response.getWriter();
        out.print("<html><body>");
        out.print("<h1>");
        out.print("入力した情報は"+"<hr>");
        out.print("</h1>");
        out.print("<string>会員 ID : </strong>"+id+"<br>");
        out.print("<b>パスワード : </b>"+pass+"<br>");
        out.print("<strong>性別 : </strong>"+gender+"<br>");
        out.print("<b>職業 : </b>");
        if(jobs == null){
            out.print("無職");
        }else{
            for(int i=0;i<jobs.length;i++){
                if((i)==(jobs.length-1)){
                    out.print(jobs[i]);
                }else{
                    out.print(jobs[i]+" / ");
                }
            }
        }
        out.print("</body></html>");
    }
}
 
cs


위에서 만든 양식에 입력된 값을 파라미터로 받아 출력해 보았다.



성별을 선택하는 데에 사용된 radio 버튼은 name 속성이 같은 값 끼리는 하나만 선택이 가능하다.


직업을 선택하는 데에 사용된 checkbox 버튼은 중복 선택이 가능하며, 배열로 값을 넘긴다.

배열값을 파라미터로 받을때는 getParameterValues() 를 사용한다.