【发布时间】:2017-09-22 06:39:37
【问题描述】:
我有一个登录 servlet,它使用用户名和密码参数处理发布请求,并执行以下操作:
Instant pageGenStart = Instant.now();
String username = req.getParameter("username");
String password = req.getParameter("password");
resp.setContentType("text/html;charset=utf-8");
User user = null;
try {
user = userService.getByUsername(username);
} catch (SQLException e) {
e.printStackTrace();
}
if (user == null && !password.equals("")) {
try {
user = new User(username, password);
user.setId(userService.addNewUser(username, password));
charactersService.addNewCharacter(user);
sessionsService.add(req.getSession().getId(), user.getId());
} catch (SQLException e) {
e.printStackTrace();
}
resp.setContentType("text/html;charset=utf-8");
resp.setStatus(HttpServletResponse.SC_OK);
Duration time = Duration.between(pageGenStart, Instant.now());
resp.sendRedirect("/main");
}
如果在数据库中找不到用户,则创建新用户并将他重定向到主页。通常我会把这个“时间”变量放到页面中,但我会将我的响应重定向到调用 doGet 方法的其他 servlet。我如何让其他 servlet 知道登录 servlet 需要多长时间来处理 post 请求?
【问题讨论】:
-
将其添加到您的请求或会话中
-
@ScaryWombat 有什么方法可以包含它吗?还是我只是将其添加为字符串,例如 resp.sendRedirect("/main" + time.toMillis()) ?因为如果我这样做,它不会被包含为参数。
-
你想用时间做什么?一般来说,如果您进行外部重定向,您要么需要将其存储在会话中,要么将其包含在重定向的请求参数中(但您必须接受它可以被用户操纵,除非您签名数据)
-
@ErwinBolwidt 一般来说,我只想在每个页面上显示页面生成时间
-
resp.sendRedirect("/main?generationTime=" + time.toMillis())