请求(Request)和响应(Response)
程序员文章站
2022-06-01 22:42:16
...
请求——Request
请求对象的介绍
- 请求:获取资源。在BS架构中,就是客户端浏览器向服务端发出询问。
- 请求对象:就是在项目当中用于发送请求的对象。ServletRequest 、HttpServletRequest
请求对象常用方法
获取各种路径
String getContextPath(); //获取虚拟目录名称
String getServletPath(); //获取Servlet映射路径
String getRemoteAddr(); //获取访问者ip地址
String getQueryString(); //获取请求的消息数据
String getRequestURI(); //获取同一资源标识符
StringBuffer getRequestURL(); //获取统一资源定位符
获取请求头信息
String getHeader(String name); //根据请求头名称获取一个值
Enumeration<String> getHeaders(String name); //根据请求头名称获取多个值
Enumeration<String> getHeaderNames(); //获取所有请求头名称
获取请求参数信息
String getParameter(); //根据名称获取数据
String[] getParameterValues(String name); //根据名称获取所有数据
Enumeration<String> getParameterNames(); //获取所有名称
Map<String,String[]> getParameterMap(); //获取所有参数的键值对
获取请求参数并封装对象的三种方式
- 手动封装方式
- 反射封装方式
- 工具类封装方式(重点掌握)
工具类封装方式(重点掌握)
- 首先导入对应的 jar 包
工具类请求参数封装对象代码示例
package com.itheima.servlet;
import com.itheima.domain.User;
import org.apache.commons.beanutils.BeanUtils;
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;
import java.util.Map;
/**
* 通过工具类封装对象
*/
@WebServlet("/servletTest03")
public class ServletTest03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取所有的数据
Map<String, String[]> map = req.getParameterMap();
//封装学生对象
User user = new User();
try {
BeanUtils.populate(user,map);
} catch (Exception e) {
e.printStackTrace();
}
//输出对象
System.out.println(user);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
流对象获取请求信息
BufferedReader getReader(); //获取字符输入流; (注意)必须是post方式的请求
ServletInputStream getInputStream(); //获取字节输入流
解决中文乱码
- get 方式,没有乱码问题,在 Tomcat8 版本后已经解决
- post 方式,通过 setCharacterEncoding(“UTF-8”); 解决
请求域
- 请求域:可以再一次请求范围内进行共享数据
- 一般用于请求转发的多个资源*享数据
请求对象操作共享数据方法
void setAttribute(String name,Object value); //向请求域对象中存储数据
Object getAttribute(String name); //通过名称获取请求域对象中的数据
void removeAttribute(String name); //通过名称移除请求域对象中的数据
请求转发
- 请求转发:客户端的一次请求到达之后,发现需要借助其他 Servlet 来实现功能。
- 特点:
- 浏览器地址不变
- 域对象中的数据不丢失
- 负责转发的 Servlet 转发前后的响应正文会丢失
- 由转发的目的地来响应客户端
请求转发常用方法
RequestDispatcher getRequestDispatcher(String name); //获取请求调度对象
void forward(ServletRequest req,ServletResponse resp); //实现转发
请求包含
- 请求包含:可以合并其他Servlet 中的功能一起响应给客户端。
- 特点:
- 浏览器地址栏不变
- 域对象中的数据不丢失
- 被包含的Servlet 响应头会丢失
请求包含常用方法
RequestDispatcher getRequestDispatcher(String name); //获取请求调度对象
void include(ServletRequest req,ServletResponse resp); //实现包含
响应:
https://blog.csdn.net/Mr_97xu/article/details/108188434
上一篇: 大学课程清单
下一篇: 项目实战-后台管理系统(三)
推荐阅读
-
YII Framework学习之request与response用法(基于CHttpRequest响应)
-
C#中Request.Cookies 和 Response.Cookies 的区别分析
-
C#中Request.Cookies 和 Response.Cookies 的区别分析
-
Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法
-
JSP内置对象:Request和Response的简单介绍及使用
-
Scrapy 中 Request 对象和 Response 对象的各参数及属性介绍
-
黑马程序员IDEA版JAVA基础班\JavaWeb部分视频\2-10Request和Response\第5节 request登录案例
-
javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response
-
简述HTTP报文请求方法和状态响应码
-
如何在过滤器中修改http请求体和响应体