Request

2019/08/22 08:34
阅读数 32
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添加后的信息。而不是仅仅把它自己获得的这两个对象传给转发的

它,

不仅仅是一个码



本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部