当前位置: 首页 > 科技观察

HTTP协议与Tomcat服务器

时间:2023-03-12 19:37:00 科技观察

Http协议&ServletHttp协议协议双方在进行交互通信时所遵循的规范和规则是什么。http协议是网络上的客户端和服务器在执行http请求时所遵循的一种规范。其实就是规定了客户端访问服务器时要带什么,服务器返回数据时要带什么。1.0版请求数据。服务器返回后,连接将断开。1.1请求数据。服务器返回后,连接仍会保持。除非服务器|客户端已关闭。有一定的时间限制。如果连接为空,稍后将断开连接。演示客户端如何与服务器通信。在地址栏输入网址回车,或者正常注册时点击注册按钮,浏览器会显示一些东西。那么浏览器和服务器在后台是如何通信的。他们传输什么数据。安装抓包工具HttpWatch(IE插件)打开tomcat。输入localhost:8080打开首页,在首页找到Example这个词。6.x和7.x的文档页面不一样,但是只要找到example就可以找到example工程。选择servletexample--->RequestParameter然后点击RequestParameters的Execute超链接执行tomcatexample,然后查看浏览器与tomcat服务器的连接详情。Http请求数据解释请求数据包含三部分:请求行,请求头,请求Body请求行POST/examples/servlets/servlet/RequestParamExampleHTTP/1.1POST:请求方式,post方式提交数据/examples/servlets/servlet/RequestParamExample请求的地址路径就是要访问的地方。HTTP/1.1协议版本请求头Accept:application/x-ms-application,image/jpeg,application/xaml+xml,image/gif,image/pjpeg,application/x-ms-xbap,/Referer:http://localhost:8080/examples/servlets/servlet/RequestParamExampleAccept-Language:zh-CNUser-Agent:Mozilla/4.0(兼容;MSIE8.0;WindowsNT6.1;WOW64;Trident/4.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)Content-Type:application/x-www-form-urlencodedAccept-Encoding:gzip,deflateHost:localhost:8080Content-Length:31Connection:Keep-AliveCache-Control:no-cacheAccept:客户端向服务器表明我可以支持什么类型的数据。Referer:真实请求的地址路径,完整路径Accept-Language:支持的语言格式User-Agent:用户代理向服务器表明当前访问的客户端信息。Content-Type:提交的数据类型。Accept-Encoding:gzip、deflate:urlencoding编码的表单数据压缩算法。Host:主机地址Content-Length:数据长度Connection:Keep-Alive保持连接Cache-Control:缓存操作请求体浏览器发送给服务器的数据实际呈现key=value,如果有多个数据,则使用&firstname=zhang&lastname=sansanHttp响应数据分析请求数据包含三部分:响应行、响应头、响应体HTTP/1.1200OKServer:Apache-Coyote/1.1Content-Type:text/html;charset=ISO-8859-1Content-Length:673Date:Fri,17Feb201702:53:02GMT...这里还有很多数据...响应行HTTP/1.1200OK协议版本状态码让我们互动这次到最后一段代码的结果是什么。200:成功,正常处理,获取数据。403:forbiddenRefused404:NotFound500:服务器异常OK对应前面的状态码ResponseheaderServer:是什么类型的服务器。TomcatContent-Type:服务器返回给客户端的内容类型。Content-Length:返回数据的长度。日期:沟通的日期和回复的时间。Get和Post请求的区别。Post以流的方式写入数据,因此对数据没有大小限制。数据以流的形式写入,不会显示在地址栏上。现在一般使用POSTget向服务器提交数据,可以携带的数据有限,1kb大小会拼接地址栏后面的数据,存在安全隐患。一般当数据从服务端获取,客户端不需要提交以上数据时,可以在http协议中使用GETWeb资源,它指定了请求和响应的双方,客户端和服务端。与网络相关的资源。静态资源有两大类html,js,css动态资源servlet/jspServlet什么是servlet?其实它是一个java程序,运行在我们的web服务器上,用来接收和响应来自客户端的http请求。更多的是用动态资源完成的。当然静态资源也需要用到servlet,不过Tomcat中已经定义了一个DefaultServletHelloServlet。你得写一个web项目,有一个服务器。测试运行Web项目配置Servlet,目的:告诉服务器我们的应用有这样的servlet。在webContent/WEB-INF/web.xml中写入如下内容。新建一个类,实现Servlet接口HelloServletcom.itheima.servlet.HelloServletHelloServlet/a3.在地址栏输入http://localhost:8080/项目名称/aServlet执行过程Servlet一般写法Servlet(接口)||GenericServlet||HttpServlet(使用Forprocessinghttprequests)定义一个继承HttpServlet的类,覆盖doGet和doPostServlet的生命周期。生命周期方法从创建到销毁一段时间被调用。init方法在创建servlet实例时执行此方法。一个servlet只会被初始化一次,init方法也只会被执行一次。默认情况下,只有在第一次访问servlet时才会创建实例。只要客户端发出请求,服务方法就会执行此方法。该方法可以执行多次。一个请求对应一个服务方法调用。destroy方法servlet销毁时,会执行该方法。1.该项目从tomcat中删除。2.tomcat正常关闭时,shutdown.batdoGet和doPost不被认为是生命周期方法。所谓生命周期方法是指从对象创建到销毁必须执行的方法,但这两个方法不一定要执行。让Servlet预先创建一个实例。默认情况下,只有在第一次访问servlet时才执行init方法。有时,我们可能需要在这个方法中进行一些初始化工作,甚至是做一些耗时的逻辑。那么这个时候第一次访问可能会在init方法中停留时间过长。那么有没有办法提前一点这个初始化的时间。配置时,使用load-on-startup元素指定,给定的数字越小,启动时间越早。一般不写负数,从2开始。>2/servlet>ServletConfigServlet配置,通过这个对象,可以获取servlet配置时的一些信息。先说写的时候怎么用,***有什么用。//1。获取专门用于配置servlet信息的servlet配置对象ServletConfigconfig=getServletConfig();//获取配置servlet中servlet-name的文本内容StringservletName=config.getServletName();System.out.println("servletName="+servletName);//2.可以获得特定参数。Stringaddress=config.getInitParameter("address");System.out.println("address="+address);//3.获取所有参数名Enumerationnames=config.getInitParameterNames();//遍历出所有参数名while(names.hasMoreElements()){Stringkey=(String)names.nextElement();Stringvalue=config.getInitParameter(key);System.out.println("key==="+key+"value="+value);}为什么需要这个ServletConfig以后我们自己开发的一些应用会用到一些技术或者一些代码,但是我们将不会。但是有人写了。它的代码放在它自己的servlet类中。碰巧这个servlet需要一个数字或变量值。但是这个值不能再固定了。所以要求使用这个servlet的公司,在注册servlet的时候,必须在web.xml中声明init-params,在开发中很少用到。刚才的实验,希望基础好的或者有兴趣的同学可以回去自己做。总结Http协议1.基本了解请求和响应的数据内容Requestline,requestheader,requestbody响应行,responseheader,responsebody2.Get和Post的区别3.使用HttpWacht抓包看http请求背后的细节。Servlet【要点】1、Servletinit的生命周期默认在一个对象创建时调用一次,也可以配置让它提前多次load-on-startupservice,一次请求对应一个servicedestory。销毁时从服务器移除或正常关闭服务器2.ServletConfig获取配置信息,params3.会使用一个简单的servlet写一个类,实现接口Servlet配置Servlet会访问Setvlet