클라이언트인 안드로이드 앱에서 데이터를 서버로 전송할때
안드로이드 웹뷰를 이용하면 간단하게 전송할 수 있다.
1) Main Activity -> WebView Activity
우선 클라이언트 앱에서 서버에 보낼 값을 웹뷰가 실행될 Activity에 전송한다.
Main Activity
TextView id = (TextView)findViewById(R.id.id); //TextVeiw 생성
i = new Intent(this, WebView.class); //WebView Activity를 실행할 Intent
i.putExtra("id", id.getText().toString); // Intent에 EditText에 입력된 값을 전달
WebView Activity
Intent i = getIntent();
String id = i.getStringExtra("id"); //MainActivity에서 보낸 값을 id에 저장
WebView web = (WebView)findViewById(R.id.webview01); //WebView 생성
web.getSettings().setJavaScriptEnabled(true); //WebView 자바스크립트 true
web.loadUrl("http://ip주소:8080/MyServer/member_join.jsp?id="+id);
//get방식으로 id값 웹서버에 전달
web.setVisibility(web.GONE);
finish();
//웹뷰를 보이지않게하고 값만 웹서버에 전달한다음 Activity를 종료해서 보여줄 필요없는
WebViewActivity를 화면에 나타나지 않게 한다.
*AndroidManifest.xml
<activity android:name=".WebView" /> //웹뷰 액티비티 추가
<uses-permission android:name="android.permission.INTERNET"/> //퍼미션 추가
2) WebViewActivity -> 웹서버 -> DB
웹뷰를 통해 전달한 값을 웹서버 페이지에서 받아서 DB에 접속한다.
근데 오라클만 쓰다 간만에 MySQL로 DB접속하려니 역시나 접속이 안되신다.. 웹서버 프로젝트 파일
에 mysql-connector-java-5.1.20-bin.jar 라이브러리에 추가하고..톰캣껏다 켰다..그리고
Class.forName("com.mysql.jdbc.Driver); 이걸로 JDBC 드라이버를 로딩하는 순간 이미 깊은 삽질의 시간으로 들어갔는데..
JDBC 드라이버가 jar파일일때는 Class.forName("org.gjt.mm.mysql.Driver"); 이렇게 쓴다
WebServer.jsp
<%
request.setCharacterEncoding("euc-kr");//파라미터값을 한글로 인코딩
String id = request.getParameter("id"); //파라미터값 id를 id에 저장
Class.forName("org.gjt.mm.mysql.Driver"); // 드라이버 로딩
Connection conn = null; //커넥션 생성
PreparedStatement pstmt = null;//PreparedStatement 생성
try{
String jdbcDriver = "jdbc:mysql://localhost:3306/데이터베이스이름?useUnicode=true&charaterEncoding=euc-kr";
String dbuser = "root";
String dbpass = "DBpassword";
String sql = "insert into 테이블 values(?)";
conn = DriverManager.getConnection(jdbcDriver, dbuser, dbpass); //DB 커넥션 생성
pstmt = conn.prepareStatement(sql); //PreparedStatement 생성
pstmt.setString(1,new String((id).getBytes("8859_1"),"utf-8");
//8859_1타입으로 읽은 값을 utf-8로 재해석해야지만 한글안깨지고 DB에 들어간다
pstmt.executeUpdate(); //쿼리실행
}}finally{
if(pstmt != null)try{pstmt.close();}catch(SQLException ex){}
if(conn != null)try{conn.close();}catch(SQLException ex){}
}
%>
'프로그램관련 > 안드로이드' 카테고리의 다른 글
안드로이드 앱에서 웹뷰로 데이터 전송 (0) | 2015.11.17 |
---|---|
안드로이드 View에 getTag(),setTag()사용하기 (0) | 2015.11.03 |
순서대로 처리되는 동적리시버 (0) | 2015.08.17 |
안드로이드 개발에 발을 들이다 (0) | 2015.05.04 |
지니모션-Geny motion 모바일 앱을 pc에서 실행 (1) | 2015.01.19 |
안드로이드 레이아웃 (0) | 2015.01.07 |
트랙백
댓글
'개발 > APP' 카테고리의 다른 글
안드로이드 6.0 (Marshmallow) 권한 획득하기! (0) | 2018.10.15 |
---|---|
안드로이드 권한 요청 (0) | 2018.10.15 |
웹앱 하이브리드앱의 앱스토어 통과 검수하기 위한 기준 (0) | 2018.10.15 |
안드로이드 발신, 수신 통화 모니터링하기 (0) | 2018.10.11 |
하이브리드 앱에서의 세션관리로그인 상태 유지 (0) | 2018.10.05 |