01.HTTP协议介绍

转载请标明出处:http://blog.csdn.net/u012637501
一、Android客户端与服务器交互
1.HTTP协议简介
    HTTP协议即 超文本传输协议( Hypertext Transfer Protocol),是建立在 TCP协议之上的一种应用,它是基于 请求/响应的通信协议,每次连接只做一次请求/响应,服务器响应客户端请求后,就不会记录客户端的信息,更 不会维护客户端的状态,因此HTTP又称为 无状态的通信协议
    由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种 "短连接""无状态",要保持客户端程序的在线状态,需要 不断地向服务器发起连接请求。通常的做法是即使不需要获得任何数据,客户端也保持 每隔一段固定的时间向服务器发送一次"保持连接"的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端"在线"。若服务器长时间无法收到客户端的请求,则认为客户端" 下线",若客户端长时间无法收到服务器的回复,则认为 网络已经断开
2.HTTP协议特点
(1)简单快速
    客户端向服务器请求服务时,只需 传送请求方法路径请求方法常用的有 GET、HEAD、POST等, 每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,因而通信速度很快。
(2)灵活
    HTTP允许 传输任何类型的数据对象。正在传输的类型由 Content-Type加以标记。
(3)无连接
    无连接的含义是限制 每次连接处理一个请求。服务器处理完客户的请求并收到客户的应答后,即 断开连接。采用这种方式,可以 节省传输时间
(4)无状态
    HTTP协议是 无状态协议。无状态是指 协议对于事物处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另外,在服务器不需要先前信息时,它的应答就较快。
3.GET和POST的区别
(1)传递数据形式
◆GET请求方法:是 将需要传递的数据按照 "键=值"对的形式, 添加到URL的后面,并且 两者使用"?"连接,而 多个变量之间使用“&”连接;
◆POST请求方法:是将传递的数据放在请求的数据体不会在URL中显示
(2)安全性
◆GET请求方法: GET是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL存放至 日志文件中,然后放在某个地方,这样就可能会有一些 隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前;
◆POST请求方法:Post的所有操作 对用户来说都是不可见,因此安全性较高。
(3)传输性能
◆GET传输的 数据量小,这主要是因为 受URL长度受限制;
◆POST可以 传输大量的数据,所以在上传文件只能使用POST。
4.Apache HttpClient API
(1) HttpClient:该类是 HTTP客户端的接口,该接口 封装 执行Http请求 所需要的各种对象,这些对象可以处理cookie、授权、连接管理以及其他一些特性。HttpClient的线程安全依赖于具体的客户端的实现和配置。
(2) HttpGet:该类 采用GET方式 发送 HTTP请求,通常将请求的URL作为参数 传给该类的构造方法;
(3) HttpPost:该类采 用POST方式 发送 HTTP请求,通常将请求的 URL作为参数传给该类的构造方法;
(4) HttpResponse:该接口 封装了HTTP的响应信息,通过调用相应方法可以 获取HTTP响应信息,例如获取响应状态、响应内容等。
(5) HttpEntity:该类 封装了HTTP信息,通过该类可以获取 HTTP请求响应的内容、长度、类型、编码方式等信息, HttpEntity对象可以通过Http消息发送和接收,既可以存在于请求消息中,也可以存在于响应消息中。

二、使用HttpClient访问Http资源步骤
1.创建HttpGet或HttpPost对象,将需请求的URL通过构造方法传入HttpGet或HttpPost对象;
2.使用DefaultHttpClient类execute()方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象;
3.通过 HttpResponse接口getEntity()方法 返回响应信息( HttpEntity对像,其内为接收的响应信息 ),并进行相应处理。 注意:如果使用Http提交HTTP POST请求,还需要使用HttpPost类的setEntity()方法设置请求参数。
→HttpClient执行过程(GET请求)

①创建 HttpClient对象,表示客户端对象;
②根据URL创建 HttpGet对象,其内容包含一个Get请求;
③调用客户端对象的execute(HttpGet对象),将HttpGet对象包含的Get请求传送给服务器,
    返回一个 HttpResponse对象(包含服务器的响应信息)
④调用HttpResponse对象的getEntity()方法, 其包含的响应信息封装到实体HttpEntity对象中;
⑤调用HttpEntity实体的getContent()方法,获得响应信息的输入流,最后读取输入流中的内容并以字符串的形式返回。

