前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Request

作者头像
木瓜煲鸡脚
发布2019-08-26 10:53:16
1.1K0
发布2019-08-26 10:53:16
举报
文章被收录于专栏:Jasper小笔记Jasper小笔记

Request

1.获取请求行

2.获取请求头

3.获取请求体

4.请求转发

0

1

获取请求行

请求行信息

包含请求方式、URL、版本

获取请求方式

String method = request.getMethod();

获取请求资源(URL、URI)

// "http://localhost:8080/request/Request" 
StringBuffer url = request.getRequestURL();

// "/request/Request" 
StringBuffer url = request.getRequestURL();

/*
 url包含请求的从主机到当前文件
 uri只包含从项目下到当前文件
*/

获取项目名

//"/request"
String contextPath = request.getContextPath();

获取get查询参数

//"name=hs&sex=man"
String queryString = request.getQueryString();

0

2

获取请求头

请求头都是以键值对或者叫entry形式存在的信息

获取所有的请求头名称

Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
    System.out.println(headerNames.nextElement());
}

获取指定请求头名称的值

String header = request.getHeader("Host");

通过上面就可以进一步打印所有请求名称并对应的值

Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
    String headername = headerNames.nextElement();
    String headvalue = request.getHeader(headername);
    System.out.println(headername+":"+headvalue);
}

请求头中有一个叫referer的它的值表示上一个页面的URL,当从一个页面跳转到当前页面,那么当前页面的请求头的referer的值就表示从哪个页面过来的

0

3

获取请求体

请求体包含在请求时传入的参数

在一些静态页面定义的参数,请求传入。在程序中获取

获取一个值

String value = request.getParameter("name");

获取多个值(当一个参数含多个值)

比如上图的like参数

String[] values = request.getParameterValues("like");

获取所有的请求参数名

Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()) {
  System.out.println(names.nextElement());
}

获取所有请求参数

Map<String,String[]> parameterMap = request.getParameterMap();
for(Map.entry<String,String[]> entry : parameterMap.entrySet()){
    System.out.println(entry.getkey()+":"+Arrays.toString(entry.getValue()));
}

0

4

请求转发

请求转发与重定向的区别

重定向

  • 找servlet1,通过设置响应,告诉浏览器, 再让浏览器发送请求到servlet2
  • 发两次请求
  • 地址栏会发生变化

请求转发

  • 请求转发只需要发送一次直接,找servlet1,在servlet1当中直接转发给servlet2,不要再告诉浏览器
  • 只发送一次请求
  • 浏览器地址栏当中还是servlet1,不会发生变化

设置请求转发

//获得转发器,设置转发到哪个
RequestDispatcher rd = request.getRequestDispatcher("url");
//调用转发器转发,传入当前的servlet收到的请求与响应对象给转发的
servlerd.forward(request,response);

并且在一个servlet中用request设置的Attribute键值对,在转发后的servlet也能获得。也就是说转发后的servlet得到的request,response对象是最开始请求创建的信息加上在之前servlet添加后的信息。而不是仅仅把它自己获得的这两个对象传给转发的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档