-
JDBC연결-22.04.08HTML 2022. 4. 8. 12:44728x90
경로: C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
복사한후 =>lib에 복사한다.
*처리 과정 - service객체를 얻어와 메소드를 호출하고 결과 값을 전달 받음
1. Service에서 Dao호출
2. Dao에서 spl조회
3. Dao에서 Service로 값을 반환
4. Service에서 jsp로 값을 전달이렇게 만들어서 사용해줄것이다.
<Service>
package kr.or.ddit; import java.util.Map; public class Service { private Dao dao; private static Service service; //1.private Constructor private Service() { dao = Dao.getInstance(); } //2.static method public static Service getInstance() { if(service == null) { service = new Service(); } return service; } //메소드 생성 //접근제한자 리턴타입 메소드명(넘겨주는 값) public Map<String, Object> selectMemberOne(String name){ //값을 가져와야 함.. dao에서 전달 받아서 Map<String, Object> map = dao.selectMemberOne(name); return map; } }
<Dao>
package kr.or.ddit; import java.sql.Statement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; public class Dao { private static Dao dao; //Dao객체 생성 -싱글톤패턴을 이용해 1회만 생성하여 공유해서 사용 /*싱글톤 패턴 : 시스템에 객체를 단 한번만 생성하고 그 객체를 어디서든 접근해 사용하는 패턴 싱글톤 패턴의 특징1. private Constructor -인스턴스가 현재 클래스 외 다른 위치에서 생성되는 것을 방지한다.*/ private Dao() {} /*싱글톤 패턴의 특징2. static method -클래스의 인스턴스는 static method에서 생성된다.*/ public static Dao getInstance() { if(dao==null) { dao=new Dao(); //최초 1회 new연산자를 이용해 객체를 메모리에 할당 } return dao; } public Map<String, Object> selectMemberOne(String name){ //Java와 DB를 연결해주는 객체를 생성하기 위해 도움을 주는 util사용 Connection conn = JDBCUtil.getConn(); Map<String, Object> map = new HashMap<String, Object>(); String sql= "select * from member where mem_name='" + name +"'"; try { //sql문장을 실행하는 객체 statement Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); //next(): rs객체가 데이터를 갖고 있을 때 true를 반환 없으면 false반환 while(rs.next()) { map.put("id",rs.getNString("mem_id")); map.put("hp",rs.getNString("mem_hp")); map.put("ml",rs.getNString("mem_mail")); } //사용 완료 후 객체 연결 끊기 JDBCUtil.close(conn, stmt, rs); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return map; } }
<JDBCUtil>
package kr.or.ddit; import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; //DB에 접근하기 위한 Connection객체를 생성하기 위한 정보를 등록 public class JDBCUtil { //생성자 만들지 않아도 기본적으로 생성자가 구성되지만 사용하지 않고, //public JDBCUtil() {} /*클래스가 초기화 될때(=처음 로딩될때) 한번만 실행 (=static영역에 최초 한번만 드라이버를 생성하고 공유하여 사용)*/ static { //드라이버 로딩을 위한 코드 작성 //DriverManager를 생성하기 위해 관련 드라이버 정보를 입력 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection conn; public static Connection getConn() { //DriverManger를 통해 연결객체를 생성하기 위한 정보를 입력 String url="jdbc:oracle:thin:@localhost:1521:xe"; try { conn = DriverManager.getConnection(url, "LAI", "java"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } //생성된 Connection 객체 닫기 /* -생성 후 반환(close)하지 않으면 자원의 낭비가 발생되며, 일정 수 이상 발생시 더이상의 생성이 불가 -Connection객체만 close하더라도 나머지 객체들이 자동 반환되지만 드라이버마다 동작이 달라 발생할 수 있으므로 모든객체를 역순으로 반환하도록 한다.*/ public static void close(Connection conn, Statement stmt, ResultSet rs) { //반환은 역순으로 한다. try { if(rs !=null) rs.close(); if(stmt !=null) stmt.close(); if(conn !=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
0407폴더에 만든 <arrMethod.html>부분과 연결
var proc4=function(name){ var name=prompt("검색할 이름을 입력하세요!"); var idx = arr.indexOf(name); var result=""; if(idx == -1){ result += `찾는 이름이 없네요~`; }else{ result += `${name}님은 ${idx}번째에 있네요~!`; result += `<a href = "detail.jsp?name=${name}"> 상세보기 </a>`; } document.getElementsByTagName('div')[0].innerHTML=result; };
<detail.jsp> 에서 연결되어 출력될 것임
<%@page import="java.util.Map"%> <%@page import="kr.or.ddit.Service"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style> td{ width: 100px; } </style> </head> <body> <pre> JDBC를 이용한 DB Connection JDBC(Java DataBase Connectivity) :자바에서 DB에 접속할 수 있도록 하는 Java API (=DB에서 정보를 가져오기 위해 객체를 만들어 연결하는 방식) </pre> <% //상세 정보를 가져오기 위한 요청데이터로 활용 String nm = request.getParameter("name"); /*처리 과정 - service객체를 얻어와 메소드를 호출하고 결과 값을 전달 받음 1. Service에서 Dao호출 2. Dao에서 spl조회 3. Dao에서 Service로 값을 반환 4. Service에서 jsp로 값을 전달 */ Service service = Service.getInstance(); Map<String, Object> map = service.selectMemberOne(nm); String userId = (String)map.get("id"); String userHp= (String)map.get("hp"); String userMail= (String)map.get("ml"); %> 여기서 <%=nm %>의 상세정보를 출력할거야! <br><br> <table border="1"> <tr> <td>아이디</td><td><%=userId %></td> </tr> <tr> <td>이름</td><td><%=nm %></td> </tr> <tr> <td>전화</td><td><%=userHp %></td> </tr> <tr> <td>이메일</td><td><%=userMail%></td> </tr> </table> </body> </html>
728x90'HTML' 카테고리의 다른 글
Date객체,String객체 -22.04.08 (0) 2022.04.08 배열2-22.04.08 (0) 2022.04.08 자바스크립트 객체, 배열-22.04.07 (0) 2022.04.07 자바스크립트 호이스팅, ES6백틱-22.04.07 (0) 2022.04.07 자바스크립트 반복문2,함수-22.04.07 (0) 2022.04.07