request对象和respones对象

一、web项目,是通过response和request对象通信,request封装请求消息,response对象封装返回消息。

    1.服务器会根据请求url中的资源路径创建对应的Servlet的对象。
    2.服务器会创建request和respones对象。
    3.服务器将request和response两个对象传递给service()方法。
    4.程序员可以通过request对象获取请求数据,通过respones对象设置响应消息数据。
    5.服务器在给浏览器做出响应之前,会从response对象中拿出程序员设置的响应消息数据。

二、request
    结构
        1.ServletRequest -- 接口
        2.HttpServletRequest --接口(实现ServletRequest)
        3.org.apache.catalina.connector.RequestFacade (tomCat创建用于实现HttpServletRequest接口)
    功能
        1.获取请求行数据
            1.获取请求方式 String getMethod()
            2.获取虚拟目录(项目根目录) String getContexPath()
            3.获取Servlet路径(定义的servlet请求路径) String getServletPath()
            4.获取get方式请求参数 String getQueryString();
            5.获取URI String getRequestURI() --请求的路径
            6.获取url StringBuffer getRequestURL(); --http://IP:端口/请求路径
            //URL:统一资源定位符;URI:统一资源标识符
            7.获取协议及版本 String getProtocol() --http/1.1
            8.获取客户机IP String getRemoteAddr()

package com.xiaoqiang.web;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Enumeration;

@WebServlet("/demo/requestDemo")
public class RequestDemoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求行数据
        // 1.获取请求方式 String getMethod()
        String method = req.getMethod();
        System.out.println("获取请求方式 String getMethod():" + method);
        // 2.获取虚拟目录(项目根目录) String getContexPath()
        String contextPath = req.getContextPath();
        System.out.println("获取虚拟目录(项目根目录) String getContexPath():" + contextPath);
        //3.获取Servlet路径(定义的servlet请求路径) String getServletPath()
        String servletPath = req.getServletPath();
        System.out.println("3.获取Servlet路径 String getServletPath():" + servletPath);
        //4.获取get方式请求参数 String getQueryString();
        String queryString = req.getQueryString();
        System.out.println("获取get方式请求参数 String getQueryString():" + queryString);
        //5.获取URI String getRequestURI() --请求的路径
        String requestURI = req.getRequestURI();
        System.out.println("获取URI String getRequestURI() --请求的路径:"+requestURI);
        //6.获取url StringBuffer getRequestURL(); --http://IP:端口/请求路径
        StringBuffer requestURL = req.getRequestURL();
        System.out.println("获取url StringBuffer getRequestURL(); --http://IP:端口/请求路径:" + requestURL.toString());
        //7.获取协议及版本 String getProtocol() --http/1.1
        String protocol = req.getProtocol();
        System.out.println("获取协议及版本 String getProtocol() --http/1.1:" + protocol);
        //8.获取客户机IP String getRemoteAddr()
        String remoteAddr = req.getRemoteAddr();
        System.out.println("获取客户机IP String getRemoteAddr():" + remoteAddr);

        //获取请求头数据
//        1.getHeaderNames()获取所有的请求头名称
        Enumeration headerNames = req.getHeaderNames();
//        2.遍历获取到的请求头名称,String getHeader(String name) 通过请求头的名称获取请求头的值
        while (headerNames.hasMoreElements()){ //hasMoreElements() 迭代标志,是否有下一个请求头
            String s = headerNames.nextElement();//获取下一请求头名称
            String header = req.getHeade

你可能感兴趣的:(javaWeb笔记,javascript,tomcat,windows)