首先在服务器端,采用的是SSH框架,struts

2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts

2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:

首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下:

result

result

手机端的代码如下:

首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:

package com.lyc; public class Cache {

private User User; public Cache(){ } private static class CacheHolder{

private static final Cache

INSTANCE=new Cache();

}

public static Cache getInstance(){

return

CacheHolder.INSTANCE;

}

public User getUser(){

return User;

} public void setUser(User User){

this.User=User;

}

}

接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:

package com.lyc;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.json.JSONException;

import org.json.JSONObject;

public class BaseProtocol {

private StringBuilder sb=new

StringBuilder(); private

org.apache.http.client.HttpClient httpClient;

private HttpPost httpRequest;

private HttpResponse

response; private

List nameValuePair =

new ArrayList();

BaseProtocol(){ httpClient =

new DefaultHttpClient();

} protected void pack(String url) throws

Exception{

httpClient =new

DefaultHttpClient();

httpRequest = new

HttpPost(url); httpRequest.setEntity(new

UrlEncodedFormEntity(nameValuePair));

response=httpClient.execute(httpRequest);

} protected void parse() throws Exception{

//TODO状态处理500200 if(response.getStatusLine().getStatusCode()==200){ BufferedReader

bufferedReader2=new BufferedReader( new

InputStreamReader(response.getEntity().getContent()));

for(String

s=bufferedReader2.readLine(); s!=null;

s=bufferedReader2 .readLine()){

sb.append(s);

} } } public void addNameValuePair(String key,String

value){ nameValuePair.add(new

BasicNameValuePair(key,value));

} public JSONObject getJSON() throws

JSONException{ return new

JSONObject(sb.toString());

} }

接着是登录协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:

importorg.json.JSONObject;

importcom.jclick.bean.User;

publicclassLoginProtocolextendsBaseProtocol{

privatefinalstaticStringURL="http://localhost:8080/test/login";

publicbooleancheckLogin(Userusr){

try{

pack(URL);

parse();

JSONObjectobj=this.getJSON();

if(obj.getString("result").equals("failed")){

returnfalse;

}else{

returntrue;

}

}catch(Exceptione){

e.printStackTrace();

returnfalse;

}

}

}

然后是User实体类,主要用于保存用户信息:

publicclassUser{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

}

最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:

privatevoidcheckedData(){

username=((EditText)findViewById(R.id.username)).getText().toString();

password=((EditText)findViewById(R.id.password)).getText().toString();

Useruser=newUser();

user.setUsername(username);

user.setPassword(password);

LoginProtocollogin=newLoginProtocol();

booleanresult=login.checkLogin(user);

if(result){SpiderCache.getInstance().setUserSession(user);

Toast.makeText(getApplicationContext(),"登录成功",1000).show();

Intentintent=newIntent();

intent.setClass(LoginActivity.this,WelcomeActivity.class);

startActivity(intent);

}else{Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();

}

}

strut2服务器与android交互数据,用Android搭建客户端 手机和服务器交互开发相关推荐

  1. android搭建客户端,用Android搭建客户端 手机和服务器交互开发实例

    笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的. 首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插 ...

  2. android 摄像头 数据大,Android摄像机:数据意图返回空

    简单的相机应用程序避免了零意图问题 -本回复中包含的所有更改代码:接近Android教程 我花了很多时间在这个问题上,所以我决定建立一个帐户,并与你分享我的成果. 官方Android教程"简 ...

  3. bootstrap-table真实交互数据_博思远略:基于AI交互场景数据构建用户画像的几点思考...

    什么是用户,就是那些藏在每台电脑.手机.pad.智能watch屏幕背后的使用产品或服务恰如你我--有血有肉.有情绪.有想法.有阅历.有逻辑.有思考.固守某种习惯且独一无二.形形色色的人. 用户画像本质 ...

  4. web服务器是如何维护,我们如何维护Web客户端和Web服务器之间的会话?

    以下是维护Web客户端和Web服务器之间的会话的一些选项- 饼干 Web服务器可以将唯一的会话ID作为cookie分配给每个Web客户端,对于来自客户端的后续请求,可以使用接收到的cookie来识别它 ...

  5. android listview 数据同步,android中ListView数据刷新时的同步方法

    本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...

  6. android单片机数据存储,Android与单片机的信息传输方案

    源码传送门 前言 本篇文章将围绕App与单片机的蓝牙通信来说说lz最近进行开发的一些方案与思考 此文分为三部分: 单片机的PWM与串口通信 Android的蓝牙开发 单片机与Android App的通 ...

  7. android界面数据存储,Android应用开发基础之数据存储和界面展现(二)

    Android应用开发基础之数据存储和界面展现(二) 常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRight ...

  8. android之数据存储,Android数据存储之File

    Android使用与其他平台类似的基于磁盘文件系统(disk-based file systems),上篇文章通过SharedPerference来进行数据存储,这次可以使用File.File 对象非 ...

  9. android如何数据刷新,android Data Binding(02 数据刷新)

    android Data Binding(01 入门篇) https://www.jianshu.com/p/7a9ddf4f1301 android Data Binding(02 数据刷新) ht ...

最新文章

  1. 为EditText输入框加上提示信息
  2. 最简单的日历控件“星期几”变为“几”
  3. Latex字体加粗命令备忘
  4. 敏捷开发用户故事系列之二:如何面向客户价值编写故事
  5. 变分法理解2——基本方法
  6. Win7系统显示文件扩展名的方法
  7. Java Web --HTML(尚硅谷2022版Javaweb)
  8. 傻傻分不清?云存储、云计算与分布式存储、分布式计算是一回事吗?
  9. 电子商务顾客评论的热点话题分析(转)
  10. Welcome Here
  11. 【C++】map、set、multimap、multiset的介绍和使用
  12. Web安全-口令破解
  13. (C语言)有一篇文章,共有3行文字,每行有80个字符。要求统计出其中英文大写字母,小写字母,数字,空格,其他字符的个数
  14. 周云的FLASH小游戏开发教室
  15. 在校大学生如果连「校招」都不知道,那大学就白读了
  16. Dos命令简单操作入门操作
  17. 【DFT leakage 频谱泄露现象】
  18. c语言用average函数计算平均成绩,在excel中-Excel中,求平均值用Average函数;它可分用快捷键求平均值...
  19. jQuery使用addClass添加样式不生效
  20. java包的导入方法

热门文章

  1. Spring事务管理3----声明式事务管理(1)
  2. angular-创建自定义的指令
  3. 网络编程中的关键问题总结
  4. android ORM框架LitePal 封装SQLite
  5. 集成服务入门(实验9)日志记录和邮件通知
  6. Mysql5.6-DDL是否加锁
  7. iOS 4.2 SDK安装
  8. String和StringBuilder
  9. hive 修改分桶数 分桶表_Hive中的分桶
  10. 典型方法_华北电力大学 赵振兵等: 输电线路典型金具视觉检测方法研究