我想了解,如果必须通过多个功能处理请求 -
实施例
req.getRequestDispatcher("LoadSession").forward(req, resp);
req.getRequestDispatcher("AuthoriseRoles").forward(req, resp);
req.getRequestDispatcher("Boot").forward(req, resp);
OR
sessionLoader.loadSession(req,res);
authoriseService.authoriseRoles(req,res);
bootService.boot(req, res);
答案 0 :(得分:0)
我假设您正处于设计API的阶段。根据{{3}},url应该反映处理或请求的资源,HTTP方法应该反映需要对资源采取的操作。
因此,代替/ LoadSession并将会话ID作为Http请求中的查询参数,它应该是GET /session/{id}
例如GET /session/e841092fa2194340bc40
(我假设LoadSession是一个返回现有会话的请求)
您可能会问自己遵循此设计的优势是什么。这是有几个库和框架能够解析传入的HTTP请求并为您处理路由(例如,REST design principles是参考JAX-RS实现,JAX-RS是JavaEE' s REST标准)。因此,不是像你提到的那样编写servlet,而是编写代表根据HTTP方法触发的资源和方法的类。你把它与注释结合在一起:
@Path("/session")
import javax.ws.rs.*;
import javax.ws.rs.core.*;
@Produces({MediaType.APPLICATION_JSON})
public class SessionHandler
{
@Context
private HttpServletRequest httpRequest;
@Context
private HttpServletResponse httpResponse;
@GET
@Path("{id}")
public Session load(@PathParam("id") String id) {
...