Request对象和Response对象

2023-12-26 22:34:52

1.Request对象

1.1概念

客户端发送请求,而请求是以HTTP请求数据格式进行发送,因而Servlet就创建了一个Request类来封装这些接收数据

1.2常用方法

getRequestURL() //获取的完整的URL,即统一资源定位符
getRequestURI() //获取资源的名字,即统一资源标识符
getQueryString() //获取一个url参数部分
getRemoteAddr() //返回的是客户端的ip地址
getRemoteUser() //返回的是客户端的用户
getRemotePort() //返回的是客户端的主机的端口号
getRemoteHost() //返回的是客户端的主机地址
getCookie() //获取Cookie对象
getSession() //获取Session对象
getLocalName() //获取Web服务器主机的名字
getServletContext() //获取上下文对象的
setCharacterEncoding() //设置编码集的
getParameter() //获取前端传过来的数据
setAttribute() //将数据设置给request对象
geAttribute() //获取request对象中的数据

1.3实例

package com.by.servlet;

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

public class RequestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, 
                          HttpServletResponse response) throws Exception {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, 
                         HttpServletResponse response) throws Exception{
        //获取一个完整的url
        //http://localhost:8080/01_servlet_HelloWorld_war/request1
        System.out.println(request.getRequestURL());
        //获取资源的名字
        //比如:http://localhost:8080/day42_xkh/request1
        System.out.println(request.getRequestURI());///01_servlet_HelloWorld_war/request1
        //获取一个url的参数部分
        //比如 http://localhost:8080/01_servlet_HelloWorld_war/request1?username=goudan
        System.out.println(request.getParameter("username"));

        //获取前端传送过来的数据
        request.setCharacterEncoding("utf-8");//设置请求的编码集
        //给request这个对象设置数据
        request.setAttribute("name","狗蛋");
        //获取request对象的值
        request.getAttribute("name");
        //获取上下文对象
        ServletContext servletContext = request.getServletContext();
        //转发
        request.getRequestDispatcher("target.jsp").forward(request,response);
    }
}

web.xml配置:

    <servlet>
        <servlet-name>request</servlet-name>
        <servlet-class>com.by.servlet.RequestServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>request</servlet-name>
        <url-pattern>/context</url-pattern>
    </servlet-mapping>

2.Response对象

2.1概念

服务端给出响应,而响应是以HTTP响应数据格式进行发送,因而Servlet就创建了一个Response类来封装这些返回数据

2.2常用方法

setHeader() //设置响应头的参数
setContentType() //设置字符编码集
getWriter() //获取字符输出流对象
addCookie() //对浏览器新增一个Cookie
sendRedirect() //重定向

2.3实例

package com.by.servlet;

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

public class ResponseServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, 
                         HttpServletResponse response) throws Exception{
        /**************乱码问题*****/
        //方式一
        response.setCharacterEncoding("utf-8");//设置 HttpServletResponse使用utf-8编码
        response.setHeader("Content-Type", 
                           "text/html;charset=utf-8");//通知浏览器使用utf-8解码
        //方式二
        response.setContentType("text/html;charset=utf-8;aaa=bbb");    //包含方法一的两个功能

        //向客户端发送响应数据
        response.getWriter().write("<h1>hello<h1>");

        /************重定向***********/
        //方式一
        //在响应头中添加302状态码,告诉浏览器需要进行重定向
        response.setStatus(302);
        //在响应头中添加Location,指定重定向的位置
        response.setHeader("Location", "http://www.baidu.com");
        //方式二
        response.sendRedirect("http://www.baidu.com");  //包含方法一的两个功能
    }
}

wab.xml文件:

  <servlet>
        <servlet-name>response</servlet-name>
        <servlet-class>com.by.servlet.ResponseServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>response</servlet-name>
        <url-pattern>/response</url-pattern>
    </servlet-mapping>

3.Request对象和Response对象的区别

request对象用于获取客户端发送的请求信息,包括请求的URL、请求方法、请求头、请求参数等。通过request对象,服务器可以获取客户端的请求信息并进行相应的处理。

response对象用于向客户端发送响应信息,包括响应的状态码、响应头、响应内容等。通过response对象,服务器可以将处理结果返回给客户端。

两者的区别如下:

  1. 作用不同:request用于获取客户端的请求信息,而response用于向客户端发送响应信息。
  2. 使用方式不同:request对象是由服务器创建并传递给处理请求的代码,开发者可以通过request对象获取请求信息。而response对象是由开发者创建并填充响应信息,然后由服务器发送给客户端。
  3. 内容不同:request对象包含客户端发送的请求信息,如URL、请求方法、请求头、请求参数等。response对象包含服务器发送给客户端的响应信息,如状态码、响应头、响应内容等。

范例: request和response的区别如下:

  1. request对象用于获取客户端的请求信息,而response对象用于向客户端发送响应信息。
  2. request对象是由服务器创建并传递给处理请求的代码,而response对象是由开发者创建并填充响应信息。
  3. request对象包含客户端发送的请求信息,如URL、请求方法、请求头、请求参数等。response对象包含服务器发送给客户端的响应信息,如状态码、响应头、响应内容等。

文章来源:https://blog.csdn.net/2301_77072336/article/details/135231879
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。