Response设置响应数据,重定向,目录问题,字节流,字符流
响应数据分为3部分:
1:响应行 HTTP/1.1 200 OK
void setStatus(int sc) 设置响应状态码
2响应头 Content-type :text/html
void setHearder(String name,String value) 设置响应键值对
3:响应体 <html><head><body></body></html>
PrintWriter getWriter() 获取字符输出流
ServletOutputStream getOUtputStream() :获取字节输出流
Response完成重定向
重定向(Redirect):一种资源跳转方式
实现方式:
resp.setStatus(302)
resp.setHeader("location","资源的虚拟路径")
或者
resp.sendRedirect("要跳转的虚拟路径");
重定向特点:
浏览器地址栏路径发生变化
可以重定向到任意位置的资源(服务器内部,外部均可) 因为浏览器发了两次请求
两次请求,不能再多个资源使用request共享数据
package Response;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/res1")
public class Response1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("res1......");//第一种方法
// resp.setStatus(302);
// resp.setHeader("location","res2");//快捷方法// resp.sendRedirect("Servlet-demo1/res2");String contextPath = req.getContextPath();resp.sendRedirect(contextPath+"/res2");//这样获取路径更完美}
}
package Response;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/res2")
public class Response2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("res2......");}
}
路径问题
明确路径的使用
浏览器使用:需要加虚拟目录(项目访问路径)
服务端使用:不需要加虚拟路径
比如:
<a href=""> 加虚拟路径
<from action=""> 加虚拟路径
reg.getRequestDispatcher("路径" ) 不加虚拟路径
resp.sendRedirect("路径") 加虚拟路径
Response响应字符数据
使用:通过Response对象获取字符输入流
PrintWriter writer= resp.getWriter();
写数据
writer.write("数据");
如需要写html代码,或者中文需要设置流的规则
resp.setContentType("text/html;charset=utf-8");
package Response;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/res3")
public class Response3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");//设置流编码规则PrintWriter writer = resp.getWriter();writer.write("牛马");writer.write("aaa");writer.write("</br>");writer.write("11");}
}
流不需要关闭,随着响应结束,Response对象销毁,由服务器关闭
字节流的使用
通过Response对象获取字符输出流
ServletOutputStream os=resp.getOutputStream();
写数据
OutputStream.write(字节数据);
package Response;import org.apache.commons.io.IOUtils;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;@WebServlet("/res4")
public class Response4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取文件,字节输入流FileInputStream fs = new FileInputStream("F:\\1.png");//获取Response,输出流ServletOutputStream os = resp.getOutputStream();//进行拷贝
// byte[] bytes = new byte[1024];
// int len=0;
// while ((len=fs.read(bytes))!=-1){
// os.write(bytes,0,len);
// }
// fs.close();//关闭流//这里我们直击导坐标,调用方法 ,流对拷IOUtils.copy(fs,os);}
}
io工具包
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
Response设置响应数据,重定向,目录问题,字节流,字符流相关推荐
- Response设置响应数据功能介绍及重定向
目录 一.Response设置响应数据功能介绍 二.Response完成重定向 三.路径问题 一.Response设置响应数据功能介绍 响应数据分为3部分: 1.响应行:HTTP/1.1 200 OK ...
- Response设置响应数据、Response完成重定向(对比 forword)、路径问题、Response响应字符数据、Response响应字节数据
文章目录 Response Response 设置响应数据功能介绍 Response 完成重定向 与请求转发(forword)对比 路径问题 Response 响应字符数据 Response 响应字节 ...
- response设置响应头
通过response设置响应行 设置响应行的状态码 setStatus(int sc) package com.learn.line;import java.io.IOException; impor ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- IO流1(字节流+字符流+输入流+输出流+节点流+处理流)
一(IO流简介) 大多数应用程序都需要实现与设备间的数据传输,如键盘输入数据.显示器显示程序运行的结果等.在Java中,将这种通过不同输入输出设备之间的数据传输抽象表述为"流",程 ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...
- lo流知识(字节流 字符流)
概述:lo流分为字节流字符流 字节流分为:输出流和输入流 输入流:从文件到控制台(把数据从其他设备输到内存中去)读操作 输出流:从控制台到文件(把数据从内存上输出到别的地方)写操作 按数据类型分: 字 ...
- java基础练习复习二:递归字节流字符流二
本篇是基于java基础练习复习一:递归&字节流&字符流一, 如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜"55672346 ...
- 字节流字符流IO资源处理PropertiesResourceBundle
字节流&字符流&IO资源处理&Properties&ResourceBundle - 能够使用字节输入流读取数据到程序//1.创建FileInputStream对象,构 ...
最新文章
- 西瓜书公式推导讲解来了!
- Linux下配置使用外部SMTP发邮件
- 百度编辑器(ueditor)@功能之获取坐标
- Net4.0---VS2010新特性
- 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D
- excel实战应用案例100讲(十三)-使用Python 对 Excel文件进行批量操作
- 基础系列(1)-- html
- java并发(3)ThreadLocal的使用及实现原理(实现原理)
- html+css如何提升,用好这20个css技巧快速提升你的CSS技能
- Splash 简介与安装
- oc-Foundation框架-结构体
- HihoCoder 1511: 树的方差(prufer序)
- 计算机更换固态硬盘方法,笔记本电脑固态硬盘如何更换
- Java项目(SpringBoot+MyBatis-Plus):国内新冠肺炎疫情大数据可视化平台+疫情数据后台管理系统
- 使用python批量压缩图片文件
- 基于 esp-idf 的 UART 应用例程解读
- [wirteup] unctf-web-can_you_hacked_me
- 银河麒麟V10忘记密码
- 连续分布——正态分布、卡方分布、t分布、F分布
- 有人问我为什么不买iphon12,我为什么要买iphone12 pro max
热门文章
- 积极准备、谨慎行动——应对多核编程革命
- fu7推挽胆机音质_FU7胆机自制
- C语言入门我们都需要什么?
- MTK flashtool 在14.04上不能使用问题
- 婚姻匹配问题---盖尔-沙普利(Gale-Shapley)稳定匹配算法
- Window XP 命令提示
- cocos2d-x中为什么要用sharedXX()函数创建单例类的static对象
- “2012中国年度天使投资人”蔡文胜:彻底拥抱新趋势
- php mysql问答系统_PHP+MYSQL问答系统V3.7
- 修炼成C++高手必看的C++书单