#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>>
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();
请求头都是以键值对或者叫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的值就表示从哪个页面过来的
请求体包含在请求时传入的参数
在一些静态页面定义的参数,请求传入。在程序中获取
获取一个值
String value = request.getParameter("name");
获取多个值(当一个参数含多个值)
比如上图的like参数
String[] values = request.getParameterValues("like");
获取所有的请求参数名
Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()) {
System.out.println(names.nextElement());
}
获取所有请求参数
0 4 请求转发Map<String,String[]> parameterMap = request.getParameterMap();
for(Map.entry<String,String[]> entry : parameterMap.entrySet()){
System.out.println(entry.getkey()+":"+Arrays.toString(entry.getValue()));
}
请求转发与重定向的区别
重定向
找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源创计划”,欢迎正在阅读的你也加入,一起分享。