ServletResponse使用介绍
2024-09-06 06:59:45
ServletResponse为将响应发送到客户端的对象;Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servlet的service 方法,如下图 ;
HttpServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法;
常用API
void setStatus(int sc) 设置此响应的状态代码 void setHeader(String name, String value) 用给定名称和值设置响应头
使用步骤
创建ResponseServlet;
调用setHeader,设置消息头;
调用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站点的根目录 ;
最新文章
- JSF primefaces dataTable paginator 表格分页 问题
- Linux下搭建个人网站
- 简单的SpringMVC的测试项目----跟struts2对比着学习
- Linq&;Lumda---LINQ to DataSet的DataTable操作
- SWT常用组件(转)
- Apache启用性能优化——启用Gzip,JS压缩
- NSOutputStream\NSInputStream
- jQuery 遍历ul li 添加 移除
- 原生javascript与jquery 的比较
- Jquery 获取上传文件大小
- Java入门(3)—— 数组
- maven项目部署对Oracle jar包的处理
- [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
- ORA-01466: 无法读取数据 - 表定义已更改
- 【叶问】 MySQL常用的sql调优手段或工具有哪些
- 返回JSON格式(二十五)
- Javascript强制转换
- Gitolite 权限控制
- nodepad++ 正则 替换
- activiti 临时笔记mark
热门文章
- 学习使用PSTools工具中的psping
- 记一次Java获取本地摄像头(基于OpenCV)
- session安全&;&;CBC字符反转攻击&;&;hash拓展攻击
- PHP图片压缩类,高清无损直接用就ok啦
- Kafka和RocketMQ底层存储之那些你不知道的事
- 单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!
- Redis 4.0.2分布式锁的Java实现
- Spring中用@DependsOn注解控制Bean的创建顺序
- Matlab中fspecial的用法
- 【题解】[JSOI2007]字符加密