request和response概念用法

一、请求重定向和请求转发的区别

1. RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

2. 如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于服务器的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。

3. 调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

4. HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。

5. RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

附图:

二、response请求实现重定向

代码:response.sendRedict("/day5/response/demo2.html");

注意,在发生请求重定向时有如下的特点:

1. 浏览器的地址栏发生了变化,指向了另外一地址。

2. 在这个过程中,发送了两次http请求,大家可以通过抓包工具httpWatch观察到。

三、refresh完成自动刷新页面

1. refresh 格式: 时间(秒);url=跳转页面路径

例如: response.setHeader("refresh", "5;url=/day6/hello.html"); === 生成响应头信息中

例如: response.setHeader("refresh", "5"); 在原页面每5秒刷新一次

2. HTML中meta标签,可以产生Http响应头信息相同效果

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

//http-equiv 响应头信息name

//content 响应头信息value

例如: <meta http-equiv="refresh" content="5;url=/day6/hello.html" /> === 生成响应体中

读秒JavaScript效果

var i = 5;

function init(){

  document.getElementById("mytimes").innerHTML = i;

  // 每隔1秒重复调用 init方法 i--

  i--;

  // 通过window 内置对象 setTimeOut 完成每隔1秒重复调用

  indow.setTimeout("init();", 1000);

}

总结:

refresh用来实现定时刷新,一般用在股票页面,用来定时的刷新页面,实现实时更新。

四、禁用浏览器缓存

需求:对于一些动态数据,很多时候我们希望每当用户在浏览器地址栏敲了回车之后,就可以看到最新的数据,但是很多时候,浏览器会自动的帮你去缓存该数据。

这个时候就要用到这三个http响应头来实现禁用浏览器缓存。

存放缓存文件夹: 工具---internet选项 --- 设置 --- 查看文件

  response.setHeader("Cache-Control", "no-cache");

  response.setHeader("Pragma", "no-cache");

  response.setDateHeader("Expires", -1);

//这三个头,一般用在实时性比较高的页面或网站,主要为了通知浏览器来不要缓存。

注意:禁用浏览器缓存,有这样三个头,主要是因为目前市场上存在的浏览器比较多,不同的浏览器支持的禁用缓存的头也不一样,所以就出现这么几个,所以为了保险起见,一般将这三个头都设置上,那么就可以保证所有的浏览器都不会缓存该页面的内容了。

五、解决乱码问题

1. 当请求方式为post的情况:

问题原因:

客户端的请求参数会传递给服务器,那么在数据在网络上传送时,客户端提交的参数值就必须要转换成二进制,服务器端收到了请求后,获得客户端的请求参数,那么服务器端就必定要将拿到的二进制转换成相应的字符。这个时候,如何发送的数据有中文,就会出现乱码的情况。

解决方案:

response.setContentType("text/html;charset=utf-8");

设置字符集代码 必须要位于getWriter/ getOutputStream 之前

2. 当请求方式为get的情况:

问题原因:

首先我们知道,在get请求方式下,客户端提交过来的数据是跟在url地址后的,那么这个时候对于提交的中文数据会对其url进行编码。大家上网的时候经常会看到这样的情况,例如你去淘宝购物。

注意:我们注意到,刚刚在将post方式时,只需要设置 request.setCharacaterEncoding(“UTF-8”) 就可以了,但是现在由于数据是跟在url地址后的,所以调用这个api不能解决问题。

解决方案:

方案1

反向去查utf-8编码,这样转回去,就可以得到原始的字符了,默认的情况下拿到的字符是乱码的,会查 iso-8859-1.

username = URLEncoder.encode(username, "ISO-8859-1");

username = URLDecoder.decode(username, "utf-8");

可以简化为

username = new String(username.getBytes("ISO-8859-1"),"utf-8");

方案2

修改server.xml

<Connector port="80" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="utf-8"/>

* 必须有修改tomcat服务器配置文件权限

六、URI和URL区别 

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

总结一下:URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的

7.防盗链技术

需求:阻止其他的网站直接挂连接可以访问到 本网站的热门资源 。

原理:通过在访问的时候获得referer请求头信息来实现判断。

代码实现:

时间: 2024-11-05 16:02:42

request和response概念用法的相关文章

servlet中的request和response

利用3到4天的时间,把servlet中的request和response对象视频看了一遍.看完之后,自己总结出来了一些知识点. 学习一个对象的三部曲:首先查看API文档,了解以及掌握对象的一些常用的方法用法:其次就是解决一些中文乱码之类的问题:最后就是该对象的应用了. 好了,先来说说response对象吧. 1.解决用outputStream输出中文的乱码问题. //1.程序的数据以什么码表输出了,程序就要控制浏览器以什么码表打开 response.setHeader("content-type

Django中request和response中的属性方法详述

转载于 http://blog.chinaunix.net/uid-21633169-id-4332621.html Django 使用 request 和 response 对象表示系统状态数据.. 当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 Django 调用相应的 view 函数(HttpRequest 对象自动传递给该view函数<作为第一个参数>), 每一个 view 负责返回一个 HttpResponse 对象

servlet中request和response

转自:http://www.cnblogs.com/xdp-gacl/p/3798347.html 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 二.Request常用方法 2.1.获得客户机信息 getRequestURL方法返回客户端发出请求时的完整URL. getRequestURI方法返回请求

JSP Servlet中Request与Response所有成员方法的研究

HttpServletRequest与HttpServletResponse作为Servlet中doGet.doPost等方法中传递的参数,承接了Http请求与响应中的大部分功能,请求的解析与响应的返回都需要靠这两个对象进行,他们中的所有方法及功能在下边总结了一下,希望能对学习Java Web开发有所帮助. 1.HttpServletRequest: /* * 记录各个request.get的值 * request.getAsyncContext();AsyncContext * 获取异步传输的

javaweb入门-----request与response的作用

request对象和request对象的原理 1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们 2.request对象是来获取请求消息,response对象是来设置响应消息 requset对象继承体系结构: ServletRequest -- 接口 | 继承 HttpServletRequest -- 接口 request功能: 1.获取请求行数据 *GET /day14/demo1?name=zhangsan HTTP/1.1

Request和Response对象

最早接触Request和Response对象的时候是听王勇老师将Servlet的时候,我们编写一个Servlet类.我们在浏览器端发送一个url请求之后,会调用Servlet类对这个请求做相应的处理,Servlet类就是通过重写的service()方法来实现的,而我们知道的Request和Response对象就是作为service()方法的参数传入的.   1.整体印象 2.Request对象 Request对象的主要职责是获得HTTP请求中封装的信息,获得url和表单参数:还有一个功能就是对页

Fiddler抓包4-工具介绍(request和response)

前言 本篇简单的介绍下fiddler界面的几块区域,以及各自区域到底是干什么用的,以便于各好的掌握这个工具 一.工具简介 1.第一块区域是设置菜单,这个前面2篇都有介绍 2.第二块区域是一些快捷菜单,可以点下快捷功能键 3.第三块左边是抓捕的请求会话列表,每一个请求就是一个会话 4.第四块右边上方区域是request请求的详细信息,可以查看headerd.cookies.raw.json等 5.第五块右边下方区域就是response信息,可以查看服务端返回的json数据或其它信息 6.第六块区域

jsp九大内置对象:request、response、session、application、out、page、pageContext、config、exception

JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1.request对象 request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息.系统信息.请求方式以及请求参数等).request对象的作用域为一次请求. 2.res

day03-java web之request、response

请求响应流程图 response 1        response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法.response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作. response对象的功能分为以下