报文信息转换器

报文信息转换器

 

 一、服务器从浏览器获取传过来的请求体

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";
    }

文件上传后结果:

报文信息转换器

 

报文信息转换器

上一篇:staticmethod classmethod property


下一篇:10-天猫订单数据分析