如何读取 servlet 中的 json 值?
How to read json value in a servlet?
我正在通过邮递员将 json 作为 POST 发送到我的 url。
如何在我的 servlet doPOST() 中读取这个 json 值?
输入json:
{
"token":"ABC123"
}
您的 JSON 文档可以解析为 class 如下所示:
@Data
public class Foo {
private String token;
}
而且,你 可以 HttpServlet
and then parse the JSON using Jackson's ObjectMapper
:
@WebServlet("/foo")
public class FooServlet extends HttpServlet {
private ObjectMapper mapper = new ObjectMapper();
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp) throws IOException {
Foo foo = mapper.readValue(req.getInputStream(), Foo.class);
// Do something with foo
resp.setStatus(HttpServletResponse.SC_OK);
}
}
但是,在大多数实际应用程序中,这不是您应该做的事情。 Servlet 有点太低级了,已经创建了一些框架来使事情变得容易得多。实际上,这些框架中的大多数都构建在 servlet 之上。
JAX-RS
在 JAX-RS 及其实现(例如 Jersey)中,您将拥有以下内容:
@Path("/foo")
public class FooResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response doSomethingWithFoo(Foo foo) {
// Do something with foo
return Response.ok().build();
}
}
Spring 网络 MVC
在 Spring Web MVC 中,您可以拥有以下内容:
@RestController
public class FooController {
@PostMapping(path = "/foo", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Void> doSomethingWithFoo(@RequestBody Foo foo) {
// Do something with foo
return ResponseEntity.ok();
}
}
关于JAX-RS和SpringWeb MVC的区别详见.
我正在通过邮递员将 json 作为 POST 发送到我的 url。
如何在我的 servlet doPOST() 中读取这个 json 值?
输入json:
{
"token":"ABC123"
}
您的 JSON 文档可以解析为 class 如下所示:
@Data
public class Foo {
private String token;
}
而且,你 可以 HttpServlet
and then parse the JSON using Jackson's ObjectMapper
:
@WebServlet("/foo")
public class FooServlet extends HttpServlet {
private ObjectMapper mapper = new ObjectMapper();
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp) throws IOException {
Foo foo = mapper.readValue(req.getInputStream(), Foo.class);
// Do something with foo
resp.setStatus(HttpServletResponse.SC_OK);
}
}
但是,在大多数实际应用程序中,这不是您应该做的事情。 Servlet 有点太低级了,已经创建了一些框架来使事情变得容易得多。实际上,这些框架中的大多数都构建在 servlet 之上。
JAX-RS
在 JAX-RS 及其实现(例如 Jersey)中,您将拥有以下内容:
@Path("/foo")
public class FooResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response doSomethingWithFoo(Foo foo) {
// Do something with foo
return Response.ok().build();
}
}
Spring 网络 MVC
在 Spring Web MVC 中,您可以拥有以下内容:
@RestController
public class FooController {
@PostMapping(path = "/foo", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Void> doSomethingWithFoo(@RequestBody Foo foo) {
// Do something with foo
return ResponseEntity.ok();
}
}
关于JAX-RS和SpringWeb MVC的区别详见