一、服务器从浏览器获取传过来的请求体
1.
<form th:action="@{/testRequestBody}" method="post"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="测试RequestBody"> </form><br><br><br>
//服务器通过 RequestBody获取浏览器传过来的请求体,然后将获取到的请求体赋值给形参requestBody @RequestMapping("/testRequestBody") public String testRequesBody(@RequestBody String requestBody){ System.out.println("requestBody"+requestBody); return "success"; }
运行结果:
浏览器:
后台:
2.
<form th:action="@{/testRequestEntity}" method="post"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="测试RequestEntity"> </form><br><br><br>
//服务器通过 RequestEntity获取浏览器传过来的请求报文,然后将获取到的请求报文赋值给形参requestEntity @RequestMapping("/testRequestEntity") public String testRequestEntity(RequestEntity<String> requestEntity){ System.out.println("requestHeader"+requestEntity.getHeaders()); System.out.println("requestBody"+requestEntity.getBody()); return "success"; }
运行结果:
浏览器:
后台:
二、服务器向浏览器相应响应体
3.通过SpringMVC中的 @ResponseBody将响应体响应给浏览器
<a th:href="@{/testResponseBody}">通过SpringMVC中的 @ResponseBody将响应体响应给浏览器</a>
//通过SpringMVC中的 @ResponseBody将响应体响应给浏览器
@RequestMapping("/testResponseBody")
@ResponseBody
public String testResponseBody(){
return "hello response:通过SpringMVC中的 @ResponseBody将响应体响应给浏览器";
}
4.通过servletAPI的response对象响应给浏览器
<a th:href="@{/testResponse}">通过servletAPI的response对象将响应体响应给浏览器</a><br><br>
//通过servletAPI的response对象响应给浏览器 @RequestMapping("/testResponse") public void testResponse(HttpServletResponse response ) throws IOException { response.getWriter().println("hello response:通过servletAPI的response对象将响应体响应给浏览器"); }
三、SpringMVC处理json
四、SpringMVC处理ajax
ajax:页面不刷新与服务器进行交互,所以不能使用转发和重定向
<div id="ajax_test"> <a @click="testAxios" th:href="@{/testAxios}">SpringMVC处理ajax</a> </div> <script type="text/javascript" th:src="@{/static/js/vue.js}"></script> <script type="text/javascript" th:src="@{/static/js/axios.min.js}"></script> <script type="text/javascript"> new Vue({ el:"#ajax_test", methods:{ testAxios:function(event){ axios({ method:"post", url:event.target.href,//获取当前点击事件的href即:@{/testAxios} params:{ username:"admin", password:"123456" } }).then(function(response){ alert(response.data); }); event.preventDefault(); } } }); </script>
@RequestMapping("/testAxios") @ResponseBody public String textAxios(String username,String password ){ System.out.println("username:"+username+"----------password:"+password); return "hello axios"; }
结果:点击后,页面没有跳转
浏览器:
后台:
四、
五、文件下载
@RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws Exception { ServletContext servletContext = session.getServletContext();//获取ServletContext对象 String realPath = servletContext.getRealPath("/static/img/1.png");//获取服务器中文件的真实路径 InputStream is = new FileInputStream(realPath);//创建输入流 byte[] bytes=new byte[is.available()];//创建字节数组 is.read(bytes);//将流读到字节数组中 MultiValueMap<String,String> headers=new HttpHeaders();//创建HttpHeaders对象设置响应头信息 headers.add("Content-Disposition","attachment;filename=1.png");//设置下载方式及下载文件的名字 HttpStatus statusCode=HttpStatus.OK;//设置相应状态码 ResponseEntity<byte[]> responseEntity=new ResponseEntity<>(bytes,headers,statusCode);//创建ResponseEntity对象 is.close();//关闭输入流 return responseEntity; }
六、文件上传
<form th:action="@{/testUp}" method="post" enctype="multipart/form-data"><!--enctype的值设置为二进制的方式传输 --> 头像:<input type="file" name="photo"><br> <input type="submit" value="上传" > </form>
@RequestMapping("/testUp") public String testUp(MultipartFile photo,HttpSession session) throws IOException { //System.out.println(photo.getName());//获取表单中name属性名 //System.out.println(photo.getOriginalFilename());//获取文件名称 String fileName=photo.getOriginalFilename(); String suffixName=fileName.substring(fileName.lastIndexOf("."));//获取上传文件的后缀名 String uuid= UUID.randomUUID().toString();//将UUID作为文件名,避免因文件名重复导致上传后覆盖 fileName=uuid+suffixName;//拼接文件名 ServletContext servletContext = session.getServletContext();//获取ServletContext对象 String photoPath = servletContext.getRealPath("photo");//获取服务器中文件的真实路径 File file=new File(photoPath); //判断上传路径是否存在,若不存在则新建上传目录 if(!file.exists()){ file.mkdir(); } String finalPath=photoPath+File.separator+fileName; photo.transferTo(new File(finalPath)); return "success"; }
文件上传后结果: