Java 使用google appengine的用户服务时出现问题

Java 使用google appengine的用户服务时出现问题,java,google-app-engine,gwt,Java,Google App Engine,Gwt,公共类MyServlet扩展了HttpServlet{ public void doGetHttpServletRequest请求,HttpServletResponse响应 抛出IOException{ UserService UserService=UserServiceFactory.getUserService String thisURL = request.getRequestURI(); if (request.getUserPrincipal() != null)

公共类MyServlet扩展了HttpServlet{ public void doGetHttpServletRequest请求,HttpServletResponse响应 抛出IOException{ UserService UserService=UserServiceFactory.getUserService

    String thisURL = request.getRequestURI();
    if (request.getUserPrincipal() != null) {
        response.getWriter().println("<p>Hello, " +
                                     request.getUserPrincipal().getName() +
                                     "!  You can <a href=\"" +
                                     userService.createLogoutURL(thisURL) +
                                     "\">sign out</a>.</p>");
        System.out.println("<p>Hello, " +
                request.getUserPrincipal().getName() +
                "!  You can <a href=\"" +
                userService.createLogoutURL(thisURL) +
                "\">sign out</a>.</p>");
    } else {
        response.getWriter().println("<p>Please <a href=\"" +
                                     userService.createLoginURL(thisURL) +
                                     "\">sign in</a>.</p>");
    }
}
}


我应该从何处调用此servlet?

在web.xml文件中配置后,您可以调用在servlet映射中定义的URL。

请使用生成的代码创建新的AppEngine项目,您可以找到它的工作原理

您必须在GWT客户端上创建LoginService并在服务器类LoginServiceImpl上实现它。然后您可以调用LoginService.getCurrentUser


查看:

谷歌应用程序引擎提供用户服务以获取当前登录用户。因此,您可以在应用程序启动时使用上述代码。您只需编写一个名为登录过滤器的简单servlet过滤器 您可以检查您发出的每个请求,无论用户是否登录。因此,通过在web.xml中配置的登录过滤器传递所有初始servlet

我希望这对你有帮助

您可以遵循以下示例

public class LoginFilter implements Filter {
  final Logger log = Logger.getLogger(LoginFilter.class.getName());

  @Override
  public void destroy() {

  }

  @Override
  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
      throws IOException, ServletException {
    long before = System.currentTimeMillis();

    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    HttpServletRequest httpReq = (HttpServletRequest)req;
    String uri = httpReq.getRequestURI();
    if (user == null) {
      log.info("There is no user logged in yet");
      if (uri == null || uri.equals("")) {
          uri = "/servletpath";
      }
      String destUrl = "destUri=" + uri;
      RequestDispatcher dispatcher = req.getRequestDispatcher("/yourlogin.jsp" + "?" + destUrl);
      dispatcher.forward(req, resp);
      return;
    } 
    chain.doFilter(req, resp);
    long after = System.currentTimeMillis();
    String name = "";
    if (req instanceof HttpServletRequest) {
      name = ((HttpServletRequest) req).getRequestURI();
    }
    log.info(name + ": " + (after - before) + "ms");
  }

  @Override
  public void init(FilterConfig arg0) throws ServletException {

  }

}