HTTP 协议 Request 请求

//1.获取请求方法:GET

String method = req.getMethod();

System.out.println(method);

//2.获取虚拟目录

String Cpath = req.getContextPath();

System.out.println(Cpath);

//3.获取 Servlet 路径

String Spath = req.getServletPath();

System.out.println(Spath);

//4.获取get方式请求参数

String Qpath = req.getQueryString();

System.out.println(Qpath);

//5.获取请求URI

String URI = req.getRequestURI();

System.out.println(URI);

//6.获取请求URL

StringBuffer URL = req.getRequestURL();

System.out.println(URL);

//7.获取协议版本

String pro = req.getProtocol();

System.out.println(pro);

//8.获取客户机IP地址

String add = req.getRemoteAddr();

System.out.println(add);

}

【2】获取请求头数据

常用方法:

  • String getHeader(String nem):通过请求头的名称获取请求头的值

  • Enumeration getHeaderNames():获取所有的请求头名称

//请求头数据

public static void requestHead(HttpServletRequest req){

//获取所有请求头名称

Enumeration headernames = req.getHeaderNames();

//遍历

while (headernames.has

必看视频!获取2024年最新Java开发全套学习资料 备注Java

MoreElements()){

String name = headernames.nextElement();

//根据名称来获取请求头的值

String value = req.getHeader(name);

System.out.println(name + “–” + value);

}

}

【3】获取请求体数据

请求体只有POST请求方式才有的,在请求体中封装了POST请求参数

步骤:

  1. 获取流对象
  • BuferedReader getReader():获取字符输入流

  • ServletInputStream getInputStream():获取字节输入流

  1. 从流对象中获取数据
  • readLine():逐行获取

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//请求消息体数据

//1.获取流对象

BufferedReader br = request.getReader();

//2.读取数据

String line = null;

while ((line = br.readLine()) != null){

System.out.println(line);

}

}

2、其他常用获取功能


【1】获取请求参数通用方法(get和post都能用)

  • String getParameter(String name):根据参数名称获取参数值

  • String[ ]  getParameterValues(String name):根据参数名称获取参数值的数组(多用于复选框)

  • Enumeration getParameterNames():获取所有请求的参数名称

  • Map<String,String[]> getParameterMap():获取所有参数的map集合

public class regServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//request.setCharacterEncoding(“UTF-8”);

//post获取请求参数

//1.根据参数名称获取参数值

String name = request.getParameter(“username”);

String password = request.getParameter(“password”);

System.out.println(“post:” +name + password);

//2.根据参数名称获取参数值的数组

String[] hobbys = request.getParameterValues(“hobby”);

for(String hobby : hobbys){

System.out.println(hobby);

}

//3.获取所有请求的参数名称

Enumeration parameterNames = request.getParameterNames();

while (parameterNames.hasMoreElements()){

String name1 = parameterNames.nextElement();

String value = request.getParameter(name1);

System.out.println(name1 + “–” + value);

System.out.println(“*********”);

}

//4.获取所有参数的map集合

Map<String,String[]> parameterMap = request.getParameterMap();

Set keySets = parameterMap.keySet();

for(String key : keySets){

String[] values = parameterMap.get(key);

for(String value : values){

System.out.println(value);

}

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//get获取请求参数

this.doPost(request,response);

}

}

【2】请求转发

请求转发即一种在服务器内部的资源跳转方式

  • 步骤
  1. 通过request对象获取请求转发器对象:RequestDispatcher  getRequestDispatcher(String path)

  2. 使用 RequestDispatcher 对象来进行转发:forward(ServletRequest request,ServletResponse response)

  • 特点
  1. 浏览器地址栏路径不发生变化

  2. 只能转发到当前服务器内部资源中

  3. 转发是一次请求

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(“访问regSrevlet”);

request.getRequestDispatcher(“/oneStar”).forward(request,response);

}

【3】共享数据

域对象:首先要了解一下域对象,域对象即一个有作用范围的对象,可以在范围内共享数据

request 域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据,而请求转发就是一次请求,因此可以通过request 域来实现共享数据

常用方法:

  • void setAttribute(String name,Object obj):存储数据

  • Object getAttitude(String name):通过键获取值

  • void removeAttribute(String name):通过键移除键值对

//存储数据到request域中

request.setAttribute(“sag”,“Hello”);

request.getRequestDispatcher(“/oneStar”).forward(request,response);

//从域中获取数据

Object mesage = req.getAttribute(“sag”);

System.out.println(mesage);

【4】获取 ServletContext 对象

  • ServletContext getServletContext();
    ServletContext context = request.getServletContext();
    System.out.println(context);

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

在这里插入图片描述

在这里插入图片描述

.out.println(mesage);

【4】获取 ServletContext 对象

  • ServletContext getServletContext();
    ServletContext context = request.getServletContext();
    System.out.println(context);

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

[外链图片转存中…(img-4SIOFIGM-1716442850729)]

[外链图片转存中…(img-q9hI05zE-1716442850730)]

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值