Spring 注解面面通 之 Http测试工具
程序员文章站
2022-03-05 15:28:48
...
学习和研究Spring框架的过程中,总是会涉及到Http请求的处理,无论是Get
、Post
、Head
等等,本文来自己写一份用于Http测试的工具页面。
1) 建Controller
,用于进行页面跳转和测试的后端服务。
package com.arhorchin.securitit.tool;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* @author Securitit.
* @note Http工具.
*/
@Controller
@RequestMapping("/HttpTool")
public class HttpToolController {
/**
* logger.
*/
private Logger logger = LoggerFactory.getLogger(HttpToolController.class);
/**
* 跳转页面.
*/
@RequestMapping(
value = "/HttpTool.html",
method = RequestMethod.GET)
public ModelAndView httpToolHtml(HttpServletRequest req, HttpServletResponse res, ModelMap modelMap)
throws Exception {
logger.info("访问Http工具页面.");
return new ModelAndView("httptool/HttpTool", modelMap);
}
/**
* 测试GET方法.
*/
@ResponseBody
@RequestMapping(
value = "/HttpGet.do",
method = RequestMethod.GET)
public String httpGet() throws Exception {
return "HttpTool is call GET method!";
}
/**
* 测试GET方法.
*/
@ResponseBody
@RequestMapping(
value = "/HttpPost.do",
method = RequestMethod.POST)
public String httpPost(@RequestBody Map<String, String> params) throws Exception {
return "HttpTool is call POST method, param is " + params;
}
}
2) 建Html
,用于模拟各种Http请求操作,请求使用jQuery
库来完成。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Author" content="Securitit">
<meta name="Keywords" content="-">
<meta name="Description" content="Securitit @CookieValue 测试页面">
<title>HTTP方法测试页面</title>
<script src="http://localhost:9199/spring-annotations/assets/js/jquery/3.5.1/jquery-3.5.1.min.js"></script>
</head>
<body>
<h1>HTTP 方法测试工具</h1>
<input id="restUrl" type="text" style="width: 500px; height: 20px;"/>
<select id="restType" style="height: 26px; margin-left: -6px;">
<option>GET</option>
<option>POST</option>
<option>HEAD</option>
<option>PUT</option>
<option>DELETE</option>
<option>PATCH</option>
</select>
<h2>HTTP 请求标头</h2>
<table id="headerTable" style="border: 1px solid #ededed;">
<tr id="headerTr">
<td>
<input headerKey type="text" style="width: 180px; height: 20px;"/>
</td>
<td>
<input headerVal type="text" style="width: 380px; height: 20px;"/>
</td>
</tr>
<tr id="headerTr">
<td colspan="2" align="center">
<button id="addHeader" style="width: 100px; background-color: #e6dddd;">增加</button>
</td>
</tr>
</table>
<h2>HTTP 请求报文</h2>
<div>
<input name="dataType" type="radio" value="json" style="cursor: pointer;" contentType="application/json" checked/>
<span onclick="$(this).prev().click();" style="cursor: pointer;">JSON</span>
<input name="dataType" type="radio" value="xml" style="cursor: pointer; margin-left: 20px;" contentType="text/xml"/>
<span onclick="$(this).prev().click();" style="cursor: pointer;">XML</span>
</div>
<textarea id="reqText" style="width: 575px; height: 100px; margin-top: 10px;"></textarea>
<h2>HTTP 响应报文</h2>
<div>
<div style="display: inline-block; width: 285px;">
<label>响应码:</label>
<span id="resStatus" style="color: #383535;"></span>
</div>
<div style="display: inline-block; width: 285px;">
<label>响应描述:</label>
<span id="resDescription" style="color: #383535;"></span>
</div>
</div>
<textarea id="resText" style="width: 575px; height: 100px; margin-top: 10px;"></textarea>
<div style="margin-top: 15px;">
<button id="sendReq" style="width: 100px; background-color: #e6dddd;">发送请求</button>
</div>
</body>
<script>
$(function(){
$('#addHeader').click(function() {
$('#headerTr').clone().insertBefore($('#headerTr'));
});
$('#sendReq').click(function() {
sendReq();
});
});
// 发送请求.
function sendReq() {
// 请求参数.
var reqText = $('#reqText').val();
if(null == reqText || '' == reqText) {
reqText = {};
}
// 发送请求.
$.ajax({
// 请求地址.
url : $('#restUrl').val(),
// 请求方式.
type : $('#restType').val(),
// 请求数据.
data : reqText,
// 接收类型.
// dataType : $('input:radio[name="dataType"]:checked').val(),
// 请求类型.
contentType : $('input:radio[name="dataType"]:checked').attr('contentType'),
// 请求成功.
success : function(result) {
$('#resText').val(result);
},
// 错误信息.
complete : function(xhr, status){
$('#resStatus').html(xhr.status);
$('#resDescription').html(xhr.statusText);
}
});
}
</script>
</html>
3) 访问http://localhost:9199/spring-annotations/HttpTool/HttpTool.html
来查看工具页面的效果。
4) 进行Get
请求测试。
5) 进行Post
请求测试。
总结
该文描述的仅是实现了简单请求的测试工具,为了更加方便的进行Spring的研究,所以写了这个测试工具,用于进行各种各样的请求发送和响应查看。
若文中存在错误和不足,欢迎指正!