Discuss / Java / 【笔记】修改响应

【笔记】修改响应

Topic source

需要修改响应的场景

  • 对于某些请求,由于业务逻辑比较复杂,处理该请求将耗费很长时间

  • 每次响应的内容是固定的

想要实现的效果

  • 通过Filter读取该请求

  • 第一次接到该请求的时候,正常送给对应的Servlet处理

    • 在filter中,将处理完后的HttpServletResponse中的内容读取出来

    • 由于响应内容不变,因此,存入缓存

  • 再一次接收到相同的请求时

    • 根据请求的路径,查找对应的缓存

    • 读出缓存,直接缓存写入该浏览器请求的ServletResponse中,完成该http请求

    • 因此,不用送给对应的Servlet处理,大大提高Web应用程序运行效率

存在的问题

  • 在Fliter中,如果没找到缓存的内容,需要送给对应的Servlet处理

  • 如果将Filter获取的原始HttpServletResponse送给了下一级对用的Servlet的话,就无法获取下游组件写入响应的内容了

解决办法

  • 使用自己的CachedHttpServletResponse

  • 在第一次接收到该http请求的时候,并不传入原始的HttpServletResponse

  • 而是传入自己构造的 伪造的 HttpServletResponse (CachedHttpServletResponse)

  • 所以,可以在下游组件处理完成后,读取出响应的内容,并存入缓存中

  • 下一次再遇到相同的请求,就将不在送给下游组件处理,而是直接返回缓存

叁木辛尧

#2 Created at ... [Delete] [Delete and Lock User]

总结的真好!厉害啊!

Loading...

#3 Created at ... [Delete] [Delete and Lock User]

这个总结的确实好。赞一个


  • 1

Reply