2016. 9. 27. 11:15ㆍProgramming/JSP
MemberList.java
1) MemberList.jsp 기능 구현하는 클래스
2) DB와 연결돼 Data 주고 받음
3) 쿼리 결과값을 빈클래스에 저장
<구성 요소>
1. 쿼리 실행
시나리오: 명단에 있는 귀족만 리무진에 태움
DriverManager(운전수)-Connection(+로그인)-Statement(쿼리 발표)-쿼리 실행 후 rs(리무진)에 저장
1) 드라이버 지정(귀족 골라내 태우는 사람)
Class.forName("com.mysql.jdbc.Driver");
2) 귀족 정보가 든 DB와 연결(+로그인)
conn = DriverManager.getConnection(url, uid, upw);
3) 상사로부터 전달 받은 '쿼리'를 사람들에게 말한다.
pstmt=con.prepareStatement(sql);
4) 쿼리 빈칸에 값 넣어줌(덜렁대는 상사)
pstmt.setString(1, id): 1번째 ?에 id 넣어준다.
5) 쿼리를 실행하여 귀족들을 리무진(ResultSet: rs)에 태움
rs=pstmt.executeQuery();
6) 자원 반납
rs, pstmt, con 모두 close()
2. 쿼리 결과값을 빈클래스에 저장
vo = new MemberVo();
vo.setNum(rs.getInt("num"));
vo.setId(rs.getString("id"));
list.add(vo); //num, id 등 모든 값을 한꺼번에 저장
3. redirect 처리 및 close 처리
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 | package source; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; //서버가 clinet에 응답 import javax.servlet.http.HttpServletRequest; //client가 서버에 요청 import javax.servlet.annotation.WebServlet; //DB 연관 라이브러리 import java.sql.DriverManager; //접속 DB 드라이버를 설정 import java.sql.Connection; //DB 접속해서 import java.sql.Statement; //쿼리를 실행하는 클래스 import java.sql.ResultSet; //쿼리의 결과값을 받는다. import java.util.List; import java.util.ArrayList; @WebServlet("/MemberList") // web.xml을 대신해서 만들어진 것 // 서블릿을 맵핑해서 요청하는 주소를 설정할 수 있다. // 요청이 오면 MemberList 클래스로 연결 public class MemberList extends HttpServlet { String url = "jdbc:mysql://localhost:3306/JAVA_LESSON" // DB 서버 주소 + "?useUnicode=true&characterEncoding=utf8"; String uid = "root"; String upw = null; // cmd 창에 mysql -uroot -p @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Connection conn = null; String sql = "select * from member"; Statement stmt = null; // sql 실행하는 클래스 ResultSet rs = null; // 결과값 받는 클래스 MemberVo vo = null; List<MemberVo> list = new ArrayList<MemberVo>(); try { Class.forName("com.mysql.jdbc.Driver"); // mysql lib를 사용해서 접속 준비 conn = DriverManager.getConnection(url, uid, upw); // 접속 stmt = conn.createStatement(); // sql을 실행할 준비 rs = stmt.executeQuery(sql); // sql을 실행하고 그 결과값을 ResultSet 객체가 받는다. //select는 executeQuery(), insert,delete,update는 executeUpdate() 이용 while (rs.next()) { vo = new MemberVo(); vo.setNum(rs.getInt("num")); vo.setId(rs.getString("id")); vo.setPwd(rs.getString("pwd")); vo.setName(rs.getString("name")); vo.setEmail(rs.getString("email")); vo.setPhone(rs.getString("phone")); vo.setIndate(rs.getString("indate")); vo.setAdmin(rs.getInt("admin")); list.add(vo); } //memberList로 redirect req.setAttribute("memList", list); RequestDispatcher dispatcher = req.getRequestDispatcher("./memberList.jsp"); dispatcher.forward(req, resp); } catch (Exception e) { e.printStackTrace(); } finally { // 입출력한 후에 try { // 순서대로 닫아준다. if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } } | cs |
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 | package source; public class MemberVo { private int num; //private로 지정되면 getter, setter로 접근해야됨 private String id; private String pwd; private String name; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } } | cs |
'Programming > JSP' 카테고리의 다른 글
Day 6(9/22) 업데이트 화면& 기능 구현 (0) | 2016.09.27 |
---|---|
Day 5(9/21) 회원 추가 기능 구현 (0) | 2016.09.27 |
JSP 개념 정리 (0) | 2016.09.26 |
Day 3(9/19) 회원리스트 화면 만들기 (0) | 2016.09.19 |
Day 2(9/13) 회원가입 페이지 만들기 (0) | 2016.09.19 |