`
xiaoZ5919
  • 浏览: 404829 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

使用HttpServletResponseWrapper获取渲染jsp以后的html

阅读更多

   有些场景,我们会试图获取渲染jsp以后的html,或者修改一下生成json,例如把普通的json换成跨域的jsonp。

ResponseFacade只提供了getOutStream(),但是获取不了stream的容器bytearray,不通过hacker的方式根本获取不了。Tomcat也意识到这一点,提供了HttpServletResponseWrapper帮我们解决这个问题,对于HttpServletResponseWrapper有这样的comments:

 

       Provides a convenient implementation of the HttpServletResponse interface

 * that can be subclassed by developers wishing to adapt the response from a

 * Servlet. This class implements the Wrapper or Decorator pattern. Methods

 * default to calling through to the wrapped response object.

 

我们只要在其子类添加一些逻辑就能得到我们想要的东西,用byteArrayOutSteam换掉coyoteOutStream,再通过toByteArray就能获取到html,但这得借助filter帮我们用responsewrapper在dochain()换掉reponse,

上代码吧

/**  
     * Creates a GenericResponseWrapper  
     */ 
    public GenericResponseWrapper(final HttpServletResponse response, final OutputStream outstr) {  
        super(response);  
        this.outstr = new FilterServletOutputStream(outstr);  
    } 

/**  
     * Gets the outputstream.  
     */ 
    public ServletOutputStream getOutputStream() {  
        return outstr;  
    }  


  /**  
     * Gets the print writer.  
     */ 
    public PrintWriter getWriter() throws IOException {  
        if (writer == null) {  
            writer = new PrintWriter(new OutputStreamWriter(outstr, getCharacterEncoding()), true);  
        }  
        return writer;  
    }  
 

 

分享到:
评论

相关推荐

    用servlet将jsp文件内容转为html

    ### 使用Servlet将JSP文件内容转换为HTML 在Web开发中,经常需要处理不同格式的文件转换任务。本文将详细介绍如何使用Servlet技术将JSP页面的内容转换为HTML格式,并保存到本地磁盘的过程。 #### 一、理解Servlet...

    使用Filter和HttpServletResponseWrapper进行页面缓存

    源代码 博文链接:https://msj.iteye.com/blog/179663

    jsp生成静态页面的方法

    // 获取需要转换成HTML的JSP文件名,例如index.jsp url = "/" + file_name + ".jsp"; // 指定JSP文件路径 name = "/home/resin/resin-2.1.6/doc/" + file_name + ".htm"; // 设置生成的HTML文件路径 ...

    servlet与jsp中文乱码处理

    - **JSP标签乱码**:如果使用`<%= %>`或`<jsp:expression>`标签输出中文,需确保页面编码正确。 - **表单提交乱码**:对于POST请求,需在JSP中设置请求编码,例如`<form method="post" accept-charset="UTF-8">`。...

    JSP生成静态页面[归类].pdf

    《JSP生成静态页面》 在Web开发中,提高页面加载速度和搜索引擎友好性是重要的优化目标之一。静态页面由于不涉及服务器端处理,通常比动态页面更快,更易于搜索引擎抓取。JSP生成静态页面的技术就是为了实现这一...

    解决JSP字符串乱码的过滤器

    总的来说,解决JSP字符串乱码的过滤器是通过Java Servlet Filter机制,在请求到达Servlet之前和响应离开Servlet之后,对字符编码进行统一管理,从而保证数据传输的正确性。通过配置和编写Filter,我们可以确保整个...

    java,jsp,servlet 乱码

    - JSP页面通常在顶部使用`<%@ page pageEncoding="utf-8"%>`来指定页面编码。 2. **请求编码**: - 在Servlet或JSP中,通过`request.setCharacterEncoding("UTF-8")`设置请求编码,确保与页面编码一致。 - 如果...

    jsp实现将动态网页转换成静态页面的方法.docx

    - 使用`Filter`拦截特定的JSP请求。 - 创建自定义的`ServletResponse`包装器`FileCaptureResponseWrapper`来重定向JSP输出到指定文件。 3. **自定义Filter实现**: ```java public class FileCaptureFilter ...

    java网页格式的所有类的说明

    5. **JSTL(JavaServer Pages Standard Tag Library)**:为了减少在JSP页面中使用脚本,JSTL提供了一套标准标签库,包括核心标签、XML标签、JDBC标签、函数标签等,提高了代码的可读性和可维护性。 6. **EL...

    java filter打印请求返回参数

    为了实现在过滤器中获取请求体内容以及响应内容的功能,本方案主要采用了以下技术手段: 1. **对`HttpServletRequest`进行封装**:通过创建`HttpServletRequestWrapper`子类来包装原始请求对象,并重写`getReader()...

    javax.servlet.jar下载

    javax/servlet/jsp/resources/jsp_2_0.xsd javax/servlet/jsp/resources/jsp_2_1.xsd javax/servlet/jsp/resources/jspxml.xsd javax/servlet/LocalStrings.properties javax.servlet....

    java过滤器中修改一个http请求的返回内容.docx

    通过使用`HttpServletResponseWrapper`,我们可以控制响应的输出流,将其存储在内存中,然后在需要时进行修改。这对于实现诸如日志记录、内容过滤、字符编码转换等任务非常有用。在实际应用中,开发者可以根据具体...

    java过滤器中修改一个http请求的返回内容.pdf

    5. **新增`getResult()`**:这是一个自定义方法,用于获取存储在缓冲区中的最终响应内容,通常是HTML字符串。 在`ResponseWrapper`中,我们还需要实现`WapperedOutputStream`类,这是一个内部类,它包装了`...

    springsecurity-thymeleaf.zip

    1. **Filter Chain**: Spring Security 使用一系列过滤器来处理请求,如`HttpServletRequestWrapper` 和 `HttpServletResponseWrapper`,这些过滤器负责身份验证、授权和其他安全操作。 2. **Authentication ...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    所以在JSP容器通过Response获取输出流之前,前面的流并没有关闭,所以会造成该异常的报出。 本文解决办法: 在前面所说的网络解决办法中,使用的是一种躲避的方式解决该问题,也就是置之不理。 这里提供一个...

    scwcd考试中常用的API

    - **class: HttpServletResponseWrapper**:用于包装HttpServletResponse对象,允许修改响应属性。 ### 3. Filters Filter在Servlet容器中起着拦截器的作用,可以在请求到达目标资源之前或响应发送到客户端之前...

Global site tag (gtag.js) - Google Analytics