03.HTTP协议之服务器实现
2015-04-20 13:40
316 查看
转载请标明出处:http://blog.csdn.net/u012637501
一、Java web(Servlet)开发
(1)Servlet简介
Servlet(Server+let)是在服务器上运行的小程序,具有独立于平台和协议的特性,可以生成动态的web页面,用于处理及响应客户端的请求,担当客户请求(web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
(2)Servlet类
Servlet实质上是个特殊的Java类,该类继承于Servley或其子类(如HttpServlet),Servlet用于处理和响应客户端的请求,Servlet提供了不同的方法用于响应客户端请求。通常客户端的请求只有GET和POST两种,Servlet为了响应这两种请求,只需重写doGet()和doPost()两个方法即可。
(3)MyEclipse中开发一个Servlet项目
第一步:安装MyEclipse
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java
Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。下载地址:http://www.xiazaiba.com/html/23858.html
第二步:MyEclipse中创建Servlet的配置
注意:Mapping URL设置的值为访问该Servlet的URL路径。
E:\Java Web\InfoSearch\src\...\login\LoginServlet.java
package com.jiangdongguo.login;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html"); //设置返回类型为网页形式
PrintWriter out = response.getWriter(); //输出
String name = request.getParameter("username"); //获取请求传入的参数-用户名信息
String psd = request.getParameter("psd"); // -密码
System.out.println("username="+name+"psd="+psd);
if("jiang".equals(name)&&"111".equals(psd)) //与服务器数据做对比,并返回响应信息
{
out.print(true);
//输出响应数据信息("true")给客户端
}
else
{
out.print(false); //输出响应数据信息("false")给客户端
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
总结:Servlet处理和响应客户端请求的过程
◆客户端发送请求至服务器端;
◆服务器将请求信息发送至Servlet;
◆Servlet生成响应内容并将其传给服务器,响应内容动态生成,通常取决于客户端的请求;
◆服务器将响应结果以指定的形式返回给客户端。
二、安装Tomcat服务器
Tomcat是一个免费的、开源的web应用服务器,它是一个轻量级应用服务器。在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java
web程序的首选。
步骤如下:
(1)下载apache-tomcat-7.0.61.exe:
http://tomcat.apache.org/download-70.cgi
(2)双击apache-tomcat-7.0.61.exe,查看端口号8080;
(3)启动服务器
方式一:双击tomcat图标
方式二:..\Tomcat 7.0\bin目录下双击Tomcat7
(4)在浏览器中输入:http://localhost:8080/,测试是否安装成功。
注意:安装和使用中需注意
(1)设置Tomcat的端口号:默认情况下,该端口为8080,如果需要设置,最好选一个1024以上的端口号。1024以内的端口大部分都被系统所用,以避免端口冲突;
(2)设置Tomcat管理员账户和密码,管理应用时需要登录;
(3)启动Tomcat:直接双击Tomcat安装路径下的bin路径的tomcat6.exe即可。重复启动Tomcat,控制台将会报错并直接退出,因为第二次启动时,端口已经被占用,必须关闭之前的Tomcat,才能启动。
注意:
可能很多人在配置java的环境变量时,觉得java_home很麻烦,就略去了,但是,在启动tomcat的时候问题就出来了,点击tomcat路径下任何一个.bat文件,都只是闪一下,这是由于java_home没有配置的缘故,正确配置了以后启动就没问题了;可以启动一个cmd窗口,然后去运行startup.bat文件,控制台就会报错,自己根据实际情况解决即可。
三、在Tomcat中部署Java Web应用
1.Java Web应用部署到Tomcat服务器
Java Web部署方式有多种,使用Tomcat安装目录下的conf文件夹下的Server.xml
(D:\Apache Software Foundation\Tomcat 7.0\conf)
文件进行部署。在该文件的倒数第四行即</host>标签之上,添加如下代码。
◆path:虚拟路径,启动Tomcat后,可通过http://localhost:8080/login/来访问该项目中的相关页面;
◆docBase:Servlet项目根目录所在路径,是本机上的一个绝对路径,即Java Web应用所存放的位置,需要定位到WebRoot目录下;
◆reloadable:设置为"true",表示修改Servlet文件后,不需要重启服务器就可以实现页面的同步更新。
2.测试是否部署成功
(1)启动Tomcat:双击bin目录下的Tomcat7.exe
(2)在Tomcat中部署Servlet应用,并启动MyEclipse中的Servlet项目(每次Servelet应用有改变时只需保存即可);
(3)在浏览器中输入:http://localhost:8080/,点击"Manager App"
◆输入账户、密码(在安装Tomcat时设置)
◆在Applications栏目,查看Path列是否包含"/login"(path=/login在部署Java web时设置),否则,说明部署不成功
◆点击"/login"进入web应用,浏览器中输入"http://localhost:8080/login/LoginServlet?username=jiangdongguo&psd=111"。如果网页界面显示"true/false",说明Java
web应用(Servlet项目)测试成功,可以进一步测试客户端是否能与服务器通信成功,Tomcat窗口会显示服务器接收到的数据,如下所示。如果网页界面无任何反应,Tomcat窗口没有任何显示,则Servlet项目有问题。
四.客户端(app)与服务器通信测试
1.测试步骤
(1)启动Tomcat,打开MyEclipse中的Servlet应用;
(2)在Eclipse中启动客户端app,输入请求数据,测试客户端与服务器是否能通信;
另外,如果客户端与服务器通信成功,Tomcat窗口也会显示客户端传送过来的数据。
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类对象,并执行相应的方法,在方法处理中,会返回相应的处理结果。最后将结果返回给客户端。
注意事项
◆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或网址;
◆需要在清单文件中添加访问网络的权限;
◆不能直接访问网络,需进行相应处理,建议采用消息传递机制;
3.开发过程中遇到的问题
在测试客户端与服务器通信的过程中,客户端无法获得服务器响应的"true"或"false"数据,Tomcat窗口也没有显示客户端传送过来的数据信息,说明客户端与服务器通信失败。通过在客户端的Http请求与获取响应数据模块,System.out.println(e.getMessege())打印异常信息"Connection Http://10.0.2.2:8080/login/LoginServlet refused",即客户端访问10.0.2.2:8080/login/LoginServlet被拒绝,原因在于没有在客户端app的清单文件(AndroidMainfest.xml)中增加互联网访问权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
相关文章推荐
- HTTP协议的介绍,Web服务器配置,虚拟主机的配置,如何用SSL实现HTTPS。
- 03 tomcat服务器与Http协议
- 利用socket自己实现基于HTTP协议的Web服务器
- Nginx网络epoll多进程系列:应用层协议实现系列(二)——HTTP服务器之http协议解析
- Tomcat服务器的模拟实现学习解析Http协议、反射、xml解析等
- java实现的利用HTTP协议原理实现的GET/POST请求的web服务器
- QTE下通过Http协议以同步方式与Web服务器通信的实现
- Android版Web服务器实现(一)HTTP协议请求头解析
- 应用层协议实现系列(二)——HTTP服务器之http协议解析
- 应用层协议实现系列(二)——HTTP服务器之http协议解析
- Android操作HTTP实现与服务器通信(详细易懂)
- 关于HttpWebRequest发生服务器协议冲突的解决办法
- Linux网络编程一步一步学-自己编写一个HTTP协议的目录浏览和文件下载服务器
- Linux网络编程一步一步学-编写一个HTTP协议的目录浏览和文件下载服务器
- Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传
- 基于HTTP协议的C/S架构中服务器如何获取用户身份
- http协议的svn服务器搭建(apache+subversion)
- 用C#语言实现http协议下的多线程文件传输
- 用C“.NET研究”#实现HTTP协议下的多线程文件传输
- 在http协议中传输二进制的数据--base64实现