19.05.23 고급 서블릿 파라미터 활용 (model 2 동영상 9강~10강)

Back-End/JSP 2019. 5. 23. 15:59
728x90
반응형

MemberJoin.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
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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 
<center>
    <h2>회원 가입</h2>
    <body>
//proc.do 서블릿으로 회원가입시 입력한 값을 넘겨준다.
        <form action="proc.do" method="post">
            <table width="500" border="1">
 
                <tr height="50">
                    <td width="150" align="center">아이디</td>
                    <td width="350" align="center"><input type="text" name="id"
                        size="40" placeholder="id를 넣으세요."></td>
                <tr height="50">
                    <td width="150" align="center">패스워드</td>
                    <td width="350" align="center"><input type="password"
                        name="pass1" size="40" placeholder="비밀번호는 영문과 숫자만 넣어주세요."></td>
                <tr height="50">
                    <td width="150" align="center">패스워드 확인</td>
                    <td width="350" align="center"><input type="password"
                        name="pass2" size="40"></td>
                <tr height="50">
                    <td width="150" align="center">이메일</td>
                    <td width="350" align="center"><input type="email"
                        name="email" size="40" placeholer></td>
                <tr height="50">
                    <td width="150" align="center">전화번호</td>
                    <td width="350" align="center"><input type="tel" name="tel"
                        size="40"></td>
                <tr heigth="50">
                    <td width="150" align="center">당신의 관심분야</td>
                    <td width="350" align="center"><input type="checkbox"
                        name="hobby" value="캠핑">캠핑 &nbsp;&nbsp; <input
                        type="checkbox" name="hobby" value="등산">등산 &nbsp;&nbsp; <input
                        type="checkbox" name="hobby" value="영화">영화 &nbsp;&nbsp; <input
                        type="checkbox" name="hobby" value="독서">독서 &nbsp;&nbsp;</td>
                </tr>
                <tr heigth="50">
                    <td width="150" align="center">당신의 직업은</td>
                    <td width="350" align="center"><select name="job">
                            <option value="교사">교사</option>
                            <option value="변호사">변호사</option>
                            <option value="의사">의사</option>
                            <option value="기술사">기술사</option>
                    </select></td>
                </tr>
                <tr height="50">
                    <td width="150" align="center">당신의 연령은</td>
                    <td width="350" align="center"><input type="radio" name="age"
                        ㄴㄴ
                        value="20">20대&nbsp;&nbsp; <input
                        type="radio" name="age" value="30">30대&nbsp;&nbsp; <input
                        type="radio" name="age" value="40">40대&nbsp;&nbsp;</td>
                </tr>
 
                <tr height="50">
                    <td width="150" align="center">하고싶은말</td>
                    <td width="350" align="center"><textarea rows="5" cols="40"
                            name="info"></textarea></td>
                </tr>
 
                <tr height="50">
                    <td align="center" colspan="2"><input type="submit"
                        value="회원 가입"> <input type="reset" value="취소">
            </table>
        </form>
</center>
</body>
</html>
cs



MemberList.jsp (회원 리스트 페이지)

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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=EUC-KR">
<title>Insert title here</title>
</head>
<body>
MemberList로 이동
</body>
</html>
cs



LoginError.jsp (에러 페이지)

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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=EUC-KR">
<title>Insert title here</title>
</head>
<body>
LoginError.jsp
</body>
</html>
cs



MemberBean.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
package model;
 
public class MemberBean {
    