→HttpClient执行过程(POST请求)
(1)准备Post请求实体
    HttpClient httpClient=new DefaultClient();                                    //①创建客户端对象
    String url="http://baidu.com";                                                    //②指定请求路径URL
    NameValuePair pair1=new BasicNameValuePair("键1",值1);      //③创建参数列表(传递的数据)
    NameValuePair pair2=new BasicNameValuePair("键2",值2)            //每个参数以键值对的形式保存在NameValuePair中
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(pair1);
    params.add(pair2);
     HttpEntity httpEntity=new UrlEncodedFormEntity(params,"gbk");//④根据参数创建封装发送信息的HttpEntity对象
     HttpPost httpPost=new HttpPost(url); //⑤将HttpEntity对象赋值给HttpPost对象(Post请求信息实体)
     httpPost.setEntity(httpEntity);
(2)调用客户端对象execute()方法发送Post请求,并同时获得服务器响应信息(HttpResponse)
    HttpReponse httpResponse=httpClient.execute(httpPost);
(3)从HttpResponse对象中获取封装了响应信息的HttpEntity对象,并获取对应的输入流
    HttpEntity httpEntity=httpResponse.getEntity();    //获取响应信息实体
    InputStream is=httpEntity.getContent();                //获取实体中响应信息对应的输入流

三、Tomcat服务器
1.Tomcat服务器简介
    Tomcat是一个 免费的、开源的web应用服务器,它是一个 轻量级应用服务器。在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java web程序的首选。
2.安装和使用中需注意
(1) 设置Tomcat的端口号:默认情况下,该端口为8080,如果需要设置,最好选一个1024以上的端口号。1024以内的端口大部分都被系统所用,以避免端口冲突;
(2) 设置Tomcat管理员账户和密码,管理应用时需要登录;
(3) 启动Tomcat:直接双击Tomcat安装路径下的bin路径的tomcat6.exe即可。重复启动Tomcat,控制台将会报错并直接退出,因为第二次启动时,端口已经被占用,必须关闭之前的Tomcat,才能启动。
3.在Tomcat中部署Java Web应用
(1)Java Web部署
    Java Web部署方式有多种,使用Tomcat安装目录下的 conf文件夹下的 Server.xml文件进行部署。在该文件的倒数第四行即</host>标签之上,添加如下代码。
    ◆ path虚拟路径,启动Tomcat后,可通过 http://localhost:8080/login/来访问该项目中的相关页面;               
    ◆ docBase项目根目录所在路径,是本机上的一个绝对路径,即Java Web应用所存放的位置,需要定位到WebRoot目录下;  
    ◆ reloadable:设置为"true",表示修改Servlet文件后,不需要重启服务器就可以实现页面的同步更新
(2)服务器处理和响应流程
    当客户端发送 http://localhost:8080/login/LoginServlet请求时,服务器是如何处理和响应的呢? 
    第一步:根据Tomcat的 Server.xml文件, 查看login虚拟路径所对应的物理路径,即docBase所对应的值;   
    第二步:找到该物理路径下的 web.xml文件,找到包含 <url-pattern> /LoginServlet</url- pattern>的<Servlet-mapping>;    
    第三步:根据 <servlet-name>LoginServlet</servlet-name>找到对应的<servlet-class>的值,获取类名iet.jxufe.cn.server.LoginServlet ;    
    第四步:根据反射机制,创建 iet.jxufe.cn.server.LoginServlet类对象,并执行相应的方法,在方法处理中,会返回相应的处理结果。最后将结果返回给客户端。
(3)注意事项
◆Tomcat已启动,并且Java Web程序已部署到Tomcat服务器中;     
◆客户端访问服务端的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或网址;     
◆需要在清单文件中添加访问网络的权限;     
◆不能直接访问网络,需进行相应处理,建议采用消息传递机制;

四、Servlet中间件
1.Servlet简介
    Servlet(Server+let)是在 服务器上运行的小程序,具有独立于平台和协议的特性, 可以生成动态的web页面,用于处理及响应客户端的请求,担当客户请求(web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的 中间层
2.Servlet类
    Servlet实质上是个特殊的Java类,该类继承于Servley或其子类(如 HttpServlet),Servlet用于处理和响应客户端的请求, Servlet提供了不同的方法用于响应客户端请求。通常客户端的请求只有GET和POST两种,Servlet为了响应这两种请求,只需 重写doGet()和doPost()两个方法即可。
3.Servlet处理和响应客户端请求的过程
(1)客户端 发送请求至服务器端;
(2) 服务器将请求信息发送至Servlet;
(3)Servlet 生成响应内容并将其传给服务器,响应内容动态生成,通常取决于客户端的请求;
(4)服务器将响应结果以指定的形式返回给客户端。
4.MyEclipse中创建Servlet的配置

注意:Mapping URL设置的值为访问该Servlet的URL路径。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值