绪论:

目前大部分android的APP都具有联网功能,并且能够与服务器进行数据交互,本文采用tomcat作为服务器以实现数据交互,信息交互的前提是android设备和服务器在同一个局域网内。

android设计:

        这边需要先说明一点,自从android某个版本之后(好像是3.0?)android的网络请求必须放在线程中。了解这一点之后我们开始android设计。

1.添加权限:

<uses-permission android:name="android.permission.INTERNET"/>

2.开始网络请求的语句:

我的整个工程只有一个按钮,按下表示发送网络请求,以下代码都放在onClick的事件响应函数下:

final String URL="http://172.20.10.2:8123/WebProject_war/Servlet";//根据自己的项目需要修改new Thread(new Runnable() {public void run(){String msg = "";try {URL url = new URL(URL);//生成一个URL实例,指向我们刚才设定的地址URL//openConnection()方法只是创建了一个HttpURLConnection实例,并不是真正连接,在连接之前可以设置一些属性HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST"); //设置请求方式为postconn.setReadTimeout(5000);//设置超时信息conn.setConnectTimeout(5000);//设置超时信息conn.setDoInput(true);//设置输入流,允许输入conn.setDoOutput(true);//设置输出流,允许输出conn.setUseCaches(false);//设置POST请求方式不能够使用缓存//定义我们要传给servlet的参数,格式好像一定要xxx=xxx,代表键值对,如果有多组,要加一个&,                                                                                         //如“cmd1=version&cmd2=value”String data = "cmd=version";//获取输出流,其实在这之前还应该有一个操作:conn.connect();意思为建立HttpURLConnection连接,只不过//getOutputStream()方法会隐含进行连接,所以不调用connect()也可以建立连接OutputStream out = conn.getOutputStream();//把data里的数据以字节的形式写入out流中out.write(data.getBytes());//刷新,将数据缓冲区中的数据全部输出,并清空缓冲区out.flush();//关闭输出流并释放与流相关的资源out.close();//这里是将conn.getInputStream中的数据包装在字符流的缓冲流reader中//这里值得一说的是:无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数//里面才正式发出去,同时getInputStream返回的值就是servlet返回的数据BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line = null;if ((line = reader.readLine()) != null) {msg = line;//如果数据比较多的话要把if换成while,循环体代码也要小改一下,由于我当时只是测试,就没改}conn.disconnect();} catch (IOException e) {e.printStackTrace();}}}).start();

到此可能整个android已经差不多,需要留意的是final String URL="http://172.20.10.2:8123/WebProject_war/Servlet";的路径怎么确定,我待会儿会讲。

web设计:

        我使用的是IDEA进行web设计,eclipse的目录结构应该也差不多,前提为这两个软件都配置了tomcat,关于如何配置的教程读者百度自行搜索,很多。

1.先创建一个Servlet类:Servlet.class

2.类的内容

由于android通信方式是POST,所以我们只需要编写doPost就行了

public class Servlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stub//避免使用super.doPost(request,response)PrintWriter out = response.getWriter();String cmd=request.getParameter("cmd");if(cmd.compareTo("version")==0) {out.print("OK");out.flush();out.close();}else{out.print("No");out.flush();out.close();}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stub}
}

在这里HttpServlet等很多东西可能会报错cannot resolve symbol HttpServlet,出现这个问题的原因是缺少servlet-api.jar包造成的,我实在不想去别的网站抄袭过来了,就直接附上一个链接:https://blog.csdn.net/just_now_and_future/article/details/81235318

如果JSP页面也有相关的JavaWeb对象,则还要寻找jsp-api.jar;如果只有Servlet,则只选择servlet-api.jar。我写的是没界面的,所以目前没碰到需要添加jsp-api.jar的

到这一步已经完成了web的编写,界面设计暂时不需要,但是我们要在web.xml目录下加上

<servlet><display-name>Servlet</display-name><servlet-name>Servlet</servlet-name><servlet-class>myClass.Servlet</servlet-class>
</servlet><servlet-mapping><servlet-name>Servlet</servlet-name><url-pattern>/Servlet</url-pattern>
</servlet-mapping>

完成以上那些就差把项目部署到tomcat了:部署到服务器需要先生成war包,IDEA或者eclipse各有各的方法。我就还是厚着脸皮叫读者自行百度,自己省点事,(*^__^*) 嘻嘻

生成了war包后,从你web工程的out--artifacts下面寻找war包,应该还要进一层文件夹才能找到,看我以下图片的目录可知。

