HttpServletResponse输出流大小永远是16364?
时间: 2023-11-09 13:46:55 浏览: 175
根据你提供的引用内容,我可以回答你的问题。首先,如果你想知道一个内存InputStream的大小以便将其写入HttpResponse的http标头,你可以考虑以下几种方法。
一种方法是通过将InputStream转换为ByteArrayOutputStream,然后获取其大小。可以使用ByteArrayOutputStream的size()方法来获取字节数组的长度。这个长度就是InputStream的大小。例如,你可以这样做:
```java
InputStream inputStream = // your input stream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte
相关问题
获取HttpServletResponse 输出流大小
要获取HttpServletResponse输出流的大小,你可以使用`javax.servlet.ServletOutputStream`的`getBufferSize()`方法。该方法返回输出流的缓冲区大小,即输出流的大小。
示例代码如下:
```java
int bufferSize = resp.getOutputStream().getBufferSize();
```
这将返回输出流的大小,单位为字节。
引用:
: 后端代码: @WebServlet("/response") public class ResponseStudyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求发送的queryString数据:status=xxx String status = req.getParameter("status"); resp.setStatus((Integer.parseInt(status))); resp.getWriter().write("设置响应状态码成功"); } } 。
: 后端代码: @WebServlet("/html") public class HTMLTypeServlet extends HttpServlet { //html?type=... @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //响应html:设置响应的Content-Type resp.setContentType("text/html; charset=utf-8"); PrintWriter pw = resp.getWriter(); //获取queryString中,type的值 String type = req.getParameter("type"); if("1".equals(type)){//返回简单的html pw.println("<h3>获取网页成功</h3>"); }else if("2".equals(type)){//返回复杂的动态html //html?type=2&username=xxx String username = req.getParameter("username"); pw.println("<p>"); pw.println("欢迎你," username); pw.println("</p>"); } } } 。
: 后端代码: @WebServlet("/goto") public class GoToServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //goto?type=xxx String type = req.getParameter("type"); if("1".equals(type)){//重定向 // resp.setStatus(301); // resp.setHeader("Location","hello.html"); //以上代码可以简化为sendRedirect resp.sendRedirect("hello.html"); }else if("2".equals(type)){//转发 req.getRequestDispatcher("hello.html") .forward(req,resp); } } } 。
三、返回一个文件。
获取HttpServletResponse 流大小
获取HttpServletResponse流大小的方法是通过获取响应头中的Content-Length字段的值来实现的。在使用HttpServletResponse对象的getHeader()方法时,需要传入"Content-Length"作为参数。这样就可以获取到响应流的大小。
具体实现代码如下:
```
HttpServletResponse response = ...; // 获取HttpServletResponse对象
String contentLength = response.getHeader("Content-Length"); // 获取Content-Length字段的值
int size = Integer.parseInt(contentLength); // 将Content-Length字段的值转换为整数类型
System.out.println("HttpServletResponse流大小为:" + size); // 打印输出流大小
```
需要注意的是,获取到的流大小是以字节为单位的。
阅读全文