zoukankan      html  css  js  c++  java
  • http协议

    HTTP请求信息:

    请求的组成部分:

    1.请求行:由3个标记方法组成,请求方法,请求URLHTTP版本,用空格分隔

    2.请求头域:有关键字/值对组成,每行一对,关键字和值用冒号分开。

    3.空行:最后一个请求头标之后是一个空行

    4.请求数据:使用Post传送数据,最长使用的是Content-TypeContent-length头标

    HTTP响应信息:

    响应信息的组成部分:

    1.状态行:HTTP版本,响应代码和响应描述

    2.响应头标:像请求头标一样,他们指出服务器的功能,标识响应数据细节

    3.空行:最后一个响应头标之后是一个空行

    4.响应数据:HTML文档等

    http是一种协议,那么它是有状态的还是无状态的呢?

    HTTP无状态:浏览器和服务器之间不需要建立持久的联系,例如:上网看新闻,我打开了一个网页,发送了一次请求,给了我响应,但是并没有记录我看过新闻,这就是无状态

    HTTP有状态:浏览器和服务器之间建立了持久的联系,也可以是一段时间的联系,例如,我到网上买东西,我把一件东西放到购物车中,记录我放入购物车里的东西,当我下次登录的时候还会看到购物车里的东西。这就是有状态。

    HTTP请求方式:

    (1)GET:客户程序通过这种请求方式,访问服务器上的一个文档,并由服务器把文档发送给客户程序,存储数据量小,不安全,传输快,地址栏长度有限制,最多2kb,编码格式不支持中文,ISO 8859-1

    http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

    http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

    http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

    http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

    (1)POST:客户程序通过这种方式向服务器发送大量信息,在HTTP请求中除了包含要访问的文档的URL,还包括大量的请求正文,会包含HTTP表单数据,存储量大,安全,传输慢,地址栏长度在IE中最多为2G,编码格式为对应的网页的编码格式

    (1)HEAD

    (2)PUT

    (3)DELETE

    (4)OPTIONS

    (5)TRACE

    状态码:

    1**:信息提示,表示临时的响应

    2**:响应成功,表示服务器成功的接收到客户端的请求

    3**:重定向

    4**:客户端错误,表明客户端可能出现问题

    5**:服务器错误,表明服务器由于遇到某种错误而不能响应客户端请求

    常见的状态码:

    200:响应成功

    302:临时重定向

    401:未经授权

    400:错误的请求,客户发送的HTTP请求不正确

    404:文件不存在,在服务器上没有客户要访问的文档(不允许请求的方法)

    405:服务器不支持客户的请求

    500:服务器内部错误

    501:服务器不支持能够满足请求的功能

    503:服务器不可用

    URLURI的区别:(绝对路径和相对路径的区别)

    URL:统一资源定位符(Uniform  Resource Locator,用于完整的描述Inteernet上网页和其他资源的地址的一种标识方法

         组成:协议+服务器地址(端口)+具体资源路径,如果端口号是该协议的标准端口号,可以省略端口号

    例:hhtp://www.soccer.org.8080/laggue/spring200/html

    URI:统一资源标识符(Uniform  Resource Identifier,相对于URL是指资源相对于当前页面的地址,它包含从当前页面指向目标页面位置的路径

    3种写法:(1.同一目录下只需要输入连接的文件名

             2.上一级目录在目录名和文件名前加“../

            (3).下一级目录输入目录名和文件名之间用“/”隔开

    常见的端口号:21ftp   80http    8080:tomcat   mysql:3306  1521:oracle

    环境变量:

    Path:指定机器中javacjava的路径,到jdkbin路径

    Classpath:寻找servlet相关所在的路径,到jdklib下的servlet-api.jar

    Java_home:启动时需要找到jvm,到jdk

    为了确保tomcat正常启动,必须配置java_home,其他两个可以没有,三个变量都配置的目的:为了正常开发web项目应用程序,并且能够发布访问web应用程序。

    启动Tomcat: E:姚璐Javaapache-tomcat-6.0.36instartup.bat

    关闭Tomcat: E:姚璐Javaapache-tomcat-6.0.36inshutdown.bat

    Servlet的作用:

    读取客户发送的所有数据,,查询HTTP请求中包含的任何其他请求信息,处理数据并生成结果,设置合适的HTTP响应参数,将响应信息回送给客户端

    Javax.servlet包:

    接口:ServletConfig    ServeltContext     RequestDispatcher  Servlet   ServletRequest   ServletResponse   

    类:GenericServlet

    Javax.servlet.http包:

    类:HttpServlet   继承GenericServlet

    接口:HttpServletRequest  继承ServletRequest

          HttpServletResponse  继承ServletResponse

    Servlet常用武器:

    (1).请求对象:ServletRequestHttpServletRequest,获取来自客户端的请求信息

    (2).响应对象:ServletResponseHttpServletResponse,生成响应结果

    (3).Servlet配置对象ServletConfig,当容器初始化一个Servlet对象时会向servlet提供一个ServletConfig对象,通过该对象获取初始化参数信息以及ServletContext对象

    (4).Servlet上下文对象,ServletContext,访问容器当前web应用提供的各种资源

    Servlet运行在Servlet容器中,其生命周期由容器(如:Tomcat)来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init( )service( )destroy( )等方法来完成。

    init(ServletConfig config):初始化Servlet对象,容器在创建好Servlet对象后就调用

    serviceServletRequest req,ServletResponse res):响应客户请求,当容器接收到客户端要求访问特定的Servlet对象时就会调用

    destroy():释放Servlet对象占用的资源,当servlet对象结束生命周期时,容器就会调用(服务器重启或者web项目重新加载时调用)

    getServletConfig():返回ServletConfig对象,,在该对象中包含了servlet初始化信息

    通过下图进一步理解Servlet的生命周期:

    当客户端一个请求到来时,tomcat首先根据请求的URL得到相应的servlet,然后调用该servlet的service()方法,并根据是get还是post请求调用doget和dopost方法,这两个方法的输出作为响应内容发送给客户端。当我们要关闭tomcat时,tomcat在退出前,还要负责释放servlet所释放的资源。

    Servlet中实现输出html页面

    需要通过参数response来作出响应,可以通过HttpServletResponse中的方法来实现

    PrintWriter  getWriter( )   返回PrintWriter对象  PrintWriter可以向客户端输出字符。

    通常我们习惯给这个类型的对象起名叫做out

    Servlet中代码实现

    PrintWriter out=response.getWriter();

    解决乱码问题

    设置提交信息的字符编码,通过HttpServletRequest中的方法来实现: 

    ,参数为”utf-8”时,设置提交字符编码为支持中文。

    例:request.setCharacterEncoding("utf-8");

    设置响应信息的字符编码,HttpServletResponse中的方法来实现:

    例:response.setContentType("text/html; charset=UTF-8");

    response.setCharacterEncoding("utf-8");

    请求转发

    HttpServletRequest中具有方法getRequestDispatcher,这个方法是ServletRequest中的方法,方法的返回值是RequestDispatcher类型的对象。

    public  RequestDispatcher  getRequestDispatcher (java.lang.String path)

    Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个ServletJSP页面,甚至是HTML页面,来处理对请求的响应。

    RequestDispatcher对象具有的public void forward(ServletRequest request, ServletResponse response) 这个方法能够实现将请求转发给另外的页面。

    request.getRequestDispatcher("success.html").forward(request, response);

    HttpServletRequest对象的生命周期:从一个请求开始,到这个请求处理结束。而且只要刷新页面,request也将失效。

    请求转发的特点:

    请求转发后,不会产生新的请求,会继续沿用原来的请求

        请求转发后,地址栏显示的是原页面的URL

    请求转发时用到的接口RequestDispatcher,在这个接口中定义了两个方法:

    1)forward(ServletRequest request,ServletResponse response)

    必须在响应提交给用户之前调用。

    2)include(ServletRequest request,ServletResponse response)

    3)区别:include()将请求转发给其他的Servlet,被调用的Servlet对该请求做出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应信息。

    forward():将请求转发给其他的Servlet,将由被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。

    重定向

    重定向就是指将用户的请求重定向给另外一个Servlet或页面,然后由它们进行处理并产生对请求的响应。

    HttpServletResponse 类的public void  sendRedirect(java.lang.String location)  能够实现重定向的页面跳转。但是与请求转发的原理不一样。

    Response.sendRedirect(“success”);                 

    重定向的特点:

    重定向后,会产生一个新的请求

    重定向后,地址栏显示的是目标页面的URL

    2种跳转完成同样的功能,但是区别非常大:

    在地址栏中,用重定向跳转后地址栏会显示目标页面。请求转发地址栏显示源页面

    区别在于请求的次数:请求转发 请求没变;重定向  会产生新的请求

    request.getRequestDispatch(“T2.jsp”).forward(request,response);相当于将本次的请求和响应转发给你

    请求转发不能跳转到其他项目中,只能在本项目内跳转,重定向可以跳转到其他项目中

    HTTP协议是无状态的协议,发送的请求不记录用户的状态,不记录用户的信息。就相当于它被访问了2次,不知道是哪两人访问的,或者是一个人访问两次。

    正是因为HTTP协议的这一特点,用户的活动发生在多个请求和响应之中,作为web服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态。比如说我们平时上的qq.可以设置登录状态,记住密码,之后我们在一段时间内就可以不用输入密码直接输入,那么Http协议是无状态的,我们怎么可以让他记住我们的状态呢,就是通过会话跟踪技术

    什么是会话:

    就像我和一个人之间的对话

    会话跟踪技术有哪几种?

    Cookie    Session    隐藏表单域(hidden) URL重写

  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5973225.html
Copyright © 2011-2022 走看看