안드로이드와 JSP 간단한 통신하는 방법
프로그래밍2013. 1. 28. 21:15
안드로이드와 JSP 간단한 통신하는 방법
안녕하세요 황금너구리입니다.^^ 안드로이드에 관련된 내용 오랜만에 포스팅을 하고 있습니다. 프로그래밍을 접하면서 안드로이드와 JSP간에 서로 서로 연락을 취할 수 없는 방법을 생각을 하다가 바로 서로 간의 통신을 하는 방법을 찾아보았습니다.
JSP를 Tomcat으로 개인의 PC에서 구동을 시키고 안드로이드를 통해 가상 에뮬레이터 상 통신을 간단하게 하는 방법을 알려드리겠습니다. 하이브리드 앱 아니면 웹앱을 제작을 하시는 분들께 도움이 되실 것 같은 내용입니다.
안드로이드와 JSP간에 통신을 하기 위해서는 JSP 소스를 먼저 작성을 하여야 됩니다. 소스를 작성을 하시고 저장을 하시고 톰켓으로 작동을 해보시길 바랍니다.
androidtest.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset="UTF-8">
<title>안드로이드와 JSP간 통신</title>
<script>
function setMessage(arg) {
document.getElementById('textMessageFromApp').innerHTML = arg;
}
function sendMessage(msg){
window.hybrid.setMessage(msg);
}
</script>
</head>
<body>
<h1>여기는 JSP입니다.</h1>
<font size = "3">안드로이드와 JSP간의 통신</font>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset="UTF-8">
<title>안드로이드와 JSP간 통신</title>
<script>
function setMessage(arg) {
document.getElementById('textMessageFromApp').innerHTML = arg;
}
function sendMessage(msg){
window.hybrid.setMessage(msg);
}
</script>
</head>
<body>
<h1>여기는 JSP입니다.</h1>
<font size = "3">안드로이드와 JSP간의 통신</font>
<button type = "button" name = "exit" onclick = "javascript:sendMessage('exit');">종료하기</button>
</body>
</html>
</html>
※ 안드로이드와 JSP 간단한 통신방법 연관글
위의 소스를 텍스트문서에 작성하시고 위의 파일명으로 저장을 하시길 바랍니다. 저장을 하실 때 인코딩을 UTF-8로 저장하시는거 잊지 마세요. Tomcat으로 구동을 한 결과는 아래와 같습니다.
위의 처럼 정말로 간단하게 소스를 작성을 하였습니다. 위의 처럼 버튼이 하나 있는데 지금은 저 버튼은 동작을 하지 않습니다. 하지만 안드로이드 가상 에뮬레이터에서는 동작을 합니다.
안드로이드 소스도 공개해드리겠습니다. 마찬가지 간단하게 구성되어 있습니다.
안드로이드 main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
안드로이드 java 소스
package kr.dpu.Androidtest;
package kr.dpu.Androidtest;
import kr.dpu.Androidtest.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class AndroidtestActivity extends Activity {
WebView wv;
private final Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loadWeb("http://192.168.11.2:8088/test/androidtest.jsp");
} //본인의 PC아이피와 포트번호를 적으시고 jsp파일 적으시면 됩니다.
public class AndroidHandler {
public void setMessage(final String argv) {
handler.post(new Runnable() {
public void run() {
String msg = argv;
if(argv.equals("exit")) {
Append();
}
}
});
}
}
public void Append() {
WebView wv;
private final Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loadWeb("http://192.168.11.2:8088/test/androidtest.jsp");
} //본인의 PC아이피와 포트번호를 적으시고 jsp파일 적으시면 됩니다.
public class AndroidHandler {
public void setMessage(final String argv) {
handler.post(new Runnable() {
public void run() {
String msg = argv;
if(argv.equals("exit")) {
Append();
}
}
});
}
}
public void Append() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("종료하시겠습니까?")
.setCancelable(false)
.setPositiveButton("종료", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show();
}
builder.setMessage("종료하시겠습니까?")
.setCancelable(false)
.setPositiveButton("종료", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show();
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{}
if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO)
{}
}
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{}
if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO)
{}
}
private void loadWeb(String url) {
final Context myApp = this;
wv = (WebView)findViewById(R.id.webview);
wv.clearCache(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new AndroidHandler(), "hybrid");
wv.getSettings().setDomStorageEnabled(true);
wv.setWebChromeClient(new WebChromeClient() {
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
new AlertDialog.Builder(myApp)
.setIcon(R.drawable.ic_launcher)
.setTitle("확인!")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
};
});
wv.loadUrl(url);
wv.setWebViewClient(new HelloWebViewClient());
wv.setHorizontalScrollBarEnabled(false);
wv.setVerticalScrollBarEnabled(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
wv.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public class HelloWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoding(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
안드로이드 androidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.dpu.Androidtest"
android:versionCode="1"
android:versionName="1.0" >
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.dpu.Androidtest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".AndroidtestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".AndroidtestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</intent-filter>
</activity>
</application>
</manifest>
총 3가지의 소스로 구성이 되어 있습니다. 약간은 복잡하지만 한번 작성하여 보시길 바랍니다. 안드로이드와 직접적으로 통신을 간단하게 하는 방법은 저도 처음 시도를 해봅니다.
메세지 창에서 만약에 종료를 누르면 앱이 종료가 되고, 아니요를 누르게 된다면 종료가 되지 않습니다. 간단하게 안드로이드와 JSP간 통신을 하는 방법입니다.
약간만 방법만 달리 하셔도 좋은 프로그래밍을 하실 수 있습니다. 초보자분들이 참조하시기에 좋은 내용입니다. 여러 자료들을 찾으면서 제일 알려드리기 쉬운 간단한 방법인거 같아요.ㅎ 한번 작성을 해보실 분은 작성을 하셔서 동작을 시켜보시길 바래요. JSP파일을 웹서버에 올리시고 안드로이드도 가상에뮬레이터 상이 아닌 스마트폰에 넣어서 실행시켜보시길 바랍니다.ㅎ 뭔가 색다르실 거에요.^^!! 언제 파싱을 하는 방법도 알아보고 싶네요.
파싱하는 방법을 알게 되면 그 때 포스팅을 하겠습니다.
프로그래밍을 하시는 분들 고생이 많으시겠어요..ㅎ 힘내시길 바래요^^! 파이팅!
'프로그래밍' 카테고리의 다른 글
안드로이드 표 테이블 만들기 - 홈페이지 표와 비슷하게 만들기 (13) | 2013.05.10 |
---|---|
안드로이드 어플리케이션 종료 방법 (16) | 2013.04.02 |
JSP 달력 간단하게 만들어보기 (2) | 2013.02.01 |
알FTP로 웹호스팅에 접속을 쉽게 하자 (3) | 2013.01.30 |
CSS를 이용한 Button 만들기 (3) | 2013.01.29 |
JSP에서 javascript로 미리 이미지를 로드하기 (1) | 2013.01.25 |
MSSQL JDBC Driver 설치 및 jsp에서 mssql DB 연동하기 (7) | 2013.01.17 |
Java 개발툴 JDK 설치 및 환경설정 하기 (8) | 2013.01.16 |
JSP 프로그래밍을 위한 Tomcat 설치 및 시작하기 (4) | 2013.01.15 |
JSP 값 전달하는 방법 (6) | 2013.01.14 |
댓글()