计划
执行
09点01分 回顾监视器和过滤器
09点49分 接口调试如何实现,能闭眼说明白
10点58分 看不进去了,差不多总结好了,回头再背
记录
问题想法
已解决
- 无监听listener
知识
1. 过滤器
一个函数做一个参数
filterChain.doFilter(new HttpServletRequestWrapper(request) {
@Override //这些就是重写方法
public String getParameter(String name) {
if (name.trim().startsWith(IGNORE_PARAM_PRE)) {
return null;
}
// 返回值之前 先进行过滤
return filterInvalidString(super.getParameter(name));
}
@Override
public String[] getParameterValues(String name) {
if (name.trim().startsWith(IGNORE_PARAM_PRE)) {
return null;
}
// 返回值之前 先进行过滤
String[] values = super.getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = filterInvalidString(values[i]);
}
}
return values;
}
}, response);
这段代码是一个过滤器的实现,用于过滤HTTP请求中的参数。过滤器的作用是在请求到达目标资源之前对请求进行预处理,或在响应返回客户端之前进行后处理。在这个例子中,该过滤器对请求中的参数进行了过滤,以防止恶意攻击或不良数据的输入。
2. 接口调试的实现
这段代码是一个Java方法,用于调试HTTP接口。接受一个名为interFace的接口DTO对象作为参数,其中包含了请求的方法、地址、请求头、请求参数等信息。
代码首先进行参数校验,判断请求方法和地址是否为空,以及地址是否以"http"开头。如果校验通过,则将请求头转换成Map对象,并将请求参数转换成Map对象或者自定义包体,并根据请求方法调用不同的HTTP请求方法发送请求。
最后将请求结果封装成JsonResult对象返回。如果在发送请求过程中出现异常,则将异常信息封装成JsonResult对象返回。
DTO是Data Transfer Object(数据传输对象)的缩写,是一种数据传输对象。在Java中,DTO通常是一个Java Bean(也称为POJO,Plain Old Java Object),用于封装一组数据,以便在不同层次(如UI、服务层、数据访问层等)之间进行传输。接口DTO对象是指在接口调用过程中传输的数据对象,它通常包含了请求的方法、地址、请求头、请求参数等信息。通过封装这些信息,可以方便地在不同层次之间传输数据,简化代码逻辑。
3. JsonResult(1, Tools.getMap("debugResult", HttpPostGet.post(fullUrl, httpParams, httpHeaders)))中的JsonResult,public class JsonResult implements Serializable{}
这段代码定义了一个名为JsonResult的Java类,该类实现了Serializable接口。Serializable接口是Java中的一个标记接口,它没有任何方法,只是起到一个标记作用,表示该类的对象可以被序列化和反序列化。在Java中,序列化是指将一个对象转换成字节流,以便在网络中传输或者存储到文件中,反序列化则是将字节流转换成对象。通过实现Serializable接口,可以将一个对象序列化成字节流,以便在网络中传输或者存储到文件中。在这段代码中,JsonResult类的对象通常用于封装HTTP接口调用的结果,通过实现Serializable接口,可以将JsonResult对象序列化成字节流,以便在网络中传输或者存储到文件中。
4. 具体调用函数
return new JsonResult(1, Tools.getMap("debugResult", HttpPostGet.post(fullUrl, httpParams, httpHeaders)));
这段代码中的new关键字用于创建一个新的JsonResult对象,然后将其作为方法的返回值返回。JsonResult是一个自定义的Java类,通过new关键字可以创建该类的一个新的实例对象。
在这段代码中,JsonResult对象的构造函数需要传入两个参数,第一个参数是状态码,表示调用接口是否成功,通常情况下,状态码为1表示成功,状态码为0表示失败;第二个参数是一个Map对象,用于封装返回结果。在这里,返回结果封装在了一个名为debugResult的键值对中。通过new JsonResult(1, Tools.getMap("debugResult", HttpPostGet.post(fullUrl, httpParams, httpHeaders)))语句创建了一个新的JsonResult对象,并将其作为方法的返回值返回。
5. HttpPostGet.post(fullUrl, httpParams, httpHeaders)
HttpPostGet.post(fullUrl, httpParams, httpHeaders)
是一个静态方法调用,用于发送一个HTTP POST请求并返回结果。它的三个参数分别是:
- fullUrl:请求的完整URL地址,包括协议、主机名、路径和查询参数等。
- httpParams:请求参数,一个Map对象,其中键值对分别表示参数名和参数值。
- httpHeaders:请求头,一个Map对象,其中键值对分别表示请求头的名称和值。
该方法会将参数和请求头封装成一个HTTP POST请求,并发送给指定的URL地址。发送请求时,会根据请求头中的Content-Type字段来确定请求体的格式,通常情况下,Content-Type为application/x-www-form-urlencoded表示请求体是表单格式,Content-Type为application/json表示请求体是JSON格式。发送请求后,该方法会返回一个字符串类型的响应结果,表示服务器返回的内容。在这段代码中,HttpPostGet.post(fullUrl, httpParams, httpHeaders)
方法的返回值作为JsonResult对象的参数传入构造方法中,用于封装HTTP接口调用的结果。
6. public class HttpPostGet{}java类
是一个工具类,封装了HTTP请求的常用方法,包括GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE等方法。这个类中的每个方法都是静态方法,可以直接通过类名调用,不需要创建该类的实例对象。在Java中,静态方法是属于类的,而不是属于实例对象的。因此,通过类名调用静态方法时,不需要创建该类的实例对象,直接使用类名即可。
HttpPostGet类的作用是提供HTTP请求的封装,简化HTTP请求的操作,提高代码的可读性和可维护性。
7. HttpPostGet类的作用是提供HTTP请求的封装
HttpPostGet类的作用是封装HTTP请求的常用方法,包括GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE等方法。这些方法封装了HTTP请求的细节,包括请求头、请求参数、请求体等信息,并通过HTTP协议将数据发送给服务器,并获取服务器返回的数据。这样,使用这些方法时,就无需关注HTTP请求的细节,只需要传入相应的参数即可完成HTTP请求。这样可以提高代码的可读性和可维护性,避免重复的代码编写。同时,这些方法也提供了一些常用的HTTP请求功能,例如表单提交、文件上传、JSON数据提交等。因此,HttpPostGet类的作用是封装HTTP请求的细节,提供常用的HTTP请求功能,简化HTTP请求的操作。
8. HttpPostGet工具类的具体实现需要自己写吗
HttpPostGet
是一个自定义的Java工具类,它的具体实现需要自己编写。通常情况下,HTTP请求的实现是通过Java中的java.net
包或者org.apache.http
包来实现的,这些包提供了HTTP请求所需的类和接口。
在编写HttpPostGet工具类时,可以使用这些类和接口来实现HTTP请求的封装。
具体实现需要根据不同的需求进行编写,例如需要实现GET请求时,可以使用java.net.HttpURLConnection
类来实现;需要实现POST请求时,可以使用org.apache.http.client.methods.HttpPost
类和org.apache.http.impl.client.CloseableHttpClient
类来实现。在实现过程中,需要注意HTTP请求的细节,例如请求头、请求参数、请求体等信息的封装和处理。