ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Form을 활용해서 정보를 DB와 연결하기
    JAVA/웹 프로그래밍 - JSP 2020. 11. 7. 17:35

    아래의 내용과 만드는 방식은 모두 동일하다.

    그러나 DB에 저장할 테이블만 다르다.

    designatedroom87.tistory.com/296?category=901206

     

    Form을 활용해서 정보를 DB와 연결하기

    현재 프로젝트의 하위 폴더인 WebContent 폴더의 하위에 폴더 하나를 만들자. 폴더명은 message라고 하자. 이 폴더 명에 jsp파일들을 생성할 것이다. DB에서 우리가 자바 콘솔 창에서 정보를 입력,수정,

    designatedroom87.tistory.com

     

    아래의 내용에서 MessagePhoneBookService.java를 활용해서 

    DB에서 데이터 출력,삽입,삭제,수정을 한다.

    designatedroom87.tistory.com/223?category=897688

     

    데이터를 입력받아 DB에 접근하기 - PreparedStatement를 활용

    아래의 글을 먼저 읽고 오자. designatedroom87.tistory.com/213?category=897688 데이터를 입력받아 DB에 접근하기 우선 테이블을 하나 만들도록 한다. 테이블에 저장할 데이터는 번호(정수), 이름(String), 전화.

    designatedroom87.tistory.com

     

    DB에 phonebook이라는 테이블이 존재하며, 데이터는 다음과 같이 정의되어 있다.

    없으면 만들면 된다.

     

    현재의 프로젝트의 WebContent의 하위에 폴더하나를 생성하고 이름을 phoneBookData이라고 하자.

    메인 화면을 구성할 페이지부터 만들어 보자. 

    메인 메뉴의 맨 미자막에 중복 개별 출력이라는 목록을 추가한다.

    위에서 만든 방식에서는 중복된 데이터면 1개만 찾고 끝나지만 여기서는 중복된 데이터 모두를

    출력하도록 작성한다.

    모든 jsp파일은 phoneBookData 폴더의 하위에 만들자.

    꼭 아래와 같이 스타을을 추가하지 않고 만들어도 된다.

     

    index.html

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    
    <head>
    
    <title>PHONE BOOK MENU</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
      
    </head>
    
    <body>
    
    	<div class="container">
    	
      <h2>Phone book 관리</h2>
      <p>메뉴를 선택해 주세요</p>
      <div class="list-group">
        <a href="phonebookForm.jsp" class="list-group-item list-group-item-success">Phone book 입력</a>
        <a href="list.jsp" class="list-group-item list-group-item-info">Phone book 출력</a>
        <a href="printPhonebookSearch.jsp" class="list-group-item list-group-item-active">Phone book 개별 출력</a>
        <a href="updatePhonebookSearch.jsp" class="list-group-item list-group-item-warning">Phone book 수정</a>
        <a href="deletePhonebookSearch.jsp" class="list-group-item list-group-item-danger">Phone book 삭제</a>
         <a href="printPhonebookAllSearch.jsp" class="list-group-item list-group-item-primary">Phone book 개별 출력(중복)</a>
      </div>
    </div>
    
    </body>
    
    </html>

     

     

     

    우선 테이블에 있는 모든 데이터를 출력하는 기능부터 만들어보자.

    이름은 list.jsp라고 하자.

    list.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%@ page import="java.io.*"%>	<!-- 임포트 필요 -->
    <%@ page import="java.sql.*"%>	<!-- Connection 클래스를 쓰려면 임포트 필요 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    
    <title>Message list</title>
    </head>
    <body>
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
    	 <h2>테이블에 있는 전체 데이터 출력</h2>
    	
    	<table border=1 width=50%>
    		<tr>
    		<th>번호</th><th>이름</th><th>전화번호</th><th>메모</th>
    		</tr>
    		
    		<%
    			try{
    			Class.forName("oracle.jdbc.driver.OracleDriver");	
    	
    			Connection conn = DriverManager.getConnection(
    					"jdbc:oracle:thin:@localhost:1521:xe",
    					"HR",
    					"1234");
    			
    			if (conn == null)	{System.out.println("DB접속에 실패");}
    			else 				{System.out.println("DB접속 성공");}
    			
    			String sql = "select * from phonebook";
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    			ResultSet rs = pstmt.executeQuery();
    			
    			while (rs.next()) {
    				
    		%>
    		<tr>
    		<td><%=rs.getInt("no") %></td>
    		<td><%=rs.getNString("name") %>
    		</td><td><%=rs.getNString("phonenum") %></td>
    		<td><%=rs.getNString("memo") %></td>
    		</tr>
    		<%}//	while문 end
    			
    			rs.close();
    			pstmt.close();
    			conn.close();
    		}	//	try end
    		catch(Exception e){}
    		finally{}
    		%>
    	</table>
    
    </body>
    
    </html>

    list.jsp를 실행해서 테이블에 저장되어 있는 데이터들을 출력해보자.

     

     

     

    DB에 데이터를 저장하는 기능을 만들어보자.

    1. 데이터 저장

    phonebookForm           <-  폼으로 데이터를 입력받고

    phonebookForm_proc   <-   폼에서 입력받은 데이터를 DB에 저장하고 나서 전체 데이터를 출력

     

    phonebookForm.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
      <title>Insert title here</title>
    </head>
    <body>
    	
    	<div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>phone book 데이터 입력</h2>
      
      <form action=phonebookForm_proc.jsp method=post>
        <div class="form-group">
          <label for="no">번호:</label>
          <input type="text" class="form-control" id="no" name="no" placeholder="번호를 입력하세요">
        </div>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="이름을 입력하세요">
        </div>
        
        <div class="form-group">
          <label for="phonenum">전화번호:</label>
          <input type="text" class="form-control" id="phonenum" name="phonenum" placeholder="전화번호를 입력하세요">
        </div>
        
        <div class="form-group">
          <label for="content">메모:</label>
          <input type="text" class="form-control" id="memo" name="memo" placeholder="메모를 입력하세요">
        </div>
        
        <button type="submit" class="btn btn-default">입력</button>
      </form>
      
    </div>
    	
    </body>
    </html>

     

    phonebookForm_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*"%>	<!-- 임포트 필요 -->
    <%@ page import="java.sql.*"%>	<!-- Connection 클래스를 쓰려면 임포트 필요 -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%
    try
    {
    	int no = Integer.parseInt(request.getParameter("no"));
    	String name = request.getParameter("name");
    	String phonenum = request.getParameter("phonenum");
    	String memo = request.getParameter("memo");
    	
    	//	디버깅 용
    	System.out.println(no);
    	System.out.println(name);
    	System.out.println(phonenum);
    	System.out.println(memo);
    	
    	//	오라클에 접속하기 위해서는 드라이버를 로드해야 한다.
    	Class.forName("oracle.jdbc.driver.OracleDriver");	
    	
    	Connection conn = DriverManager.getConnection(
    			"jdbc:oracle:thin:@localhost:1521:xe",
    			"HR",
    			"1234");
    	
    	if (conn == null)	{System.out.println("DB접속에 실패");}
    	else 				{System.out.println("DB접속 성공");}
    	
    	String sql = "insert into phonebook(no,name,phonenum,memo) values(?,?,?,?)";
    	PreparedStatement pstmt = conn.prepareStatement(sql);
    	
    	//	?(물음표)룔 채워줘야 함.
    	pstmt.setInt(1, no);			//	번호
    	pstmt.setNString(2, name);		//	이름
    	pstmt.setNString(3, phonenum);	//	전하번호
    	pstmt.setNString(4, memo);		//	메모
    
    	int result = pstmt.executeUpdate();
    	
    	System.out.println(result +"개가 입력되었습니다.");
    	
    	pstmt.close();
    	conn.close();
    	
    	response.sendRedirect("list.jsp");
    }
    catch(Exception e){}
    finally{}
    %>
    
    </body>
    </html>

    phonebookForm.jsp를 실행하고 데이터를 저장해보자,

     

     

     

     

    2. 데이터 개별 출력

    printPhonebookSearch           <- form에서 이름을 입력받아

    printPhonebookSearch_proc    <- form에서 입력받은 이름으로 DB에서 데이터를 조회해서 출력

     

    printPhonebookSearch.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    
    <title>Insert title here</title>
    </head>
    <body>
    	
    	<div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>개별 출력 찾기</h2>
      
      <form action=printPhonebookSearch_proc.jsp method=post>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="이름을 입력하세요">
        </div>
       
        <button type="submit" class="btn btn-default">찾기</button>
      </form>
      
    </div>
    	
    </body>
    </html>

     

    printPhonebookSearch_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
      
    <meta charset="UTF-8">
    <title>Phone Book Print</title>
    </head>
    <body>
    
    <%
    		try{
    		String name=request.getParameter("name");
    		System.out.println(name);
    		
    		Class.forName("oracle.jdbc.driver.OracleDriver");
    		Connection conn=DriverManager.getConnection(
    		"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
    		
    		if(conn==null) {System.out.println("DB접속에 실패");}
    		System.out.println("DB접속 성공");
    		
    		//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기		
    		String sql="select * from phonebook where name=?";
    		PreparedStatement pstmt=conn.prepareStatement(sql);//위의 sql문을 처리하기 위해 객체 생성
    		pstmt.setNString(1, name);
    		ResultSet rs=pstmt.executeQuery();
    		
    		if(rs.next()) {
    %>
    <div class="container">
    <h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>검색 결과</h2>
         
        <div class="form-group">
          <label for="no">번호:</label>
          <input value=<%=rs.getInt("no")%> disabled type="text" class="form-control" id="no" name="no" >
        </div>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input value=<%=rs.getNString("name")%> disabled type="text" class="form-control" id="name" name="name">
        </div>
        
        <div class="form-group">
          <label for="name">전화번호:</label>
          <input value=<%=rs.getNString("phonenum")%> disabled type="text" class="form-control" id="phonenum" name="phonenum">
        </div>
        
        <div class="form-group">
          <label for="content">메모:</label>
          <input value=<%=rs.getNString("memo")%> disabled type="text" class="form-control" id="memo" name="memo">
        </div>
     
    </div>
    <%}else{%>
    	<script>
    	alert("검색한 결과가 없습니다.");
    	window.location.href = 'http://localhost:9090/phoneBookData/printPhonebookSearch.jsp';
    	</script>
    <% 
    //response.sendRedirect("print_search.jsp");
    }
    		pstmt.close();
    		conn.close();
    }catch(Exception e){}
    finally{}
    %>
    
    </body>
    </html>

    printPhonebookSearch,jsp를 실행해서 데이터의 개별 출력을 해보자.

     

     

     

     

    3. 데이터 수정

     

    updatePhonebookSearch          <- 수정할 데이터의 이름을 입력받고

    updatePhonebookSearch_view   <- 그에 대한 데이터를 보여주고 수정할 수 있도록 하고 

    updatePhonebook_proc           <- 수정할 데이터를 넘겨받아 DB에서 update한다.

     

    updatePhonebookSearch.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    	
    <title>Insert title here</title>
    </head>
    <body>
    	
    	<div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>개별 업데이트 찾기</h2>
      
      <form action=updatePhonebookSearch_view.jsp method=post>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="이름을 입력하세요">
        </div>
       
        <button type="submit" class="btn btn-default">찾기</button>
      </form>
      
    </div>
    	
    </body>
    </html>

     

    updatePhonebookSearch_view.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
        <!-- 아래의 내용을 임포트 하자 -->
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <meta charset="UTF-8">
    <title>Message Update</title>
    </head>
    <body>
    
    <%
    		try{
    		String name=request.getParameter("name");
    		System.out.println(name);
    		
    		Class.forName("oracle.jdbc.driver.OracleDriver");
    		Connection conn=DriverManager.getConnection(
    		"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
    		
    		if(conn==null) {System.out.println("DB접속에 실패");}
    		System.out.println("DB접속 성공");
    		
    		//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
    				
    		String sql="select * from phonebook where name=?";
    		PreparedStatement pstmt=conn.prepareStatement(sql);//위의 sql문을 처리하기 위해 객체 생성
    		pstmt.setNString(1, name);
    		ResultSet rs=pstmt.executeQuery();
    		
    		if(rs.next()) {
    %>
    <div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>수정 하기</h2>
         
         <form action="updatePhonebook_proc.jsp" method="post">
        <div class="form-group">
          <label for="no">번호:</label>
          <!-- 아래 문장은 disabled라서 데이터가 넘어가지 못한다. 그래서 아래의 문장이 필요한 것이다. -->
          <input value=<%=rs.getInt("no")%> disabled type="text" class="form-control" id="no" name="no">
          <!--  disabled 때문에  값이 제대로 안 넘어감 그래서 아래에서 타입을 hidden으로 한다.-->
          <input value=<%=rs.getInt("no")%> type="hidden" id="no" name="no" >
        </div>
        
       <div class="form-group">
          <label for="name">이름:</label>
          <input value=<%=rs.getNString("name")%> class="form-control" id="name" name="name">
        </div>
        
        <div class="form-group">
          <label for="name">전화번호:</label>
          <input value=<%=rs.getNString("phonenum")%> class="form-control" id="phonenum" name="phonenum">
        </div>
        
        <div class="form-group">
          <label for="content">메모:</label>
          <input value=<%=rs.getNString("memo")%> type="text" class="form-control" id="memo" name="memo">
        </div>
        <button type="submit" class="btn btn-default">수정</button>
     	</form>
    </div>
    <%}else{%>
    	<script>
    	alert("검색한 결과가 없습니다.");
    	window.location.href = 'http://localhost:9090/phoneBookData/updatePhonebookSearch.jsp';
    	</script>
    <% 
    //response.sendRedirect("print_search.jsp");
    }
    		pstmt.close();
    		conn.close();
    }catch(Exception e){}
    finally{}
    %>
    
    </body>
    </html>

     

    updatePhonebook_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*"%>	<!-- 임포트 필요 -->
    <%@ page import="java.sql.*"%>	<!-- Connection 클래스를 쓰려면 임포트 필요 -->
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    
    <title>Insert title here</title>
    </head>
    <body>
    <%
    try{
    	int no = Integer.parseInt(request.getParameter("no"));
    	String name = request.getParameter("name");
    	String phonenum = request.getParameter("phonenum");
    	String memo = request.getParameter("memo");
    
    	System.out.printf("%d, %s, %s %s\n",no,name,phonenum,memo);
    
    	//오라클에 접속하기 위해서는 드라이버를 로드해야 한다.
    	Class.forName("oracle.jdbc.driver.OracleDriver");	
    
    	Connection conn = DriverManager.getConnection(
    			"jdbc:oracle:thin:@localhost:1521:xe",
    			"HR",
    			"1234");
    	
    	if (conn == null)	{System.out.println("DB접속에 실패");}
    	else 				{System.out.println("DB접속 성공");}
    	
    	//	특정한 번호를 가진 이의 content의 내용과 이름을 수정하는 문장
    	String sql = "update phonebook set name=?,phonenum=?,memo=? where no=?";
    	PreparedStatement pstmt = conn.prepareStatement(sql);	
    	
    	//	물음표를 채워 넣는다.
    	pstmt.setNString(1,name);
    	pstmt.setNString(2,phonenum);
    	pstmt.setNString(3,memo);
    	pstmt.setInt(4,no);
    	
    	int result = pstmt.executeUpdate();
    	
    	System.out.println(result +"개가 수정되었습니다.");
    	
    	pstmt.close();
    	conn.close();
    	
    	response.sendRedirect("list.jsp");	//	전체 테이블 조회해서 확인
    	
    }
    catch(Exception e){}
    finally{}
    %>
    </body>
    </html>

     

     

     

     

    4. 데이터 삭제

     

    deletePhonebookSearch            <- 삭제할 이름을 입력받고

    deletePhonebookSearch_view     <-삭제할 이름에 대한 데이터를 출력하고

    deletePhonebook_proc             <- 삭제할 데이터를 테이블에서 제거

     

     

    deletePhonebookSearch.jsp  

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    
    <title>Insert title here</title>
    </head>
    <body>
    	
    	<div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>개별 삭제 찾기</h2>
      
      <form action=deletePhonebookSearch_view.jsp method=post>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="이름을 입력하세요">
        </div>
       
        <button type="submit" class="btn btn-default">검색</button>
      </form>
      
    </div>
    	
    </body>
    </html>

     

    deletePhonebookSearch_view.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
        <!-- 아래의 내용을 임포트 하자 -->
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <meta charset="UTF-8">
    
    <title>Phone Book Delete</title>
    </head>
    <body>
    
    <%
    		try{
    		String name=request.getParameter("name");
    		System.out.println(name);
    		
    		Class.forName("oracle.jdbc.driver.OracleDriver");
    		Connection conn=DriverManager.getConnection(
    		"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
    		
    		if(conn==null) {System.out.println("DB접속에 실패");}
    		System.out.println("DB접속 성공");
    		
    		//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기		
    		String sql="select * from phonebook where name=?";
    		PreparedStatement pstmt=conn.prepareStatement(sql);//위의 sql문을 처리하기 위해 객체 생성
    		pstmt.setString(1, name);
    		ResultSet rs=pstmt.executeQuery();
    		
    		if(rs.next()) {
    %>
    <div class="container">
    <h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>Phone Book 데이터 삭제 하기</h2>
         
         <!-- 삭제에서는 번호만 넘겨주면 된다. 번호를 통해서만 삭제한다. -->
         <form action="deletePhonebook_proc.jsp" method="post">
        <div class="form-group">
          <label for="no">번호:</label>
          <input value=<%=rs.getInt("no")%> disabled type="text" class="form-control" id="no" name="no">
          <!--  disabled 때문에  값이 제대로 안 넘어감-->
          <input value=<%=rs.getInt("no")%> type="hidden" id="no" name="no" >
        </div>
        <button type="submit" class="btn btn-default">삭제</button>
     	</form>
     	
       <div class="form-group">
          <label for="name">이름:</label>
          <input value=<%=rs.getNString("name")%> disabled class="form-control" id="name" name="name">
        </div>
        
       <div class="form-group">
          <label for="name">전화번호:</label>
          <input value=<%=rs.getNString("phonenum")%> disabled class="form-control" id="phonenum" name="phonenum">
        </div>
         
        <div class="form-group">
          <label for="memo">메모:</label>
          <input value=<%=rs.getNString("memo")%> disabled type="text" class="form-control" id="memo" name="memo">
        </div>
        
    </div>
    <%}else{%>
    	<script>
    	alert("검색한 결과가 없습니다.");
    	window.location.href = 'http://localhost:9090/phoneBookData/deletePhonebookSearch.jsp';
    	</script>
    <% 
    //response.sendRedirect("print_search.jsp");
    }
    		pstmt.close();
    		conn.close();
    }catch(Exception e){}
    finally{}
    %>
    
    </body>
    </html>

     

    deletePhonebook_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*"%>	<!-- 임포트 필요 -->
    <%@ page import="java.sql.*"%>	<!-- Connection 클래스를 쓰려면 임포트 필요 -->
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    try{
    	int no = Integer.parseInt(request.getParameter("no"));
    
    	System.out.printf("%d",no);
    
    	//오라클에 접속하기 위해서는 드라이버를 로드해야 한다.
    	Class.forName("oracle.jdbc.driver.OracleDriver");	
    
    	Connection conn = DriverManager.getConnection(
    			"jdbc:oracle:thin:@localhost:1521:xe",
    			"HR",
    			"1234");
    	
    	if (conn == null)	{System.out.println("DB접속에 실패");}
    	else 				{System.out.println("DB접속 성공");}
    	
    	String sql = "delete from phonebook where no=?";
    	PreparedStatement pstmt = conn.prepareStatement(sql);	//	위의 SQL문을 처리하기 위해 객체 생성
    	pstmt.setInt(1, no);
    	
    	int result = pstmt.executeUpdate();
    	
    	System.out.println(result +"개가 삭제되었습니다.");
    	
    	pstmt.close();
    	conn.close();
    	
    	response.sendRedirect("list.jsp");	//	전체 테이블 조회해서 확인
    	
    }
    catch(Exception e){}
    finally{}
    %>
    </body>
    </html>

     

     

     

     

    5. 기존에 개별 데이터 출력은 하나의 데이터만 출력하였는데, 중복된 데이터에 대한 출력을 해보자.

     

    printPhonebookAllSearch          <- 출력할 데이터 입력하고

    printPhonebookSearchAll_proc   <- 출력할 데이터 출력

     

    printPhonebookAllSearch.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    
    <title>Insert title here</title>
    </head>
    <body>
    	
    	<div class="container">
    	<h2><a href="index.jsp">Main Menu로 이동</a></h2>
      <h2>개별 중복 출력 찾기</h2>
      
      <form action=printPhonebookSearchAll_proc.jsp method=post>
        
        <div class="form-group">
          <label for="name">이름:</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="이름을 입력하세요">
        </div>
       
        <button type="submit" class="btn btn-default">찾기</button>
      </form>
      
    </div>
    	
    </body>
    </html>

     

    printPhonebookSearchAll_proc.jsp

    더보기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Phone Book Print</title>
    </head>
    <body>
    
    <%
    		try{
    		String name=request.getParameter("name");
    		System.out.println(name);
    		
    		Class.forName("oracle.jdbc.driver.OracleDriver");
    		Connection conn=DriverManager.getConnection(
    		"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
    		
    		if(conn==null) {System.out.println("DB접속에 실패");}
    		System.out.println("DB접속 성공");
    		
    		//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
    				
    		String sql="select * from phonebook where name=?";
    		PreparedStatement pstmt=conn.prepareStatement(sql);//위의 sql문을 처리하기 위해 객체 생성
    		pstmt.setNString(1, name);
    		ResultSet rs=pstmt.executeQuery();
    		
    		%>
    		<h2><a href="index.jsp">Main Menu로 이동</a></h2>
    		<h2>중복 검색 결과</h2>
    		
    		<table border=1 width=50%>
    		<tr>
    		<th>번호</th><th>이름</th><th>전화번호</th><th>메모</th>
    		</tr>
    		
    		<% 
    		while (rs.next()) {%>
    		
    		<tr>
    		<td><%=rs.getInt("no") %></td>
    		<td><%=rs.getNString("name") %></td>
    		<td><%=rs.getNString("phonenum") %></td>
    		<td><%=rs.getNString("memo") %></td>
    		</tr>
    <%}
    		%></table><% 
    		pstmt.close();
    		conn.close();
    }catch(Exception e){}
    finally{} 
    %>
    
    </body>
    </html>

     

    전체 소스 파일

    deletePhonebook_proc.jsp
    0.00MB
    deletePhonebookSearch.jsp
    0.00MB
    deletePhonebookSearch_view.jsp
    0.00MB
    index.jsp
    0.00MB
    list.jsp
    0.00MB
    phonebookForm.jsp
    0.00MB
    phonebookForm_proc.jsp
    0.00MB
    printPhonebookAllSearch.jsp
    0.00MB
    printPhonebookSearch.jsp
    0.00MB
    printPhonebookSearch_proc.jsp
    0.00MB
    printPhonebookSearchAll_proc.jsp
    0.00MB
    updatePhonebook_proc.jsp
    0.00MB
    updatePhonebookSearch.jsp
    0.00MB
    updatePhonebookSearch_view.jsp
    0.00MB

     

    댓글

Designed by Tistory.