티스토리 뷰

donaricano-btn
반응형

(2) 라이브러리 등록과 회원목록 출력



1) 라이브러리 등록


서블릿으로 mysql에 있는 데이터를 쉽게 가져올 수 있게 하는 라이브러리를 추가해야 한다. 우리는 gradle을 사용하기 때문에 손쉽게 라이브러리를 추가할 수 있다. build.gradle 파일에 dependencies 를 추가한다. 우리가 추가할 라이브러리는 mysql-jtbc driver 라이브러리와 servlet-api 라이브러리이다. 다음과 같은 코드를 build.gradle 파일에 추가한다.


1
2
3
4
5
6
7
dependencies {
    // servlet api
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
    
    //mysql jdbc driver 라이브러리
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.46'
}
cs


build.gradle 파일을 수정한 뒤에는 반드시 gradle eclipse 명령으로 파일을 다시 깔아줘야한다.



2) 패키지, 클래스 생성



src/main/java 아래 servlet 패키지를 만들고 MemberList 클래스를 추가한다. 대부분의 개발자들이 패키지를 만드는 장소이므로 이곳에 만드는 습관을 들이는 것이 좋다. 



3) MemberList 작성


MemberList의 코드는 아래와 같다. 코드에 대한 설명은 주석을 참고할 것.


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
package servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
                            // @는 annotation을 뜻한다, annotation은 서버에 알려주는 역할을 한다.
@WebServlet("/member/list"// "/member/list" 라는 요청이 URL로 오면 이 클래스를 실행한다.
public class MemberList extends HttpServlet {
    // HttpServlet 클래스를 상속받으면 해당 클래스가 servlet으로 동작하게 한다
    // 상속받은 클래스에서 doGet 메서드를 오버라이드 해서 get요청을 받아서 처리한다.
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8"); // characterset 을 utf8로 지정
 
        PrintWriter out = response.getWriter(); // 화면에 직접 html 코드를 출력하는 객체이다
        out.println("<!DOCTYPE html>");         // 여기서 작성된 태그는 버퍼에 저장되었다가
        out.println("<html>");                  // 한번에 전송된다.
        out.println("<head>");
        out.println("<meta charset='UTF-8'>");
        out.println("<title>멤버 목록</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>멤버 목록</h1>");
        out.println("<p><a href='add.html'>새회원</a></p>");
        out.println("<table border='1'>");
        out.println("<tr>");
        out.println("    <th>아이디</th><th>이메일</th>");
        out.println("</tr>");
 
        try {
            Class.forName("com.mysql.jdbc.Driver"); // mysql-jdbc driver를 로딩한다
            try (                                   // forName 안에 물리적 주소를 넣으면 클래스를 반환
                    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb",  // mysqldb에 접속하는
                            "test""1111");                                                             // Connection 객체를 만듭니다
                    PreparedStatement stmt = con.prepareStatement("select mid, email from member");     // sql 쿼리문을
                                                                                                        // 저장하는 객체
                    ResultSet rs = stmt.executeQuery();) { // 쿼리문을 전송해서 반환되는 값을
                                                           // 저장하는 resultset
                while (rs.next()) { // resultset에 값이 있으면 반복문을 계속 수행한다
                    out.println("<tr>");
                    out.printf("    <td><a href='view?id=%s'>%s</a></td><td>%s</td>\n", rs.getString("mid"),
                            rs.getString("mid"), rs.getString("email"));
                    out.println("</tr>");
                }
            }
        } catch (Exception e) {
            out.println("<p>목록 가져오기 실패!</p>");  //에러처리
            e.printStackTrace(out);
        }
 
        out.println("</table>");
        out.println("</body>");
        out.println("</html>");
    }
}
 
cs



위 코드가 잘 수행 된다면 아래 그림과 같은 결과를 얻게 된다. 아마 테이블 안에 아무 자료도 없기 때문에 아무런 목록이 뜨지 않을 텐데 insert문으로 회원을 몇 명 추가하면 제대로 된 결과를 볼 수 있다.



반응형
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함