在拦截器中获取请求体(requestbody)的内容,代码如下:
import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /** * * @author * 流的方式获取JSON数据 */ public class RequestWrapper extends HttpServletRequestWrapper { //存放JSON数据主体 private final String body; public RequestWrapper(HttpServletRequest request) throws IOException { super(request); StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try { InputStream inputStream = request.getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); char[] charBuffer = new char[128]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { stringBuilder.append(charBuffer, 0, bytesRead); } } else { stringBuilder.append(""); } } catch (IOException ex) { throw ex; } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException ex) { throw ex; } } } body = stringBuilder.toString(); } @Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes("UTF-8")); ServletInputStream servletInputStream = new ServletInputStream() { @Override public int read() throws IOException { return byteArrayInputStream.read(); } }; return servletInputStream; } @Override public BufferedReader getReader() throws IOException { return new BufferedReader(new InputStreamReader(this.getInputStream())); } public String getBody() { return this.body; } }
相关推荐
public ResponseEntity<?> login(@RequestBody Login login) { // 登录逻辑 if (validateLogin(login)) { User user = getUserFromDatabase(login.getUsername()); String token = JwtUtils.generateToken(user...
SpringMVC通过@RequestBody、@ResponseBody注解以及HttpMessageConverter等机制,提供了对AJAX请求的强大支持,允许开发者以非常简洁的方式处理JSON和XML数据。 SpringMVC的配置相对灵活,可以在一个或多个配置文件...
- `@RequestBody` 和 `@ResponseBody`:用于处理HTTP请求体和响应体。 5. **拦截器(Interceptor)**: - 拦截器可以在请求到达处理器之前或之后执行自定义逻辑,例如日志记录、权限检查、性能统计等。 - 实现`...
SpringMVC是Java Web开发中广泛使用的框架,它在企业级应用中扮演着核心角色,因此对于求职者来说,掌握SpringMVC的知识至关重要。这里,我们深入探讨22道SpringMVC面试题,帮助你更好地理解和准备面试。 1. **什么...
- **实现方式**:使用`@ResponseBody`注解将Java对象序列化为JSON字符串,或使用`@RequestBody`注解将JSON字符串反序列化为Java对象。 ##### 6.5 RESTful支持 - **实现方式**:通过`@RequestMapping`指定HTTP方法和...
SpringMVC提供了多种适配器,如RequestMappingHandlerAdapter,用于支持@RequestBody、@ResponseBody等注解的处理器。处理器执行完业务逻辑后,可能会返回ModelAndView对象,包含了视图名和模型数据。 然后,视图...
15. **Ajax支持**:Spring MVC提供了方便的Ajax支持,可以通过@ResponseBody和@RequestBody注解来处理JSON或XML格式的异步请求。 在"spring3hello"这个示例中,很可能是对Spring MVC的基本Hello World应用,展示了...
Spring MVC 4.1增强了对RESTful风格的支持,包括使用`@PathVariable`获取URL路径中的变量,`@RequestParam`获取请求参数,`@RequestBody`和`@ResponseBody`用于JSON或其他格式的HTTP消息体交互。 9. **消息转换器...
11. **@RequestBody** 和 **@ResponseBody**:前者用于将HTTP请求体中的数据映射到方法参数,后者用于将方法返回的对象直接序列化为HTTP响应体。 12. **HandlerAdapter**:适配器模式的体现,Spring MVC提供了多种...
6. `@RequestBody` 和 `@ResponseBody`:将请求体转换为对象,或者将响应对象直接写入响应体。 7. `@ModelAttribute`:用于绑定请求参数到模型对象,常与表单提交一起使用。 现在,让我们通过一个例子来理解这些...
为了支持JSON操作,可以在SpringMVC中添加`MappingJacksonHttpMessageConverter`消息转换器,然后通过`@RequestBody`和`@ResponseBody`注解来处理JSON数据。 ##### 控制器 控制器在SpringMVC中通常由带有`@...
Spring MVC 提供了强大的数据绑定和验证功能,`@RequestParam`、`@PathVariable`、`@RequestBody` 等注解用于参数绑定,而 `@Valid` 和 `javax.validation` 验证注解用于数据校验。 8. **RESTful API 设计**: ...
- `@RequestBody`:将请求体内容转换为Java对象,通常用于POST请求。 - `@ModelAttribute`:用于从模型中获取或向模型添加属性。 4. **视图解析**: - `@ResponseBody`:将方法返回值直接写入HTTP响应体,常用于...
8. **AJAX支持**:SpringMVC通过`@ResponseBody`和`@RequestBody`支持JSON或XML格式的数据交换,方便实现异步请求。 9. **RESTful风格**:SpringMVC可以轻松实现RESTful API,利用HTTP动词(GET、POST、PUT、DELETE...
这些方法通常会通过@RequestBody和@RequestParam等注解来接收请求参数,然后进行业务处理。 视图层在SpringMVC中可以是任何支持的视图技术,如JSP、Thymeleaf或FreeMarker。Controller处理完业务逻辑后,会返回一个...
- 请求体参数:使用 @RequestBody 从 HTTP 请求体中获取 JSON 或 XML 数据。 7. **JSON 处理** - 配置 Jackson 或 Gson 库,支持自动将 Java 对象转换为 JSON 字符串,反之亦然。 - 使用 @ResponseBody 注解标记...
通过Spring MVC提供的注解,如@RequestParam、@PathVariable、@RequestBody、@ResponseBody等,可以方便地处理HTTP请求参数。 总结,Spring MVC作为一个轻量级的Web框架,其灵活的配置和强大的功能使得开发者能高效...
- 利用 `@RequestBody` 和 `@ResponseBody` 处理 JSON 或 XML 数据交换。 这些只是 Spring MVC 基本概念的一部分,实际的压缩包资料可能涵盖了更深入的内容,如AOP(面向切面编程)、Spring Security、Spring Data...
通过注解@RequestBody和@ResponseBody可以方便地处理请求参数和返回响应。 4. **ModelAndView**:用于在Controller中存储模型数据和视图名,然后传递给视图解析器。 5. **ViewResolver**:视图解析器,根据...
对于更复杂的请求,可以使用@RequestParam来获取查询参数,或者使用@RequestBody来接收JSON或XML格式的请求体。 处理完数据后,Spring MVC会通过视图解析器将结果模型和视图名结合,渲染出响应内容。常见的视图技术...