Http

本文详细介绍了HTTP协议,包括请求方式GET和POST的区别,请求和响应消息数据格式,Request对象的使用,如获取请求行、头、体数据,以及Response对象的功能。还涉及到ServletContext对象、请求转发和重定向,以及服务器输出数据到浏览器的方法和处理中文乱码问题。
摘要由CSDN通过智能技术生成

概念:传输协议,定义了客户端和服务器端通信时发送数据的格式。

请求方式

GET:

     (1)请求参数在请求行钟,url后。

     (2)请求的url长度有限制。

     (3)不安全

POST:

     (1)请求参数在请求体中。

     (2)请求的url长度没有限制。

     (3)相对安全

请求消息数据格式

客户端浏览器告诉服务器的信息。

1.请求行

2.请求头

      HOST:请求的主机

      User-Agent:浏览器告诉服务器,访问时所用的浏览器版本信息,解决兼容性问题。

      Referer:告诉服务器当前请求是从哪里来的,防止盗取连接和统计信息。

3.请求空行:空行,用于分割请求头和请求体。

4.请求体:封装POST请求消息的请求体(请求参数)。

Request对象

1.tomcat服务器会根据请求Url中的资源路径,创建对应的ServletDemo1对象。

2.tomcat服务器,会创建request和response对象,request对象中封装请求消息数据。

3.tomcat将request和response两个对象传递给service方法,并且调用service方法。

4.程序员可以通过request对象获取请求消息数据,通过response对象设置响应消息数据。

5.服务器在给浏览器做出响应之前,会从response对象中拿程序员设置的响应的响应消息数据。

原理:request对象和response对象是由服务器创建的。我们来使用而已。request对象是来获取请求消息,response对象用来设置响应消息。

request对象继承体系结构

ServletRequest--接口

                |继承

HttpServletRequest--接口

                |实现

org.apache.catalina.connector.RequestFacade

request功能:

1.获取请求消息

    (1)获取请求行数据(GET /day14/demo1?name=zhangsan HTTP/1.1)

      方法:

               1.获取请求方式:GET            String getMethod()

               2.获取虚拟目录:/day14         String getContextPath()               重点

               3.获取Servlet路径:/demo1    String getServletPath()

               4.获取get方式请求参数:name=zhangsan    String getQueryString()

               5.获取请求URI:/day14/demo1     String getRequestURI()        返回URL用:StringBuffer getRequestURL()   http://localhost/day14/demo1   重点

               6.获取协议及版本:HTTP/1.1   String getProtocol()

               7.获取客户机的IP地址:    String getRemotoAddr()

package cn.itcast.web.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 演示Request对象获取请求行数据
 */

@WebServlet("/requestDemo1")
public class RequestDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
            1. 获取请求方式 :GET
                * String getMethod()
            2. (*)获取虚拟目录:/day14
                * String getContextPath()
            3. 获取Servlet路径: /requestDemo1
                * String getServletPath()
            4. 获取get方式请求参数:name=zhangsan
                * String getQueryString()
            5. (*)获取请求URI:/day14/demo1
                * String getRequestURI():		/day14/requestDemo1
                * StringBuffer getRequestURL()  :http://localhost/day14/requestDemo1
            6. 获取协议及版本:HTTP/1.1
                * String getProtocol()

          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值