RequestBody注解

作用:用于获取请求体内容。直接使用得到是key=value&key=value...结构的数据。get方式不适用。

属性:

  • required:是否必须有请求体。默认值是:true。当取值为true时,get请求方式会报错。如果取值是false,get请求得到是null。

使用示例:

<fieldset>
    <h1>RequestBody注解</h1>
    <form action="${pageContext.request.contextPath}/user/useRequestBody" method="post">
        username:<input type="text" name="username"/><br>
        password:<input type="text" name="password"/><br>
        age:<input type="text" name="age"/><br>
        <input type="submit" value="保存"/>
    </form>
</fieldset>
    @RequestMapping("/useRequestBody")
    public String useRequestBody(@RequestBody(required = false) String body){
        System.out.println(body);
        return "success";
    }

效果:

 

 ResponseBody注解

作用:该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据:json,xml等,通过Response响应给客户端。

使用示例:

需求:使用@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端。

springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的包。

 POM.xml导入依赖

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>

由于要访问静态内容js,需要在spring配置文件中applicationContext.xml中设置<mvc:default-servlet-handler/>。因为在配置dispatcherServlet时配置<url-pattern>/</url-pattern>拦截所有请求,这时dispatcherServlet完全取代default Servlet,将不会再访问容器中原始默认的Servlet,而对静态资源的访问就是通过容器默认Servlet处理的,故而这时静态资源将不可访问。

<mvc:default-servlet-handler/>
    <script type="text/javascript" language="JavaScript" src="${pageContext.request.contextPath}/js/jquery-1.10.2.js?t=1"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnSave").click(function () {
                $.ajax({
                    type:"post",
                    url:"${pageContext.request.contextPath}/user/useResponseBody",
                    contentType:"application/json;charset=utf-8",
                    data:'{"username":"lisi","password":"123.abc","age":17}',
                    dataType:"json",
                    success:function (data) {
                        alert(data);
                    }
                });
            });
        });
    </script>

<fieldset>
    <h1>ResponseBody注解</h1>
    <label>${pageContext.request.contextPath}</label>
    <input type="button" value="提交" id="btnSave"/>
</fieldset>
    @RequestMapping("/useResponseBody")
    public @ResponseBody User useResponseBody(@RequestBody(required = false) User user){
        System.out.println(user);
        return user;
    }

 

 posted on 2019-11-28 21:19  会飞的金鱼  阅读(88)  评论(0)    收藏  举报