    private String id;
    private String pass1;
    private String pass2;
    private String email;
    private String tel;
    private String hobby;
    private String job;
    private String age;
    private String info;
    
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPass1() {
        return pass1;
    }
    public void setPass1(String pass1) {
        this.pass1 = pass1;
    }
    public String getPass2() {
        return pass2;
    }
    public void setPass2(String pass2) {
        this.pass2 = pass2;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getHobby() {
        return hobby;
    }
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getInfo() {
        return info;
    }
    public void setInfo(String info) {
        this.info = info;
    }
    
    
    
    
    
    
}
 
cs



MemberDAO.java (DB연결 클래스)

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
package model;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class MemberDAO {
 
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;
 
    public void getCon() {
        try {
 
            // 데이터베이스 연결 코드
            Context initctx = new InitialContext();
            Context envctx = (Context) initctx.lookup("java:comp/env");
            DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
            con = ds.getConnection();

            

//InitialContext는 프로젝트에서 서버를 사용할 수 있도록 Context를 구성, //web.xml에서 앤트리나 리소스 정보가 위치해있는 곳이 "java:comp/env" //Context의 lookup(참고)메서드로 "java:comp/env" 정보 읽어들임 //읽어들인 정보를 envctx에 담고 서버를 사용하기위해 설정했던 이름인 jdbc/pool를 참고하여 //(jdbc/pool과 매핑되는 리소스를 가져옴) //DataSource객체에 담는다. //(생성된 Context객체에서 리소스 위치한 환경 참고, 커넥션풀 리소스의 이름 참고하여 데이터소스 객체에 담음 ) //DataSource객체에서 getConnection하여 커넥션 객체에 담는다. //정리 : Context 객체로 리소스 위치와 리소스 이름을 참고하여 미리 설정해둔 타입(데이터소스)으로 커넥션 객체를 얻음



 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    // 회원 한사람에 대한 정보를 저장하는 메소드
    public void insertMember(MemberBean bean) {
        getCon();
 
        try {
 
            // 쿼리 준비하기
            String sql = "insert into member values (?,?,?,?,?,?,?,?) ";
 
            // 쿼리 실행할 객체 선언
            pstmt = con.prepareStatement(sql);
 
            // ?에 값을 대입시켜준다.
            pstmt.setString(1, bean.getId());
            pstmt.setString(2, bean.getPass1());
            pstmt.setString(3, bean.getEmail());
            pstmt.setString(4, bean.getTel());
            pstmt.setString(5, bean.getHobby());
            pstmt.setString(6, bean.getJob());
            pstmt.setString(7, bean.getAge());
            pstmt.setString(8, bean.getInfo());
 
            // 쿼리 실행
            pstmt.executeUpdate();
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
}
 
cs



MemberJoinProc.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
package control;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import model.MemberBean;
import model.MemberDAO;
 
@WebServlet("/proc.do") //proc.do url을 매핑한다.
public class MemberJoinProc extends HttpServlet {
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        reqPro(request, response);
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        reqPro(request, response);
    }
 
    protected void reqPro(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        // 빈클래스 객체를 생성하고 각각 값들을 받아서 빈 클래스에 저장한다.
 
        // 빈클래스에 저장하기 위해 빈클래스 객체 생성
        MemberBean bean = new MemberBean();
 
        // request.getParameter메소드를 사용해서 받은 값들을 빈 클래스에 저장시킨다.
 
        bean.setId(request.getParameter("id"));
        String pass1 = request.getParameter("pass1");
        String pass2 = request.getParameter("pass2");
        bean.setPass1(pass1);
        bean.setPass2(pass2);
        bean.setEmail(request.getParameter("email"));
        bean.setTel(request.getParameter("tel"));
 
        // 취미는 여러개를 선택할 수 있기때문에 배열에 담아서 저장하고
        String[] arr = request.getParameterValues("hobby");
        // data의 초기값을 선언
        String data = "";
        // 향상된 for문 arr배열의 원소를 하나씩 출력해 string에 저장한다.
        for (String string : arr) {
            data += string + " "// 하나의 스트링으로 자료를 연결;
        }
 
        bean.setHobby(data);
        bean.setJob(request.getParameter("job"));
        bean.setAge(request.getParameter("age"));
        bean.setInfo(request.getParameter("info"));
 
        // 패스워드가 같을 경우에만 데이터 베이스에 저장
        if (pass1.equals(pass2)) {
            // 데어터베이스 객체 생성
            MemberDAO mdao = new MemberDAO();
 
            mdao.insertMember(bean);
 
            RequestDispatcher dis = request.getRequestDispatcher("MemberList.jsp");
            dis.forward(request, response);
 
        } else // 패스워드가 다를시 메시지를 출력하고 에러페이지로 이동함
        {
            // RequestDispatcher은 특정 자원에 처리를 요청하고 처리 결과를 얻어오는 기능을 수행하는 클래스.
            // 즉 a.jsp 내에서 RequestDispatcher을 사용하여 b.jsp로 요청을 보낼 수 있습니다.
 
            request.setAttribute("msg""패스워드가 일치 하지 않습니다.");
            RequestDispatcher dis = request.getRequestDispatcher("LoginError.jsp");
            dis.forward(request, response);
 
        }
 
        // 데이터베이스 객체 선언한 후에 저장
 
    }
 
}
 
cs


728x90
반응형
: