导航:首页 > 操作系统 > androidjavaweb交互

androidjavaweb交互

发布时间:2022-06-26 08:25:28

‘壹’ javaweb与安卓数据交互

你好推荐你看邵刚老师的javaWeb教程,在51cto就有,另外包括ssh的部分也可以看看。

‘贰’ android与Java web交互可以通过动态调用方法吗

ndViewById(R.id.webview);

//启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js对象名");

在Activity中定义一个要被js调用的方法、src为js传递过来的参数、如果没有不传也可以的哈

public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {

‘叁’ 怎样实现android和javaweb数据交互

要想运行网页上的js脚本,webview必须设置支持Javas cript。
Java代码
1mWebview.getSettings().setJavas criptEnabled(true);
然后是设置webview要加载的网页:
web的网页:webView.loadUrl("http://www.google.com");
本地的网页:webView.loadUrl("file:///android_asset/XX.html"); //本地的存放在:assets文件夹
webview做完基本的初始化后我们还要要给它,加进一个回调的代理类Javas criptInterface,并给它一个调用的名称:ncp
Java代码
1mWebView.addJavas criptInterface(new Javas criptInterface(),"ncp");
Javas criptInterface可以是一个普通的Java类,类实现的方法,均可被js回调:
Java代码
final class Javas criptInterface {
public int callOnJs() {
return 1000;
}
public void callOnJs2(String mode) {
//TODO
}
}
Java要调用js的方法,只需知道js的方法名称即可:
Java代码
1mWebView.loadUrl("javas cript:onSaveCallback()");
js 这边就更简单:
Js代码
window.onload = function(){
document.getElementById('btn_1').addEventListener('click', onBtnClick, false);
var _int_value = window.ncp.callOnJs();
alert("get int from java:" + _int_value );
}
function onBtnClick() {
window.ncp.callOnJs2("click");
}
Java和js交互有以下一些特点:
1.Java 调用 js 里面的函数,速度并不令人满意,大概一次一两百毫秒吧,如果要做交互性很强的事情,这种速度会让人疯掉的。而反过来就不一样了, js 去调 java 的方法,速度很快,基本上 40-50 毫秒一次。所以尽量用 js 调用 java 方法,而不是 java 去调用 js 函数。
2.Java 调用 js 的函数,没有返回值,而 Js 调用 java 方法,可以有返回值。返回值可以是基本类型、字符串,也可以是对象。如果是字符串,有个很讨厌的问题,第 3 点我会讲的。如果是对象,这个对象会被转换为 js 的对象,直接可以访问里面的方法。但是我不推荐 java 返回给 js 的是对象,除非是必须。因为 js 收到 java 返回的对象,会产生一些交换对象,而如果这些对象的数量增加到了 500 或 600 以上,程序就会出问题。所以尽量返回基本数据类型或者字符串。
3.Js 调用 Java 的方法,返回值如果是字符串,你会发现这个字符串是 native 的,不能对它进行一些修改操作,比如想对它 substr ,取不到。怎么解决呢?转成 locale 的。使用 toLocaleString() 函数就可以了。不过这个函数的速度并不快,转化的字符串如果很多,将会很耗费时间。

‘肆’ 在Android上怎样实现JAVA和JS交互

Android中java与js交互是通过webView来交互的。

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>

‘伍’ android与WEB服务器交互时,如何保证在同一个会话Session中通信

最近在开发项目的过程中,遇到android与web服务器要在同一session下通信的问题。在解决问题前先回顾下Session与Cookie:Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。Session可以用Cookie来实现,也可以用URL回写的机制来实现。Cookie和Session有以下明显的不同点:1)Cookie将状态保存在客户端,Session将状态保存在服务器端;2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是不同用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;4)就安全性来说:当你访问一个使用session 的站点,同时在自己机器上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。Session机制Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。Session的实现方式1) 使用Cookie来实现服务器给每个Session分配一个唯一的JSESSIONID,并通过Cookie发送给客户端。当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session。2 )使用URL回显来实现URL回写是指服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,这样客户端点击任何一个链接都会把JSESSIONID带给服务器。 如果直接在浏览器中输入url来请求资源,Session是匹配不到的。Tomcat对 Session的实现,是一开始同时使用Cookie和URL回写机制,如果发现客户端支持Cookie,就继续使用Cookie,停止使用URL回写。如果发现Cookie被禁用,就一直使用URL回写。jsp开发处理到Session的时候,对页面中的链接记得使用 response.encodeURL() 。回顾完Session和Cookie,我们来说说为什么手机端与服务器交互没有实现在同一session下?1)原因很简单,就是因为android手机端在访问web服务器时,没有给http请求头部设置sessionID,而使用web浏览器作为客户端访问服务器时,在客户端每次发起请求的时候,都会将交互中的sessionID:JSESSIONID设置在Cookie头中携带过去,服务器根据这个sessionID获取对应的Session,而不是重新创建一个新Session(除了这个Session失效)。以java.net.HttpURLConnection发起请求为例:获取Cookie: URL url = new URL(requrl); HttpURLConnection con= (HttpURLConnection) url.openConnection(); // 取得sessionid. String cookieval = con.getHeaderField("set-cookie"); String sessionid; if(cookieval != null) { sessionid = cookieval.substring(0, cookieval.indexOf(";")); } //sessionid值格式:JSESSIONID=,是键值对,不是单指值发送设置cookie: URL url = new URL(requrl); HttpURLConnectioncon= (HttpURLConnection) url.openConnection();

‘陆’ Android客户端访问Java Web项目,两种不同的浏览器之间交互,用户的信息如何存储,session失效如何知道

浏览器之间的交互?这是什么需求?用户信息你可以存在cookie,不建议,或者存在session,你需要弄清楚他们的区别,session是保存在服务器上的,你自己看看区别,弄懂原理再来做。求给分

‘柒’ android与java web交互问题

客户端每次请求的时候,都发送一个标记。服务器端缓存标记,如果与上一次不一样,停止操作。

‘捌’ android与javaweb交互,怎么记住登录状态

用这个:SharedPreference
给个例子吧

import assets.webkit.*;
import android.R.raw;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity {
AutoCompleteTextView cardNumAuto;
EditText passwordET;
Button logBT;
CheckBox savePasswordCB;
SharedPreferences sp;
String cardNumStr;
String passwordStr;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
cardNumAuto = (AutoCompleteTextView) findViewById(R.id.cardNumAuto);

passwordET = (EditText) findViewById(R.id.passwordET);

logBT = (Button) findViewById(R.id.logBT);

sp = this.getSharedPreferences("passwordFile", MODE_PRIVATE);

savePasswordCB = (CheckBox) findViewById(R.id.savePasswordCB);

savePasswordCB.setChecked(true);// 默认为记住密码

cardNumAuto.setThreshold(1);// 输入1个字母就开始自动提示

passwordET.setInputType(InputType.TYPE_CLASS_TEXT

| InputType.TYPE_TEXT_VARIATION_PASSWORD);

// 隐藏密码为InputType.TYPE_TEXT_VARIATION_PASSWORD,也就是0x81

// 显示密码为InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,也就是0x91

cardNumAuto.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before,

int count) {

String[] allUserName = new String[sp.getAll().size()];// sp.getAll().size()返回的是有多少个键值对

allUserName = sp.getAll().keySet().toArray(new String[0]);

// sp.getAll()返回一张hash map

// keySet()得到的是a set of the keys.

// hash map是由key-value组成的

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

LoginActivity.this,

android.R.layout.simple_dropdown_item_1line,

allUserName);

cardNumAuto.setAdapter(adapter);// 设置数据适配器

}

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

//

}

public void afterTextChanged(Editable s) {

passwordET.setText(sp.getString(cardNumAuto.getText()

.toString(), ""));// 自动输入密码

}

});

// 登陆

logBT.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

cardNumStr = cardNumAuto.getText().toString();

passwordStr = passwordET.getText().toString();
boolean islogin = q.isLogin();
if (条件,错误条件) {

Toast.makeText(LoginActivity.this, "密码错误,请重新输入",

Toast.LENGTH_SHORT).show();

} else {

if (savePasswordCB.isChecked()) {// 登陆成功才保存密码

sp.edit().putString(cardNumStr, passwordStr).commit();

}

Toast.makeText(LoginActivity.this, "登陆成功,正在获取用户数据……",

Toast.LENGTH_SHORT).show();
// 跳转到另一个Activity
Intent intent = new Intent(LoginActivity.this, UIADemoActivity.class);
startActivity(intent);
// do something

}
}catch(Exception ex)
{
System.out.println(ex.toString());
}

}

});

}

}

之前做的一个登陆效果,应该能帮到你,按自己需求稍微改改就能用
效果是:第一次输入正确的用户名和密码后,用户名和密码被存储,然后在以后输入的时候,当输入用户名的第一个字母时开始监听,有,则在输入上方提示完整的用户名,点击后自动补全用户名和密码。。

‘玖’ android webview实现java与javascript的交互需要什么权限

在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互。android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码,这样我们可以实现很多原来做不了的功能,比如点击网页上的电话号码后,手机自动拨打电话,点击网页中的笑话,自动发送短信等.

‘拾’ java web项目怎么向android项目传值

可使用Android自带的httpClient实现Android与java web之间的数据的交互。
具体实现代码:
1. GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

2. POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"));//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

阅读全文

与androidjavaweb交互相关的资料

热点内容
oraclelinux安装目录 浏览:133
安卓系统可以安装编译器吗 浏览:570
javajson实体类 浏览:690
板加密钢筋是否取代原钢筋 浏览:66
学习编程的思路 浏览:230
app易语言post怎么学 浏览:965
地梁的箍筋加密区位置 浏览:302
二分法排序程序及编译结果 浏览:679
日语命令形和禁止型 浏览:285
安装软件用管理员解压 浏览:505
编译原理代码块 浏览:400
小孩可以用压缩面膜吗 浏览:14
锥形倒角怎么计算法 浏览:882
java合并链表 浏览:508
pic单片机编译器 浏览:806
丽水四轴加工中心编程 浏览:691
国产系统怎么解压 浏览:553
战双程序员 浏览:483
him触摸编程软件 浏览:931
植物大战僵尸存档怎么转移安卓 浏览:852