欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring 注解面面通 之 Http测试工具

程序员文章站 2022-03-05 15:28:48
...

  学习和研究Spring框架的过程中,总是会涉及到Http请求的处理,无论是GetPostHead等等,本文来自己写一份用于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来查看工具页面的效果。

Spring 注解面面通 之 Http测试工具

  4) 进行Get请求测试。

Spring 注解面面通 之 Http测试工具

  5) 进行Post请求测试。

Spring 注解面面通 之 Http测试工具

  总结

​  该文描述的仅是实现了简单请求的测试工具,为了更加方便的进行Spring的研究,所以写了这个测试工具,用于进行各种各样的请求发送和响应查看。

​  若文中存在错误和不足,欢迎指正!