ServletResponse为将响应发送到客户端的对象;Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servlet的service 方法,如下图 ;

    

    HttpServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法;

    • 常用API

void setStatus(int sc) 设置此响应的状态代码

void setHeader(String name, String value)  用给定名称和值设置响应头
      • 使用步骤

      1. 创建ResponseServlet;

      2. 调用setHeader,设置消息头;

      3. 调用setStatus,设置响应状态码;

    • 常见响应头    

  

location:
重定向操作:通常告知浏览器马上向该地址发送请求,通常和响应码302一起使用; content-encoding:
设置当前数据的压缩格式,告知浏览器以何种压缩格式解压数据; content-disposition:
通知浏览器以何种方式获取数据(直接解析数据(网页,图片文本),或者以附件方式(下载文件); content-type:
实体头部用于指示资源的MIME类型(MIME类型:用于提示当前文件的媒体类型,例如图片——(image/png)、音频——(audio/ogg);
它的作用与传统上Windows上的文件扩展名相同。该名称源于最初用于电子邮件的MIME标准); content-type常用的设置一般都是——“text/html;charset=utf-8”,其中“text/html;”——设置浏览器以文件格式解析数据;“charset=utf-8”——响应数据的编码表;

  

  重定向使用:

    重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求,是客户端行为;
    

    实现步骤:

       1.response.setStatus 设置状态码

       2. response.setHeader 设置响应头

       3. response.sendRedirect 重定向

    

    重定向代码实现1:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

          //响应码为200表示响应成功,而响应码为302表示重定向;所以完成重定向的第一步就是设置响应码为302;
response.setStatus(302);

          //因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的第二步是设置Location头,指定第二个请求的URL地址
response.setHeader("Location", "http://localhost:8080/hello/BServlet"); }
}

  

    重定向代码实现2:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.sendRedirect("/hello/BServlet");

	}

}

  

    特点:

      1.重定向是客户端行为;
      2.重定向是浏览器做了至少两次的访问请求的;
      3.重定向浏览器地址改变;
      4.重定向2次跳转之间传输的信息会丢失(request范围),不能使用request域对象进行数据共享;
      5.重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源;
      注意:传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录 ;

 

ServletResponse使用介绍的更多相关文章

  1. JSONP和CORS两种跨域方式的简单介绍和解决方案实例

    随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑处理同时通过API为前端提供数据也为前端提供数据的持久化能力,考虑到前后端同事开发工具 ...

  2. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  3. XPATH 注入的介绍与代码防御

    0x01 介绍 软件未正确对 XML 中使用的特殊元素进行无害化处理,导致攻击者能够在终端系统处理 XML 的语法.内容或命令之前对其进行修改.在 XML 中,特殊元素可能包括保留字或字符,例如“&l ...

  4. Filter简单介绍

    一.简单介绍 Filter也称为过滤器,WEB开发者通过Filter技术.对webserver管理的全部web资源:比如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截.从而实 ...

  5. Restful 和 Jersey介绍(Web Service )

    一:REST简单介绍 REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(reso ...

  6. JSP简单介绍

    前言 知识点 1.JSP是什么   java  server   page,javaserver端页面技术.其主要作用在server端动态生成页面, 其组成java代码和html, 2.JSP的组成 ...

  7. JSONP和CORS两种跨域方式的优缺点及使用方法原理介绍

    随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑处理同时通过API为前端提供数据也为前端提供数据的持久化能力,考虑到前后端同事开发工具 ...

  8. Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)

    javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置. ①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Jav ...

  9. java web(二): servlet的简单使用和介绍

    前言:通过编写一个servlet类,向浏览器发送hello world来阐述servlet. 一:创建动态web项目 1. 首先切换到javaEE视图. 在ecplise左边即项目管理器哪里右键点击新 ...

随机推荐

  1. Hadoop演进与Hadoop生态

    1.了解对比Hadoop不同版本的特性,可以用图表的形式呈现. (1)0.20.0~0.20.2: Hadoop的0.20分支非常稳定,虽然看起来有些落后,但是经过生产环境考验,是 Hadoop历史上 ...

  2. 安装Windows10操作系统 - 初学者系列 - 学习者系列文章

    今天无事,就将安装操作系统的几种方式进行了总结( https://www.cnblogs.com/lzhdim/p/13719725.html ).这篇博文主要是对安装windows10操作系统的过程 ...

  3. Spring框架分为哪七大模块,各模块的主要功能作用是什么

    七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...

  4. 使用SpringBoot的方式配置过滤器

    springboot 不存在web.xml 那么如何配置过滤器呢 springboot提供了一种方式 通过spring容器配置 @Bean public FilterRegistrationBean ...

  5. 【FastDFS】小伙伴们说在CentOS 8服务器上搭建FastDFS环境总报错?

    写在前面 在[冰河技术]微信公众号的[分布式存储]专题中,我们分别搭建了单节点FastDFS环境和高可用FastDFS集群环境.但是,之前的环境都是基于CentOS 6.8服务器进行搭建的.很多小伙伴 ...

  6. 转载:关于Python3中venv虚拟环境

    https://www.cnblogs.com/zhaof/p/7299025.html

  7. 从 ES6 高阶箭头函数理解函数柯里化

    前言:第一次看到多个连续箭头函数是在一个 react 项目中,然鹅确认了下眼神,并不是对的人,因为看得一脸懵逼.em......于是开始各种搜索,先是知道了多个连续箭头函数就是 es6 的多次柯里化的 ...

  8. 详细分析 Java 中启动线程的正确和错误方式

    目录 启动线程的正确和错误方式 前文回顾 start 方法和 run 方法的比较 start 方法分析 start 方法的含义以及注意事项 start 方法源码分析 源码 源码中的流程 run 方法分 ...

  9. uni-app支付功能

    扫码查看原文 前言 近期一直在使用APP开发多端应用,IOS的APP.安卓的APP和H5网页,其中开发的APP使用到了微信和支付宝的支付,在此给大家分享出来,一起使用 前置条件: 开发环境:windo ...

  10. Python-生成器函数(协程实现底层原理)-yield

    yield 1. 函数执行的时候,找到yield关键字,则会标记这个函数,返回生成器对象 2. Python解释器会记录最近一次函数中yield位置 3. 生成器对象也是分配在栈堆上 4. 通过yie ...