일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Tomcat
- JSP
- VirtualBox 오류
- ios공유하기
- android 저장
- 플러터폰트
- android 내부 저장
- Context 쉽게
- flutterfont
- 플러터폰트적용하기
- android 데이터 저장
- 프러퍼티
- 중소기업전세대출연장심사
- AndroidStudio
- ios share
- Android
- SQL분할
- ng-show
- 공유기능
- adb
- Deveopment
- 폰트적용하기
- TEXT속성
- 전세대출연장
- 스위프트
- 행나누기
- DB연동
- ngshow
- DB
- ios
- Today
- Total
beomboo
[JSP] GET방식으로 서버DB에 데이터 저장하기 본문
설명에 앞서 아래와 같이 제 개발환경을 알려드리겠습니다.
- 서버
Cafe24 Tomcat JSP광호스팅 비즈니스 - 데이터 베이스
MySQL 5.5.x UTF-8 - 데이터 베이스 프로그램
HeidiSQL 10.2.0.5599 - JSP 작성툴
Eclipse Remote system - 송·수신 클라이언트
Android Studio로 디버깅한 앱 또는 릴리즈앱
저는 주로 클라이언트에서 GET 방식으로 서버내의 jsp에 파라미터를 보내 원하는 데이터를
가져오는 형식을 주로 사용합니다.
1. GET방식
- URL에 변수(데이터)를 포함시켜 요청
- 보안에 취약
2. 구현
저는 어플리케이션에서 서버 데이터베이스에 접근해서 데이터를 조회/추가/수정/삭제 할때에 사용하고 있으며
아래와 같이 AsyncTask 방식을 이용해 jsp에 파라미터를 전달합니다.
AsyncTask에 대한 설명은 아래 하이퍼링크를 통해 학습해주시면 될 것 같습니다.
https://itmining.tistory.com/7
- Android Studio
class test extends AsyncTask<String, String, String> {
StringBuffer sBuffer = new StringBuffer();
String xml = null;
String val1, val2;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@SuppressWarnings("deprecation")
protected String doInBackground(String... args) {
try {
String urlAddr = "https://www.test.kr/test.jsp?param1=" + val1 + "¶m2=" + val2;
URL url = new URL(urlAddr);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
if (conn != null) {
conn.setConnectTimeout(20000);
conn.setUseCaches(false);
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 서버에서 읽어오기 위한 스트림 객체
InputStreamReader isr = new InputStreamReader(
conn.getInputStream());
// 줄단위로 읽어오기 위해 BufferReader로 감싼다.
BufferedReader br = new BufferedReader(isr);
// 반복문 돌면서읽어오기
while (true) {
String line = br.readLine();
if (line == null) {
break;
}
sBuffer.append(line);
}
br.close();
conn.disconnect();
}
}
xml = sBuffer.toString(); // 결과값 변수에 담기
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
protected void onPostExecute(String file_url) {
}
}
'https://www.test.kr/test.jsp?param1=[변수1]¶m2=[변수2]'
위와 같은 형태로 Android Studio 에서는 HttpURLConnection을 이용해서 전달을 하면됩니다.
여기서 test.jsp에 대해 param1 과 param2 라는 파라미터명은 jsp에서도 동일해야합니다.
예를들어 Intent를 통해 PutExtra 할경우 ("파라미터명",변수) 형태와 비슷하게 이해하시면 됩니다.
- JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/데이터베이스명", "데이터베이스 아이디" , "데이터베이스 패스워드");
ResultSet rs = null;
PreparedStatement stmt = null;
boolean flagStatus = false;
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
application.log("S_NUM: "+S_NUM+" LAST_DATE: "+LAST_DATE);
try{
String sql = "SELECT * FROM 테이블명 WHERE A ="+ param1 + " AND B="+ param2;
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
if(rs.next()){
out.println("TRUE");
}else{
out.println("FALSE");
}
}catch(SQLException sqlex){
application.log("sqlex="+sqlex.getMessage());
}catch(Exception ex){
application.log("ex="+ex.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(Exception ex){}
}
%>
(1) JSP 에서는 우선 SQL.Connection 을 통해 localhost 또는 외부 데이터 베이스에 대한 연동을 해주셔야 합니다.
번거로우실지 모르겠지만 Android에서 외부 데이터베이스로 바로 연동하는건 안된다고 하기에
서버를 걸쳐서 주고 받는방식(PHP,JSP,HTML)을 이용해야합니다.
(2) 쿼리 실행을 위해 Statement, ResultSet을 import한 후 쿼리를 돌려주시면 됩니다.
rs = stmt.executeQuery();
if(rs.next()){
out.println("TRUE");
}else{
out.println("FALSE");
}
(3) 로그출력
jsp에서 application.log(); 를 통해 catalina log를 txt형태로 확인 가능합니다.
위 소스코드는 SQL 쿼리 문자열안에 있는 쿼리에 대하여 실행결과가 존재할경우 HTML에 "TRUE" 라는 문자열을
뿌려주도록 간단하게 구현을 해보았습니다.
Android Studio 소스코드 중 아래 메서드에서 xml을 출력할 경우 "TRUE"라는 값을 확인 가능합니다.
protected void onPostExecute(String file_url) {}
감사합니다.
'기타' 카테고리의 다른 글
중소기업전세대출 연장심사 (0) | 2022.10.13 |
---|---|
[JAVA&JSP] 현재 시간 출력하기 (0) | 2019.06.25 |
[JSP] JDBC 프로그래밍 파악하기 (0) | 2019.06.25 |