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' ...
随机推荐
- 自定义itemClickView
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- CentOS7 安装 单机 Mysql
1.解压文件 [root@centos3 ~]# tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ 2.重命名 [ ...
- 02.Mybatis的动态代理方式实现增删改查
动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码,通过接口直接定位出sql语句,以下代码为通过 ...
- echarts3.x 入门
echarts 使用 1.getStart 1.1引入 echart <!-- 引入 ECharts 文件 --> <script src="echarts.min.js& ...
- Scala基础语法学习(一)
1. val和var的区别 val定义的是一个常量,无法改变其内容 scala> val s = 0 s: Int = 0 scala> s = 2 <console>:12: ...
- Spark 系列(八)—— Spark SQL 之 DataFrame 和 Dataset
一.Spark SQL简介 Spark SQL 是 Spark 中的一个子模块,主要用于操作结构化数据.它具有以下特点: 能够将 SQL 查询与 Spark 程序无缝混合,允许您使用 SQL 或 Da ...
- 3月1日 大型网站系统与Java中间件实践 读后感
第二章:大型网站以及架构演进过程 db和应用服务器在一台机器上 数据库与应用分离 服务器走向集群,负载均衡,session问题 读写分离:数据复制,数据源的选择,搜索引擎其实就是一个读库,缓存(数据缓 ...
- -bash: redis: command not found
在linux中安装redis,先是拉过去安装,然后通过命令:make 进行编译 编译完成以后通过命令 make install 完成安装:结果在进行启动linux的时候执行 ...
- 记几个 DOM 操作技巧
使用 attributes 属性遍历元素特性 // 迭代元素的每一个特性,将它们构造成 name = value 的字符串形式 function outputAttributes (element) ...
- linux之压缩和解压
归档:也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中.归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和.压缩:压缩文件也是一个文件和目录的集合,且这个集合也被存 ...