@slf4jpublic class parametercheckrvletrequestwrapper extends httprvletrequestwrapper { private byte[] requestbody; private chart chart; public parametercheckrvletrequestwrapper(httprvletrequest request) { super(request); //缓存请求body try { string requestbodystr = getrequestpoststr(request); if (stringutils.isnotblank(requestbodystr)) { jsonobject resultjson = jsonobject.fromobject(requestbodystr.replace("\"", "'")); object[] obj = resultjson.keyt().toarray(); for (object o : obj) { resultjson.put(o, stringutils.trimtonull(resultjson.get(o).tostring())); 追梦 作文 } requestbody = resultjson.tostring().getbytes(chart); } el { requestbody = new byte[0]; } } catch (ioexception e) { log.error("", e); } } public string getrequestpoststr(httprvletrequest request) throws ioexception { string chartstr = request.getcharacterencoding(); if (chartstr == null) { chartstr = "utf-8"; } chart = chart.forname(chartstr); return streamutils.copytostring(request.getinputstream(), chart); } /** * 重写 getinputstream() */ @override public rvletinputstream getinputstream() { if (requestbody == null) { requestbody = new byte[0]; } final bytearrayinputstream bytearrayinputstream = new bytearrayinputstream(requestbody); return new rvletinputstream() { @override public boolean isfinished() { return fal; } @override public boolean isready() { return fal; } @override public void treadlistener(readlistener readlistener) { } @override public int read() { return bytearrayinputstream.read(); } }; } /** * 重写 getreader() */ @override public bufferedreader getreader() { return new bufferedreader(new inputstreamreader(getinputstream())); }}
public class parametercheckfilter implements filter { @override public void init(filterconfig filterconfig) throws rvletexception { } @override public void dofilter(rvletrequest rvletrequest, rvletrespon rvletrespon, filterchain filterchain) throws ioexception, rvletexception { parametercheckrvletrequestwrapper mywrapper = new parametercheckrvletrequestwrapper((httprvletrequest) rvletrequest); filterchain.dofilter(mywrapper, rvletrespon); } @override public void destroy() { }}
@configurationpublic class filterconfig { @bean public filterregistrationbean authfilterregistrationbean() { filterregistrationbean<filter> registrationbean = new filterregistrationbean<>(); registrationbean.tname("parametercheckfilter"); registrationbean.tfilter(new parametercheckfilter()); registrationbean.torder(1); registrationbean.addurlpatterns("/*"); return registrationbean; }}
1、httprvletrequestwrapper
2、filter
1、新建myhttprvletrequestwrapper继承httprvletrequestwrapper
2、讲传入的body赋值给自己的body(如下)
package com.orisdom.modules.common.filter;import com.alibaba.fastjson.json;import com.alibaba.fastjson.jsonobject;import com.orisdom.modules.monitor.dto.input.monitorpointquerypara;import javax.rvlet.readlistener;impor电脑突然自动关机t javax.rvlet.rvletinputstream;import javax.rvlet.http.httprvletrequest;import javax.rvlet.http.httprvletrequestwrapper;import java.io.bufferedreader;import java.io.bytearrayinputstream;import java.io.ioexception;import java.io.inputstreamreader;import java.nio.chart.chart;/*** @author xiaokang* @description* @date 2021/6/11 10:56*/public class myhttprvletrequestwrapper浪淘沙其一 extends httprvletrequestwrapper { private string tempbody; public myhttprvletrequestwrapper(httprvletrequest request) { super(request); this.tempbody = getbody(request); system.out.println(tempbody); } /** * 获取请求体 * @param request 请求 * @return 请求体 */ private string getbody(httprvletrequest request) { try { rvletinputstream stream = request.getinputstream(); string read = ""; stringbuilder stringbuilder = new stringbuilder(); byte[] b = new byte[1024]; int lens = -1; while ((lens = stream.read(b)) > 0) { stringbuilder.append(new string(b, 0, lens)); } return stringbuilder.tostring(); } catch (ioexception e) { throw new runtimeexception(e); } } /** * 获取请求体 * @return 请求体 */ public string getbody() { monitorpointquerypara para = json.parobject(tempbody, monitorpointquerypara.class); para.tname("1232321321"); tempbody = jsonobject.tojsonstring(para); return tempbody; } /** * 需要重写这个方法 * @return * @throws ioexception */ @override public bufferedreader getreader() throws ioexception { return new bufferedreader(new inputstreamreader(getinputstream())); } /** * 需要重写这个方法 * @return * @throws ioexception */ @override public rvletinputstream getinputstream() throws ioexception { // 创建字节数组输入流 final bytearrayinputstream bais = new bytearrayinputstream(tempbody.getbytes(chart.defaultchart())); return new rvletinputstream() { @override public boolean isfinished() { return fal; } @override public boolean isready() { return fal; } @override public void treadlistener(readlist热点题材ener readlistener) { } @override public int read() throws ioexception { return bais.read(); } }; }}
1.新建myfilter 继承 filter
2.添加@webfilter注解
3.启动类添加@rvletcomponentscan(如下)
package com.orisdom.modules.common.filter;import org.springframework.core.annotation.order;import javax.rvlet.*;import javax.rvlet.annotation.webfilter;import javax.rvlet.http.httprvletrequest;import javax.rvlet.http.httprvletrequestwrapper;import java.io.bufferedreader;import java.io.ioexception;import java.util.hashmap;import java.util.map;/*** @author xiaokang* @description* @date 2021/6/11 9:47*/@webfilterpublic class myfilter implements filter { @override public void init(filterconfig filterconfig) throws rvletexception { } @override public void dofilter(rvletrequest rvletrequest, r小学一年级口算题vletrespon rvletrespon, filterchain filterchain) throws ioexception, rvletexception { myhttprvletrequestwrapper myhttprvletrequestwrapper = new myhttprvletrequestwrapper((httprvletrequest) rvletrequest); // 相当于赋值 myhttprvletrequestwrapper.getbody(); // 自己定义的myhttprvletrequestwrapper filterchain.dofilter(myhttprvletrequestwrapper, rvletrespon); system.out.println(11111111); } @override public void destroy() { }}
没加之前
加了之后
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-06 03:52:24,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/d8877ba8567bcce8cd237a3bcda429f4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Springboot如何使用filter对request body参数进行校验.doc
本文 PDF 下载地址:Springboot如何使用filter对request body参数进行校验.pdf
留言与评论(共有 0 条评论) |