第11章 Android客户端与服务器交互
本章知识结构图
高校信息查询平台
高校信息查询平台
HTTP协议 HTTP协议即超文本传输协议(Hypertext Transfer Protocol),是建立在TCP协议之上的一种应用,它是一种基于请求/响应的通信协议,每次连接只做一次请求/响应,服务器响应客户端请求后,就不会不会记录客户端的信息,更不会维护客户端的状态,因此HTTP又称为无状态的通信协议。 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”、“无状态”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
HTTP协议 1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST等,每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,因而通信速度很快。 2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 3、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 4、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
GET和POST的区别 Get将需要传递的数据按照“键=值”对的形式,添加到URL的后面,并且两者使用“?”连接,而多个变量之间使用“&”连接;Post是将传递的数据放在请求的数据体中,不会在URL中显示; Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前,Post的所有操作对用户来说都是不可见的; Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post。
Apache HttpClient API HttpClient:是HTTP客户端的接口,该接口封装了执行Http请求所需要的各种对象,这些对象可以处理cookie、授权、连接管理以及其他一些特性。HttpClient的线程安全依赖于具体的客户端的实现和配置。 HttpGet:该类采用GET方式发送HTTP请求,通常将请求的URL作为参数传给该类的构造方法; HttpPost:该类采用POST方式发送HTTP请求,通常将请求的URL作为参数传给该类的构造方法; HttpResponse:该接口封装了HTTP的响应信息,通过调用相应方法可以获取HTTP响应信息,例如获取响应状态、响应内容等。 HttpEntity:该类封装了HTTP信息,通过该类可以获取HTTP请求或响应的内容、长度、类型、编码方式等信息,HttpEntity对象可以通过Http消息发送和接收,既可以存在于请求消息中,也可以存在于响应消息中。
HttpClient执行过程(GET请求)
HttpClient执行过程(POST请求)
Apache HttpClient API 使用HttpClient访问Http资源的步骤: 1、创建HttpGet或HttpPost对象,将需请求的URL通过构造方法传入HttpGet或HttpPost对象。 2、使用DefaultHttpClient类的execute()方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。 3、通过HttpResponse接口的getEntity()方法返回响应信息,并进行相应的处理。 注意:如果使用HttpPost提交HTTP POST请求,还需要使用HttpPost类的setEntity()方法设置请求参数。
Tomcat服务器 Tomcat服务器是一个免费的、开源的Web应用服务器,它是一个轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java Web程序的首选。 安装和使用中需注意: 1、设置Tomcat的端口号:默认情况下,该端口为8080,如果需要设置,最好选一个1024以上的端口号,1024以内的端口大部分都被系统所用,以避免端口冲突。 2、设置Tomcat管理员账户和密码,管理应用时需登录; 3、启动Tomcat:直接双击Tomcat安装路径下的bin路径中的tomcat6.exe即可。重复启动Tomcat,控制台将会报错并直接退出,因为第二次启动时,端口已经被占用,必须关闭之前的Tomcat,才能启动。
Servlet介绍 Servlet(Server+let)是在服务器上运行的小程序,具有独立于平台和协议的特性,可以生成动态的Web页面,用于处理及响应客户端的请求,担当客户请求(Web浏览器或其它HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet实质上是个特殊的Java类,该类继承于Servlet或其子类(例如HttpServlet),Servlet用于处理和响应客户端的请求,Servlet提供了不同的方法用于响应客户端请求。通常客户端的请求只有GET和POST两种,Servlet为了响应这两种请求,只需重写doGet()和doPost()两个方法即可。
Servlet介绍 Servlet处理和响应客户端请求的过程: (1)客户端发送请求至服务器端; (4)服务器将响应结果以指定的形式返回给客户端;
Servlet介绍 MyEclipse中创建Servlet的配置 注意:Mapping URL设置的值为访问该Servlet的URL路径。
Servlet介绍 在Tomcat中部署Java Web应用 Java Web部署方式有多种,使用Tomcat安装目录下的conf文件夹下的Server.xml文件进行部署。在该文件的倒数第四行即</host>标签之上,添加如下代码。 <Context path="/login" docBase="D:\myEclipse\InfoSearchServer\WebRoot" debug="0" reloadable= "true"> </Context> path:虚拟路径,启动Tomcat后,可通过http://localhost:8080/login/来访问该项目中的相关页面; docBase:项目根目录所在路径,是本机上的一个绝对路径,即Java Web应用所存放的位置,需要定位到WebRoot目录下; reloadable:设置为"true",表示修改Servlet文件后,不需要重启服务器就可以实现页面的同步更新。
Servlet介绍 当客户端发送http://localhost:8080/login/LoginServlet请 求时,服务器是如何处理和响应的呢? 1、根据Tomcat的Server.xml文件,查看login虚拟路径所对应的物理路径,即docBase所对应的值; 2、找到该物理路径下的web.xml文件,找到包含<url-pattern> /LoginServlet</url- pattern>的<Servlet-mapping>; 3、根据<servlet-name>LoginServlet</servlet-name>找到对应的<servlet-class>的值,获取类名iet.jxufe.cn.server.LoginServlet ; 4、根据反射机制,创建iet.jxufe.cn.server.LoginServlet类对象,并执行相应的方法,在方法处理中,会返回相应的处理结果。最后将结果返回给客户端。
Android客户端访问服务器 注意事项: 1、Tomcat已启动,并且Java Web程序已部署到Tomcat服务器中; 2、客户端访问服务端的URL要正确,在此为http://10.0.2.2:8080/login/LoginServlet而不是Java Web中的http://localhost:8080/login/LoginServlet。因为模拟机通过127.0.0.1访问的是模拟器本身。在模拟器上访问安装模拟器的电脑,需要使用android内置的IP:10.0.2.2。10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名,如果是网络服务器,可直接写相应的IP或网址; 3、需要在清单文件中添加访问网络的权限; 4、不能直接访问网络,需进行相应处理,建议采用消息传递机制;
Android客户端访问服务器 访问MySQL数据库的一般步骤 1、添加数据库相应的jar包到Java Web应用下,放在WebRoot\WEB-INF\lib文件夹下; 2、加载驱动、获取数据库连接、捕获异常处理; String url = “jdbc:mysql://localhost:3306/数据库名"; Class.forName(“com.mysql.jdbc.Driver”);//加载驱动 conn = DriverManager.getConnection(url, “用户名”,”密码”); 3、编写相应的增删查改的SQL语句; 4、执行操作获取结果(PrepareStatement、ResultSet);
整体流程图 高校信息查询平台
高校信息查询平台 服务器端文档结构图 客户端文档结构图
客户端与服务器端交互(调用关系) 高校信息查询平台
注册功能程序流程图 高校信息查询平台
文件上传功能 高校信息查询平台
文件上传功能程序流程图 高校信息查询平台
资料下载功能 注册功能
资料下载功能程序流程图 高校信息查询平台
信息查询功能 高校信息查询平台
信息查询功能 高校信息查询平台