我有问题:
看,当用户访问我的网页时,我想从他的 cookie 或数据库中的特殊 ID 获取有关用户的信息,并在用户访问页面时在我的页面上呈现例如 hello User1。
filter.init()
在用户请求 servlet 之前,我必须在哪里执行此操作,或者在哪里servlet.init()
可以获取此特定信息servlet.doGet()
?
谢谢你。最诚挚的问候。
我有问题:
看,当用户访问我的网页时,我想从他的 cookie 或数据库中的特殊 ID 获取有关用户的信息,并在用户访问页面时在我的页面上呈现例如 hello User1。
filter.init()
在用户请求 servlet 之前,我必须在哪里执行此操作,或者在哪里servlet.init()
可以获取此特定信息servlet.doGet()
?
谢谢你。最诚挚的问候。
在您的 Filter 中,使用方法 doFilter
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException, ServletException {
//check cookie or anything you want
}
通常,您希望使用过滤器来转换输入或输出,或者为您的 servlet 设置前置条件。
在您的特定情况下,因为它非常简单,所以您选择哪一个可能并不重要。 然而,让过滤器执行身份验证和授权是很常见的,因此您可以让过滤器检查 cookie 和/或查询数据库以获取用户信息,并将其添加为请求属性。之后,让 servlet 使用准备好的请求属性完成准备或写入消息的工作。作为一般规则,您不想在过滤器中写入输出。
在任何一种情况下,您都不会init
为此任务使用过滤器或 servlet 的方法。当应用程序服务器创建对象时调用该init
方法来初始化过滤器或 servlet,并且可能会或可能不会为每个请求调用(实际上,它可能不会为每个请求调用)。