把寻找到的war包复制,放到tomcat的webapps文件夹下。然后startup启动tomcat,你就会发现war包自行解压,之后你就可以外部访问自己写的web了。这里回到刚刚说的final String URL="http://172.20.10.2:8123/WebProject_war/Servlet,这个网址的构成为ip+端口号+解压出来的文件夹名+在web.xml中配置的那个名字(这个构成我是猜的,反正我自己按照这样是成功了)

这样就完成了android和tomcat最简单的通信,我搜索到的教程好像都是没有提到war的,我不知道是我操作过程不对还是怎么的,我绕了很大一圈才通过war访问到,如果哪个读者实现了不用war就能访问的方法,请求告知,谢谢。

android与tomcat数据交互相关推荐

  1. Android与服务器端数据交互(转)

    上一节中我们通过http协议,采用HttpClient向服务器端action请求数据.当然调用服务器端方法获取数据并不止这一种.WebService也可以为我们提供所需数据,那么什么是webServi ...

  2. Android与服务器端数据交互(基于SOAP协议整合android+webservice)

    转自:http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务 ...

  3. Android与服务器端数据交互(基于SAOP协议整合android+webservice)

    上一节中我们通过http协议,采用HttpClient向服务器端action请求数据.当然调用服务器端方法获取数据并不止这一种.WebService也可以为我们提供所需数据, 那么什么是webSer ...

  4. Android 本地tomcat服务器接收处理手机上传的数据之案例演示

    上一篇:Android 本地tomcat服务器接收处理手机上传的数据之环境搭建     本篇基于上一篇搭建的服务器端环境,具体介绍Android真机上传数据到tomcat服务器的交互过程   场景:A ...

  5. Android开发之Service与Activity数据交互(源代码分享)

    Service想要与Activity进行数据交互,首先Activity先得绑定Service.bound service是service 的实现,它允许其他应用程序绑定到它并与之交互.要提供bound ...

  6. Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)

    上一篇文章简单介绍了Android的回调机制的使用,这一篇博文将重点介绍Fragment碎片与activity的数据交互,fragment在Android开发中起着至关重要的作用,通过官方Androi ...

  7. 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...

    今天讲下在Surfaceview中如何实现两个或者多个Activity之间的切换与数据交互,为了更形象一些我做了一个游戏登录界面的demo,其中对于输入界面的布局这些我也是随意写了下,主要是实现功能并 ...

  8. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结

    Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先 ...

  9. Android客户端与后台服务器的数据交互

    Android客户端与服务器的数据交互 这是今年7月份时在一家公司实训时自己做的一个小项目,仅仅是一个简单的模拟Android客户端与服务器的数据交互,中间会有串口通信,以及利用JDBC连接Mysql ...

最新文章

  1. html js json数据解析后台数据包_如何将html解析为有关联的json数据?htmlparser2模块使用详解...
  2. 综合应用WPF/WCF/WF/LINQ之三:采用用代码创建的方式实现CheckListBox的CustomControl
  3. golang操作mysql
  4. Qt配置GUI程序控制台输出
  5. 【实验】配置802.1x远端认证
  6. idea中Gitlab项目导入导出
  7. 汇编语言(第2版)2011040201
  8. Apache POI读取Excel
  9. 潜意识的力量:潜意识开发四大关键
  10. 利用C++不使用递归,循环和goto,打印1到100 的某一答案分析
  11. 桶排序/基数排序(Radix Sort)
  12. 利用U盘装CentOS6.4和将CentOS6.4安装到U盘
  13. python中pip下载过慢问题
  14. 个人php源码,php个人发卡平台源码 v1.4 免费版
  15. win 10 安装nginx
  16. c语言判断按下键盘,找出键盘上当前按下的键
  17. 2019年伯克利大学 CS294-112《深度强化学习》第4讲:强化学习简介(笔记)
  18. 在线打开.mpp文件工具备忘录
  19. 鸿蒙判后而成翻译,我在洪荒一百四十六石猴出世(1/3)胜神州。东胜神洲,海外有一国土,名曰傲来-金羚文学...
  20. 唐灵州吕氏夫人墓志的史证和书证价值

热门文章

  1. java集合迭代器使用
  2. AS5600使用简介
  3. STM32驱动AS5600磁性旋转位置传感器模块
  4. javascript后面部分
  5. android导入项目错误处理
  6. 获取pkl中数据_把数据写入pkl文件,读取pkl文件
  7. 大洋蛋...今天好累啊...倒数344....
  8. 响应式编程以及反应式编程框架Reactor3的简单介绍
  9. 阿里云——云数据库管理与数据迁移
  10. SDUT 2138 图结构练习——BFSDFS——判断可达性