posted by 코딩 공부중 2019. 2. 11. 19:49

공공데이터 api와 데이터베이스 그리고 php와 html을 활용해 만든 서울시 도서관검색 웹페이지 입니다.


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
87
88
<pre>   //html 사용을 위한 코드
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>   //jsp로 글자입력
<%@ page import="java.sql.*" %>   //jsp사용
<%@ page info = "test2.jsp" contentType="text/html; charset=utf-8" %>
<% request.setCharacterEncoding("utf-8");%>
 
<form name="form1" method="post" action="test2.jsp">    //action과 post메소드를 사용하여 체크박스 정보를 넘겨줌
<font size="8">서울시 도서관 검색</font><br>
client(id) :    <input type="text" name="id">       //id입력을 위한 text 타입
검색어  :       <input type="text" name="search">  <input type="submit" value="검색">    //검색어 입력창
<input type="checkbox" name="table" value="name">도서관 명
<input type="checkbox" name="table" value="gu">구
<input type="checkbox" name="table" value="addr">주소
<input type="checkbox" name="table" value="closed">휴관일
<input type="checkbox" name="table" value="phone">전화번호
<input type="checkbox" name="table" value="gpsx">좌표x
<input type="checkbox" name="table" value="gpsy">좌표y    //여기까지 체크박스 입력창
</form>
 
<%
 String URL="jdbc:mysql://localhost/";  //데이터베이스와 연동을 위한 주소를 변수에 저장
 String USER = ""; //계정 id, APMSETUP은 기본적으로 root
 String PASS="";    //마찬가지로 APMSETUP은 기본적으로 apmsetup
 Connection conn=null;      //주소 입력을 위해 null값으로 변수 선언
 Statement stmt = null;
 ResultSet rs = null;
 ResultSet rs2 = null;
 PreparedStatement pstmt=null;
 
 String search = request.getParameter("search");    //위 html에서 받아온 검색어 및 체크박스 정보를 string변수에 저장
 String id = request.getParameter("id");
 String table = request.getParameter("table");
 String sql = "select * from library2";     //select문 사용을 위해 sql변수에 select문 저장
 String sqlid = "insert into ipid(id,search,ip) values(?, ?, ?)";//id와 ip 그리고 검색어 저장을 위한 테이블 내용 추가
 
 if(table != null && search != null){       //체크박스와 검색어가 입력이 되면 if문 실행
   if(table.equals("name")){        //각 if문에서 equals함수를 통해 일치하는지 확인
        sql += " where name like '%" + search + "%'";   //일치하면 sql에 where like 특정 단어 검색 명령어를 입력하고 거기에 html에서 받아온 검색어 변수를 넣어줌
} else if(table.equals("gu")){
    sql += " where gu like '%" + search + "%'";
}else if(table.equals("addr")){
    sql += " where addr like '%" + search + "%'";
}else if(table.equals("closed")){
    sql += " where closed like '%" + search + "%'";
}else if(table.equals("phone")){
    sql += " where phone like '%" + search + "%'";
}else if(table.equals("gpsx")){
    sql += " where gpsx like '%" + search + "%'";
}else if(table.equals("gpsy")){
    sql += " where gpsy like '%" + search + "%'";
 }
}   //if문 종료
 try {          //예외처리 함수를 이용하여 jsp와 mysql을 연동
  Class.forName("com.mysql.jdbc.Driver");             // mysql을 사용(JDBC)
  conn = DriverManager.getConnection(URL, USER, PASS); // 아이디, 비밀번호, 주소를 넣고 >연결
  stmt = conn.createStatement();
  rs = stmt.executeQuery(sql);// if문을 통해 검색한 내용이 저장된 sql은 rs변수에 저장
 
   while(rs.next()) {   //while 루프를 통해 검색이 완료된 테이블 내용을 모두 출력함
    
        out.print(rs.getString("name")+"\t");//gesString을 이용하여 검색한 내용 출력
        out.print(rs.getString("gu")+"\t");
        out.print(rs.getString("addr")+"\t");
        out.print(rs.getString("closed")+"\t");
        out.print(rs.getString("phone")+"\t");
        out.print(rs.getString("gpsx")+"\t");
        out.print(rs.getString("gpsy")+"\t");
 
     out.print("\n");
}
 
   pstmt = conn.prepareStatement(sqlid);        // prepareStatement  sql
   pstmt.setString(1,id);           //앞서 만들어 놓은 ipid테이블에 id와 검색어를 저장시킴
   pstmt.setString(2,search);
   pstmt.setString(3,request.getRemoteAddr());  //getRemoteAddr는 사용자의 ip를 추출하는 명령어
   pstmt.executeUpdate();
 
 
 }catch(SQLException e) {   //try문 종료
  e.getMessage();
 }
 finally {
  if(rs != null)try{rs.close();}catch(SQLException ex){}
  if(stmt != null)try{stmt.close();}catch(SQLException ex){}
  if(conn != null)try{conn.close();}catch(SQLException ex){}
 }
 
%></pre><br>

실행화면

처음 접속한 화면입니다. 검색어 입력창과 체크박스 란이 있고

그 밑에 현재 들어가져 있는 데이터들이 보이게끔 했습니다.

검색어 입력창입니다. 검색하고자 하는 주제를 체크박스에 체크하고 id와 검색어를 입력한 뒤

검색 버튼을 누릅니다.


검색버튼을 누르면 밑에 검색한 내용이 나오게 됩니다.

저는 LH를 검색해서 도서관명에 LH가 들어있는 모든 도서관 정보를 확인할 수 있습니다.


mysql을 통해 방금 검색한 id와 검색어 그리고 ip주소가 입력된 것을 확인할 수 있습니다.


사용한 url : http://data.seoul.go.kr/dataList/datasetView.do?infId=OA-2240&srvType=S&serviceKind=1&currentPageNo=1

출처 - 서울열린데이터광장

'jsp,spring,php' 카테고리의 다른 글

jdbc)테이블 내용 삽입 예제  (0) 2020.04.17
jdbc)테이블 조회 예제  (0) 2020.04.17
jsp)로그인 서비스 구현 - 2  (0) 2020.01.03
jsp)로그인 서비스 구현 - 1  (0) 2020.01.03
php 가위바위보 사이트  (0) 2019.01.25