Skip to content

jsp 기반의 내 위치 기반 공공 와이파이 정보를 제공하는 웹서비스 개발

Notifications You must be signed in to change notification settings

eod940/PublicWifi

Repository files navigation

Public Wifi Service

🔎 프로젝트의 내용과 목적

사용자 위치 기반 공공 와이파이 정보를 제공하는 웹서비스 개발

본 프로젝트는 서울시 공공와이파이 서비스 위치 정보(Open API) 자원을 끌어와서 데이터를 마이그레이션 한 뒤, 사용자의 위치를 기반으로 데이터를 출력하고자 한다.

본 프로젝트의 목적은 Java와 Web, DB의 개념과 이를 통한 응용을 통하여 Java, JSP, SQLite의 동작을 배우고자 한다. 뿐만 아니라 타 시스템 호출(Open API)을 호출하는 문제 해결 능력을 키우고자 한다.

기간: 23년 6월 21일 ~ 23년 7월 10일

💡 Stacks

Static Badge Java8 Static Badge Sqlite Static Badge Jsp Static Badge gradle

version: 
    open jdk 1.8.0_371
    sqlite 3.40.1
    tomcat 9.0.22
    jsp 2.3
    gradle 8.0

👶 역할

👍 이대영

👍 요구사항 분석

  • 서울시 공공 와이파이 정보를 포함하는 테이블을 설계 후, 각 조건에 맞는 기능을 제공한다.
  1. 서울시 공공와이파이 서비스 API 요청
  2. 근처 Wifi 정보 보기 기능 실행
    • 위경도 좌표 기준으로 거리 계산 (km 기준)
    • 공공와이파이 위치와 사용자의 위치를 이용해 가장 가까운 위치를 기준으로 사용자에게 정보 제공
  3. 북마크, 히스토리 기능
    • CRUD 기능 구현
  4. 와이파이 기능
    • 상세보기 기능 구현

☑️ 코드 패키지 구조

  • 앱 위치 main/.../publicwifi/v1
.
├── main
│   ├── generated
│   ├── java
│   │   └── org
│   │       ├── example
│   │       │   └── Main.java
│   │       └── publicwifi
│   │           └── v1
│   │               ├── communication
│   │               │   └── ApiCom.java
│   │               ├── dao
│   │               │   ├── BookmarkDAO.java
│   │               │   ├── HistoryDAO.java
│   │               │   └── PublicWifiDAO.java
│   │               ├── dto
│   │               │   ├── BookmarkDTO.java
│   │               │   ├── HistoryDTO.java
│   │               │   └── PublicWifiDTO.java
│   │               ├── others
│   │               │   ├── Distance.java
│   │               │   └── Pagenation.java
│   │               ├── repository
│   │               │   └── PublicWifi.java
│   │               └── servlet
│   │                   ├── MainServlet.java
│   │                   ├── ViewServlet.java
│   │                   ├── bookmark
│   │                   │   ├── AddToBookmarkServlet.java
│   │                   │   ├── CheckDelServlet.java
│   │                   │   ├── CheckEditServlet.java
│   │                   │   ├── CreateBookmarkServlet.java
│   │                   │   ├── DeleteBookmarkServlet.java
│   │                   │   ├── EditBookmarkServlet.java
│   │                   │   ├── GroupBookmarkServlet.java
│   │                   │   ├── InsertListBookmarkServlet.java
│   │                   │   ├── ListBookmarkServlet.java
│   │                   │   ├── MakeBookmarkServlet.java
│   │                   │   ├── SubmitBookmarkServlet.java
│   │                   │   └── ViewBookmarkGroupServlet.java
│   │                   ├── history
│   │                   │   ├── CreateHistoryServlet.java
│   │                   │   ├── DeleteHistoryServlet.java
│   │                   │   └── GetHistoryServlet.java
│   │                   └── wifi
│   │                       ├── CreateWifiServlet.java
│   │                       ├── DeleteWifiServlet.java
│   │                       ├── DetailWifiServlet.java
│   │                       ├── DropWifiServlet.java
│   │                       └── GetWifiServlet.java
│   ├── resources
│   └── webapp
│       ├── WEB-INF
│       │   ├── static
│       │   │   └── custom.js
│       │   ├── views
│       │   │   ├── bookmark-add-list-submit.jsp
│       │   │   ├── bookmark-add-submit.jsp
│       │   │   ├── bookmark-del-submit.jsp
│       │   │   ├── bookmark-edit-submit.jsp
│       │   │   ├── bookmark-group-add.jsp
│       │   │   ├── bookmark-group-del.jsp
│       │   │   ├── bookmark-group-edit.jsp
│       │   │   ├── bookmark-group.jsp
│       │   │   ├── bookmark-list.jsp
│       │   │   ├── detail.jsp
│       │   │   ├── history.jsp
│       │   │   ├── load-wifi.jsp
│       │   │   └── main.jsp
│       │   └── web.xml
│       └── index.jsp
└── test
    ├── generated_tests
    ├── java
    │   ├── DBTest.java
    │   ├── DMLTest.java
    │   ├── GetTest.java
    │   ├── InsertTest.java
    │   ├── JsonTest.java
    │   └── jsonTest
    │       ├── PagenationTest.java
    │       ├── Person.java
    │       └── Wifi.java
    └── resources

앱 설계 흐름도

flowchart TD
   A[fa:fa-computer Client] <-->|URL, foward| B

   subgraph ide1 [PublicWifi Server]
      B((Servlet)) <-.->|historyDTO| D[history DAO]
      B <-.->|publicWifiDTO| E[public_wifi DAO]
      B <-.->|bookmarkDTO| F[bookmark DAO]

      D <-.->|historyDTO| db[(fa:fa-database DB)]
      E <-.->|publicWifiDTO| db
      F <-.->|bookmarkDTO| db
   end

   B <-->|URL, JSON|G[서울시 공공와이파이]
Loading

ERD


publicwifi_erd

서울시 공공와이파이 Api 가져오기


api_가져오기

  • GetWifiServelt 에서 api 호출을 위한 url 생성 후 json 값을 받아줍니다.
  • 받아온 json 값은 gson library를 이용해 public_wifi 테이블에 맞게 파싱합니다.
  • 받아온 값은 PublicWifiDTO에 넣어진 뒤 DB 해당 테이블에 insert됩니다.

위치 가져오기


location_가져오기

  • 내 위치 가져오기 버튼을 누르면 javaScript가 동작합니다.
  • 스크립트 파일을 분리해서 관리하려 했지만 이미 많은 jsp 파일들을 복사해 놓은 상태였다. (시간도 없고 게을러서)
  • css 파일도 마찬가지로 시간이 부족했다.

History 보기


history_보기

  • 근처 WIFI 정보 보기 버튼을 누르면 ViewServlet이 동작합니다.
    • Get 방식으로 입력된 좌표 쿼리를 날립니다.
    • 받은 좌표 값을 기준으로 저장된 와이파이 정보를 Select하고, history 테이블에 좌표와 현재시간을 저장합니다.

Wifi 상세정보 보기


detail_가져오기

Bookmark 보기


bookmark_관리

bookmark insert

bookmark_edit

  • 북마크관련 기능을 누르면 각 기능에 맞는 BookmarkServlet으로 요청이 들어갑니다.
  • 북마크는 CRUD(생성, 읽기, 수정, 삭제) 기능이 모두 구현되어 있습니다.
    • 북마크 수정시 bookmark 테이블의 edited_at 컬럼에 현재시간이 추가됩니다.

About

jsp 기반의 내 위치 기반 공공 와이파이 정보를 제공하는 웹서비스 개발

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published