filter中重写应答要素

简介:

Java Web中,重写response应答体(响应体)

Java代码   收藏代码
  1. /*** 
  2.      * Send http request 
  3.      *  
  4.      * @param response 
  5.      * @param bytes  :字节数组 
  6.      * @param contentType  :if is null,default value is  "application/json" 
  7.      * @param encoding   :  编码方式 
  8.      * @throws IOException 
  9.      */  
  10.     public static void sendRequestWriter(HttpServletResponse response, byte[] bytes,  
  11.             String contentType,String encoding) throws IOException {  
  12.         response.setContentLength(bytes.length);  
  13.         if (contentType == null) {  
  14.             contentType = "application/json";  
  15.         }  
  16.         response.setContentType(contentType);  
  17.   
  18.         PrintWriter printer = response.getWriter();  
  19.         printer.println(new String(bytes,encoding));  
  20.         printer.flush();  
  21.         printer.close();  
  22.     }  
  23.       
  24.     /*** 
  25.      *  
  26.      * @param response 
  27.      * @param sendData   :<code>String</code> 
  28.      * @param contentType 
  29.      * @param encoding : such as GBK/utf-8 
  30.      * @throws IOException 
  31.      */  
  32.     public static void sendRequestWriter(HttpServletResponse response, String sendData,  
  33.             String contentType,String encoding) throws IOException {  
  34. //      response.setContentLength(sendData.getBytes(encoding).length);  
  35.         byte[]bytes=sendData.getBytes(encoding);  
  36.         sendRequestWriter(response, bytes, contentType, encoding);  
  37.     }  

 以上方法都是使用PrintWriter来写入response的。

下面的方式是使用流的方式写入response:

Java代码   收藏代码
  1. /*** 
  2.      * test ok 
  3.      * @param response 
  4.      * @param bytes 
  5.      * @param contentType 
  6.      * @param encoding 
  7.      * @throws IOException 
  8.      */  
  9.     public static void sendRequestStream(HttpServletResponse response, byte[] bytes,  
  10.             String contentType) throws IOException {  
  11.         response.setContentLength(bytes.length);  
  12.         if (contentType == null) {  
  13.             contentType = "application/json";  
  14.         }  
  15.         response.setContentType(contentType);  
  16.   
  17.         ServletOutputStream sos = response.getOutputStream();  
  18.         sos.write(bytes, 0, bytes.length);  
  19.         sos.flush();  
  20.         sos.close();  
  21.     }  

 应用:用于在网关中进行请求转发和响应。

见附件中的类com.common.util.SystemUtil

相关文章
|
Java Spring 容器
在Feign接口中返回泛型类型——自定义Decoder
前几天对接了一套第三方接口,所有接口的请求地址一样,请求参数和响应结果中有很多共同的字段,所以就想把这些字段都抽出来,Feign定义的接口直接返回泛型类型。
在Feign接口中返回泛型类型——自定义Decoder
|
4月前
|
JavaScript Java 容器
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
本文简要回顾了Servlet过滤器Filter的概念和使用,通过实例演示了如何创建过滤器以过滤请求字符编码,并解释了在web.xml中配置过滤器时使用`/`、`/*`和`/**`的区别。
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
|
5月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
153 3
|
8月前
|
XML 前端开发 JavaScript
现代接口中的路由处理方式
【5月更文挑战第10天】本文介绍了FastAPI的路由和响应处理。它允许将查询参数如`skip`和`limit`用于URL,并自动进行类型转换和验证。路径装饰器允许配置操作,如添加元数据、响应模型和状态码。 介绍了使用通配符处理多种请求。I作为高性能接口框架的特点,还需根据需求评估其适用性。
135 10
现代接口中的路由处理方式
|
8月前
|
XML 前端开发 JavaScript
现代的接口路由处理方式
【5月更文挑战第14天】FastAPI允许绑定路由到路由组,处理查询参数,如`skip`和`limit`,支持默认值和可选参数。查询参数自动转换并校验类型。路径装饰器用于配置操作,如添加元数据、响应模型和状态码。 通配符(*)可用于允许所有源,但处理凭据时需谨慎。FastAPI提供高性能和灵活性,适合特定业务场景。
354 2
在职责链模式中,如何判断是否应该处理请求或将请求传递给下一个节点
在职责链模式中,如何判断是否应该处理请求或将请求传递给下一个节点
|
Java Spring
SpringMVC中请求传输的各种类型参数分析
SpringMVC中请求传输的各种类型参数分析
76 0
|
8月前
|
存储 Java 数据库
整合切面,参数拦截+过滤
整合切面,参数拦截+过滤
|
8月前
|
Java 数据安全/隐私保护
Filter概述、执行流程、拦截路径配置及过滤器链
Filter概述、执行流程、拦截路径配置及过滤器链
100 0
过滤器链模式PK匿名方法实现,哪个更优雅?
过滤器链模式PK匿名方法实现,哪个更优雅?
114 0
过滤器链模式PK匿名方法实现,哪个更优雅?