更多servlet与更多对象

时间:2017-01-03 05:49:50

标签: java servlets java-ee

我想了解,如果必须通过多个功能处理请求 -

  1. 通过多个Servlet转发是好的还是
  2. 实现为对象方法
  3. 实施例

          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);
    

1 个答案:

答案 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) {
    ...