Request请求的应用
1.通过request获得请求行
获得客户端的请求方式:String
getMethod()
获得请求的资源:
String
getRequestURI()
StringBuffer
getRequestURL()
String
getContextPath()
---web
应用的名称
String
getQueryString()
---- get
提交
url
地址后的参数字符串
注意:request获得客户机(客户端)的一些信息
request.getRemoteAddr() --- 获得访问的客户端IP地址
1 //获得请求方式
2 String Method=request.getMethod();
3 System.out.println("方式"+Method);
4 //获得请求资源相关内容
5 String requestURI=request.getRequestURI();
6 System.out.println("uri:"+requestURI);
7 StringBuffer requestURL =request.getRequestURL();
8 System.out.println("url:"+requestURL);
9 //获得WEB应用名称
10 String contextPath=request.getContextPath();
11 System.out.println("WEB应用名称"+contextPath);
12 //地址后的参数字符串
13 String queryString=request.getQueryString();
14 System.out.println(queryString);
15 //获得访问者的IP地址
16 String remoteAddr=request.getRemoteAddr();
17 System.out.println("ip:"+remoteAddr);
2.通过request获得请求头
1)long
getDateHeader(
String name)
2)String
getHeader(
String name)
3)Enumeration
getHeaderNames()
4)Enumeration
getHeaders(
String name)
5)int
getIntHeader(
String name)
1 //获得指定的头
2 String header=request.getHeader("User-Agent");
3 System.out.println(header);
4 //2.获得所有头的信息
5 Enumeration<String> headerNames=request.getHeaderNames();
6 while(headerNames.hasMoreElements()) { //判断是否还有更多
7 String headerName=headerNames.nextElement();
8 String headerValue=request.getHeader(headerName);//通过名获取值
9 System.out.println(headerName+" "+headerValue);
注意:referer头的作用:执行此次访问的来源做防盗链
防止其他网站盗用自家网站信息
//简单的一个获取referer头的网页
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>Insert title here</title>
6 </head>
7 <body>
8 <a href="/WEB4/referer">访问HeaderServlet资源</a>
14 </body>
15 </html>
String header =request.getHeader("referer");
//判断访问的地址是否为该地址
if(header!=null && header.startsWith("http://localhost"))
{
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("啦啦啦啦啦啦啦啦");
}else { System.out.println("fsf");
}
3.通过request获得请求体
1)String
getParameter(
String name);
2)String[]
getParameterValues(
String name);
3)Enumeration
getParameterNames();
4)Map<String,String[]>
getParameterMap();
注意:get请求方式的请求参数 上述的方法一样可以获得;
解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
解决get提交的方式的乱码:parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");
<form action="/WEB4/content" method="post">
<input type="text" name="username"><br>
<input type="password" name="passworld"><br>
<input type="checkbox" name="hobby" value="zq">足球
<input type="checkbox" name="hobby" value="lq">篮球
<input type="checkbox" name="hobby" value="pq">乒乓球<br>
<input type="submit" value="提交">
</form>
1 //获得单个表单值
2 String username=request.getParameter("username");
3 System.out.println(username);
4 String password =request.getParameter("passworld");
5 System.out.println(password);
6 System.out.println("-------------------");
7 //2.获得多个表单的值
8 String[] hobbys = request.getParameterValues("hobby");
9 for(String hobby:hobbys) {
10 System.out.println(hobby);
11 }
12 System.out.println("-------------------");
13 //3.获得所有请求参数名称
14 Enumeration<String> parameterNames = request.getParameterNames();
15 while(parameterNames.hasMoreElements()) {
16 System.out.println(parameterNames.nextElement());
17 }
18 System.out.println("-------------------");
19 //4.获得所有的参数,参数封装到Map<String,String[]>
20 Map<String, String[]> parameterMap = request.getParameterMap();
21 for(Map.Entry<String, String[]> entry:parameterMap.entrySet()) {
22 System.out.println(entry.getKey());
23 for(String str:entry.getValue()) {
24 System.out.println(str);
25 }
26 System.out.println("---------------");
27 }
4.request的域对象和请求转发
(1)request是一个域对象
request对象也是一个存储数据的区域对象,所以也具有如下方法:
1)setAttribute(
String name,
Object o)
2)getAttribute(
String name)
3)removeAttribute(
String name)
注意:request域的作用范围:一次请求中
(2)request完成请求转发
获得请求转发器----path
是转发的地址
RequestDispatcher
getRequestDispatcher(
String path)
通过转发器对象转发
requestDispathcer.forward(
ServletRequest request,
ServletResponse response)
客户端请求forwar1,forward1又发送请求到forward2;
//向request域当中存取数据
request.setAttribute("name", "tom");
//forward1将请求转发给forward2(获得转发器)
RequestDispatcher dispatcher = request.getRequestDispatcher("/forward2");//服务器端地址
//执行转发方法
dispatcher.forward(request, response);
//从request域中取数据
Object attribute = request.getAttribute("name");
response.getWriter().write("hello haohao..."+attribute);
注意:转发与重定向的区别?
1
)重定向两次请求,转发一次请求
2
)重定向地址栏的地址变化,转发地址不变
3
)重新定向可以访问外部网站
转发只能访问内部资源
4
)转发的性能要优于重定向
Request请求的应用的更多相关文章
- springMVC中 request请求数据绑定到Controller入参 过程剖析
前言:Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数.众 ...
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
- Java中request请求之 - 带文件上传的form表单
常用系统开发中总免不了显示图片,保存一些文件资料等操作. 这些操作的背后,就是程序员最熟悉的 enctype="multipart/form-data"类型的表单. 说起file类 ...
- Servlet的学习之Request请求对象(3)
本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...
- Servlet的学习之Request请求对象(2)
在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...
- 关于微信小程序的Request请求错误处理
在学微信小程序的request请求的时候,一开始报“不在以下合法域名列表中,请参考文”的错误,后来又莫名其妙的报“400 Bad Request”错误,经过半天的研究,终于搞定了,把遇到的错误给大家分 ...
- javaWeb中request请求转发和response重定向
1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的&q ...
- 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析
通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文[安卓网络请求开源框架Volley源码解析系列]初识Volley及其基本用法.如StringRequest用来请求一 ...
- PHP Request请求封装
/** * Request请求封装 * Class Request * @package tool */ class Request { // curl 请求错误码 protected static ...
- 微信小程序wx.request请求用POST后台得不到传递数据
微信小程序的wx.request请求,method设为POST并向后台传递数据,但从后台返回的信息来看后台并没有获得传递的数据 wx.request({ url: 'url' ...
随机推荐
- Jquery事件和选择器 纠错
1: 试题分析:该题考的是jQuery中事件绑定的知识.绑定事件用bind()方法,选项A是正确的绑定事件语法,因此是正确的答案.选项BCD的语法是错误的. 2: 试题分析:opacity 必需.规定 ...
- JAVA面向对象面试题带答案(墙裂推荐)
1) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(c)关键字来申明父类的这些方法. a) Finalc b) Static c) Abstract d) Void2 ...
- PyCharm如何导入python项目
Pycharm导入python项目 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的python才可以正常运行: 配 ...
- 武林 HDU - 1107
题目链接:https://vjudge.net/problem/HDU-1107 注意:题目中只有两个不同门派的人在同一个地方才能对决,其他情况都不能对决. 还有,这步的有效的攻击只有走到下一步之后才 ...
- pikachu
题目链接:http://127.0.0.1/pikachu-master/vul/sqli/sqli_id.php 题目来源:pikachu-->SQL-inject-->数字型注入(po ...
- ABAP 查看采购订单行项目已开票金额和已清金额
FUNCTION zmm_fm_po_invence. *"----------------------------------------------------------------- ...
- React 练习项目,仿简书博客写作平台
Introduction 技术栈:react + redux + react-router + express + Nginx 练习点: redux 连接 react-router 路由跳转 scss ...
- 【KakaJSON手册】05_JSON转Model_05_动态模型
在上一篇文章中提到:有时候服务器返回的某个字段的内容类型可能是不确定的 当时给出的解决方案是实现kk_modelValue或者kk_didConvertToModel方法,根据实际需求自定义JSON的 ...
- 【JVM从小白学成大佬】2.Java虚拟机运行时数据区
目录 1.运行时数据区介绍 2.堆(Heap) 是否可能有两个对象共用一段内存的事故? 3.方法区(Method Area) 4.程序计数器(Program Counter Register) 5.虚 ...
- Zabbix数据库空间大小使用计算
一.Zabbix的数据存储主要分类 1.历史数据 2.趋势数据 3.事件数据 二.每秒处理的数据量 顾名思义,例如,有3000个监控项(item),每60秒取一次值,即平均每秒有50(3000/60) ...