在利用Springboot熟悉http基本内容的时候,自己弄了一个很简单的demo,将一个http请求中的内容转化成String格式打印出来。
代码如下:
其中:
1. IOUtils,用于将InputStream转化成Spring;
2. @ResponseBody注解用于返回处理结果,如果没有的话,请求页面会报不支持"GET"或者"POST"方法的错误。
3. @Controller,有Controller,这个类才会被扫描到;
4. @SpringBootApplication:在SpringBoot的启动类上,需要添加@SpringBootAapplication注解,这样才会去扫描同根目录下的其他类;
@SpringBootApplication = @Controller + @EnableAutoConfiguration + @ComponentScan
5. @RequesterMapping注解用于映射不同的uri,具体用法参考RequestMapping这个注解本身;
6. 可以用postman发送模拟请求对这部分代码进行测试。
-------------------------------------------------- 分割线 --------------------------------------------------
package helloworld.controller; import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Map; import java.util.Map.Entry; @Controller public class RequestController { @RequestMapping("/david") @ResponseBody String david() { return "Hello, David!"; } @RequestMapping(value = "/angus/**", method = RequestMethod.GET) @ResponseBody public String getProcess(HttpServletRequest request){ String retrunValue = "Hello, Angus! This is GET request!"; System.out.println("=======GET Process======="); Map<String,String[]> requestMsg = request.getParameterMap(); Enumeration<String> requestHeader = request.getHeaderNames(); System.out.println("------- header -------"); while(requestHeader.hasMoreElements()){ String headerKey=requestHeader.nextElement().toString(); //打印所有Header值 System.out.println("headerKey="+headerKey+";value="+request.getHeader(headerKey)); } System.out.println("------- parameter -------"); for(String key :requestMsg.keySet()) { for(int i=0;i<requestMsg.get(key).length;i++) { //打印所有请求参数值 System.out.println("key="+key+";value="+requestMsg.get(key)[i].toString()); } } return retrunValue; } @RequestMapping(value = "/angus/**", method = RequestMethod.POST) @ResponseBody public String postProcess(HttpServletRequest request){ String retrunValue = "Hello, Angus! This is POST Request!"; System.out.println("=======POST Process======="); Map<String,String[]> requestMsg = request.getParameterMap(); Enumeration<String> requestHeader = request.getHeaderNames(); InputStream io = null; String body; System.out.println("------- body -------"); try{ io = request.getInputStream(); body = IOUtils.toString(io); //打印BODY内容 System.out.println("Request Body="+body); }catch(IOException e){ e.printStackTrace(); } System.out.println("------- header -------"); while(requestHeader.hasMoreElements()){ String headerKey=requestHeader.nextElement().toString(); //打印所有Header值 System.out.println("headerKey="+headerKey+";value="+request.getHeader(headerKey)); } System.out.println("------- parameters -------"); for(String key :requestMsg.keySet()) { for(int i=0;i<requestMsg.get(key).length;i++) { //打印所有请求参数值 System.out.println("key="+key+";value="+requestMsg.get(key)[i].toString()); } } return retrunValue; } }