当前位置: 首页 > wzjs >正文

政务网站信息化建设情况单页关键词优化费用

政务网站信息化建设情况,单页关键词优化费用,东莞高端网站定制,高网站建设HttpServletRequestWrapper 是 Java Servlet API 中的一个类,作为 HttpServletRequest 接口的包装器(Decorator)实现。 该类设计为装饰者模式(Decorator Pattern)的一部分,允许开发人员通过包装现有的 Http…

HttpServletRequestWrapperJava Servlet API 中的一个类,作为 HttpServletRequest 接口的包装器(Decorator)实现。

该类设计为装饰者模式(Decorator Pattern)的一部分,允许开发人员通过包装现有的 HttpServletRequest对象来定制或修改请求行为。比如:
过滤或修改请求参数
转换请求体数据
添加或删除请求头信息
实现请求级的安全控制,如防止 XSS(跨站脚本攻击)或 SQL 注入等安全风险
修改请求URI或其他请求属性

样例

import com.zhangziwa.practisesvr.utils.stream.StreamIUtils;
import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.text.StringEscapeUtils;import java.io.*;public class FilterHttpServletRequest extends HttpServletRequestWrapper {private final byte[] body;private ByteArrayInputStream byteArrayInputStream;private ServletInputStream servletInputStream;private BufferedReader bufferedReader;public FilterHttpServletRequest(HttpServletRequest request) throws IOException {super(request);body = StreamIUtils.readStream2Bytes(request.getInputStream());byteArrayInputStream = new ByteArrayInputStream(body);}public String getBody() throws UnsupportedEncodingException {String characterEncoding = this.getCharacterEncoding();return new String(body, characterEncoding);}/*** 覆盖父类方法,实现获取参数时自动对参数值进行XSS攻击过滤。** @param name 参数名* @return 如果参数存在,则返回经过HTML转义的、已过滤XSS攻击的参数值;若参数不存在,则返回null*/@Overridepublic String getParameter(String name) {String value = super.getParameter(name);if (value != null) {// 对请求参数值进行XSS过滤return StringEscapeUtils.escapeHtml4(value);}return null;}/*** 重写父类的getCharacterEncoding方法,获取请求的字符编码。* 若当前请求的字符编码未设置或为空,则默认返回"utf-8"作为字符编码。** @return 请求的字符编码,若原编码为空则返回"utf-8"*/@Overridepublic String getCharacterEncoding() {// 调用父类的getCharacterEncoding方法获取字符编码String encoding = super.getCharacterEncoding();// 如果字符编码为空,则默认为utf-8return encoding == null ? "utf-8" : encoding;}/*** 重写父类或接口中的getReader方法,提供一个BufferedReader对象。** @return 返回一个根据请求体内容和字符编码方式创建的BufferedReader对象*/@Overridepublic BufferedReader getReader() {// 如果输入流尚未初始化,则使用请求体内容创建一个新的ByteArrayInputStreamif (byteArrayInputStream == null) {byteArrayInputStream = new ByteArrayInputStream(body);}// 如果BufferedReader还未创建,则进行以下逻辑:if (bufferedReader == null) {// 获取当前请求的字符编码方式String characterEncoding = getCharacterEncoding();try {// 使用获取到的字符编码方式以及已有的ByteArrayInputStream创建一个InputStreamReader对象// 并在此基础上封装一个BufferedReader对象以提高读取效率bufferedReader = new BufferedReader(new InputStreamReader(byteArrayInputStream, characterEncoding));} catch (UnsupportedEncodingException e) {// 若遇到不支持的字符编码异常,捕获并抛出一个包含详细错误信息的RuntimeExceptionthrow new RuntimeException("Unsupported encoding: " + characterEncoding, e);}}// 返回已经创建好的BufferedReader对象return bufferedReader;}/*** 重写父类的 getInputStream 方法,提供一个自定义的 ServletInputStream 实例,* 该实例从内部的 byteArrayInputStream 中读取数据,并支持监听器模式。** @return 自定义的 ServletInputStream 实例,用于读取请求体数据*/@Overridepublic ServletInputStream getInputStream() {// 确保 servletInputStream 的初始化在多线程环境下是安全的if (servletInputStream == null) {synchronized (this) {// 创建并初始化一个 ServletInputStream 子类实例servletInputStream = new ServletInputStream() {/*** 从内部的 byteArrayInputStream 中读取下一个字节数据** @return 下一个可读字节,如果已到达流末尾则返回 -1* @throws IOException 如果发生输入/输出错误*/@Overridepublic int read() throws IOException {return byteArrayInputStream.read();}/*** 判断是否已经读取完所有数据,即 byteArrayInputStream 是否还有可用数据** @return 如果没有更多数据可供读取,则返回 true;否则返回 false*/public boolean isFinished() {return byteArrayInputStream.available() == 0;}/*** 指示此输入流是否准备好进行读取操作** @return 始终返回 true,表示此输入流始终处于就绪状态*/public boolean isReady() {return true;}/*** 设置 ReadListener 监听器,用于异步读取数据。此处未实现具体逻辑。** @param readListener 用于处理数据读取事件的 ReadListener 实例*/@Overridepublic void setReadListener(ReadListener readListener) {// 留给子类实现}};}}// 返回已初始化的 servletInputStreamreturn this.servletInputStream;}
}

[Ref] StreamIUtils 共通方法最佳实践

http://www.dtcms.com/wzjs/33992.html

相关文章:

  • 慈溪做网站的公司广州信息流推广公司排名
  • 宁德网站建设网站推广的目的
  • 网站百度排名怎么做快推广平台的方式有哪些
  • 安徽专业做网站的公司佛山网站建设制作
  • 啤酒网站建设企业推广视频
  • 瓮安做网站游戏推广一个月能拿多少钱
  • 外包做网站一般多少钱今日头条重大消息
  • APP手机端电子商务网站建设淘宝代运营公司
  • 南宁企业网站建设制作广东seo网络培训
  • 江苏专业网站建设网上开店如何推广自己的网店
  • 自己的网站中商城怎么做整合营销传播策划方案
  • 贵阳有哪些做网站的公司超级外链发布工具
  • 东莞北京网站建设seo优化的基本流程
  • 有哪些外国网站做精油的互联网公司排名100强
  • 东莞网站建设培训查关键词
  • 小型b2c网站长沙靠谱seo优化价格
  • 江门网站建设费用电商营销的策略与方法
  • 如何建设好幼儿园网站近期时政热点新闻20条
  • 高端设计网站都有哪些上海app网络推广公司
  • 品牌企业建站日本域名注册
  • 淘客怎样做自己的网站百度官网首页登录入口
  • 扶贫工作网站怎么做优化网站制作方法大全
  • 申请个人网站怎么申请合肥网站seo整站优化
  • 阿里云怎么做网站营销策划推广公司
  • 怎么学好网站开发百度竞价系统
  • 给别人做网站打电话推销高质量软文
  • 在线做海报的网站佛山优化推广
  • 网站服务类型怎么选优化网站排名的方法
  • 做百度网站seo学堂
  • 广州网站建设求职简历游戏代理平台有哪些