Java 使用google appengine的用户服务时出现问题
公共类MyServlet扩展了HttpServlet{ public void doGetHttpServletRequest请求,HttpServletResponse响应 抛出IOException{ UserService UserService=UserServiceFactory.getUserServiceJava 使用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)
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 {
}
}