我正在尝试练习Servlets概念。我已经编写了一个示例代码,根据我的理解,应该抛出一个IllegalStateException。但是,我从servlet容器(Apache Tomcat 7)得到了答复。有人可以解释发生了什么吗?
提前致谢。
编辑:
这是HeadFirstServlets中给出的示例。我认为,这是本书第249页中的错误。根据API,该方法永远都不应使会话无效。这是API不一致的另一个示例。
代码段:
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/SessionTest3")
public class SessionTest3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute("foo", "42");
session.setMaxInactiveInterval(0); //Invalidate session immediately.
String foo = (String) session.getAttribute("foo");
if (session.isNew()) { //should cause a runtime exception.
out.println("This is a new Session.");
} else {
out.println("Welcome back!");
}
out.println("Foo = " + foo);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
这是tomcat的API:
void setMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the servlet
container will invalidate this session. A zero or negative time indicates
that the session should never timeout.
Parameters:
interval - An integer specifying the number of seconds
你知道现在为什么吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句