Enterprise 中级

用声明式 JAX-RS 资源类替代冗长的 HttpServlet 样板代码。

✕ Java EE
@WebServlet("/users")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req,
                         HttpServletResponse res)
            throws ServletException, IOException {
        String id = req.getParameter("id");
        res.setContentType("application/json");
        res.getWriter().write("{\"id\":\"" + id + "\"}");
    }
}
✓ Jakarta EE 8+
@Path("/users")
public class UserResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getUser(
            @QueryParam("id") String id) {
        return Response.ok(new User(id)).build();
    }
}
发现此代码有问题? 告诉我们。
📐

声明式路由

注解定义 HTTP 方法、路径和内容类型,而非命令式 switch 语句。

📏

更少代码

50 行 Servlet 样板变为 15 行 JAX-RS 资源。

🔧

内置特性

自动内容协商、参数绑定和异常映射。

旧方式
HttpServlet
现代方式
JAX-RS Resource
自 JDK
11
难度
中级
Servlet 与 JAX-RS
可用

自 Jakarta EE 8 / Java 11 起广泛可用

JAX-RS(Jakarta RESTful Web Services)允许您使用注解而非命令式 doGet/doPost 方法来暴露 REST 端点。路由、内容协商和参数绑定都是声明式的。

分享 𝕏 🦋 in