gpt4 book ai didi

java - 每次我在我的 servlet 上收到请求时如何执行 Listener 类

转载 作者:搜寻专家 更新时间:2023-11-01 02:28:14 25 4
gpt4 key购买 nike

当收到对我的 servlet 的请求时,我想执行一个与之相关并包含一些指令的监听器类。

所以我在 myListener 上实现接口(interface) ServletContextListener,如下所示:

public class MyContextListener implements ServletContextListener {

@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}

@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Context Created");
}

}

在我的 web.xml 上:

  <servlet>
<servlet-name>StartUp</servlet-name>
<servlet-class>com.servlets.StartUp</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>StartUp</servlet-name>
<url-pattern>/StartUp</url-pattern>
</servlet-mapping>

<listener>
<listener-class>com.servlets.MyContextListener</listener-class>
</listener>

那么,当我的 StartUp servlet 收到请求时,我该如何执行我的监听器呢?

最佳答案

ServletContextListener旨在监听 ServletContext 的初始化和销毁​​。换句话说,它只分别在 webapp 的启动和关闭时调用。

你需要一个 ServletRequestListener相反:

@WebListener
public class MyRequestListener implements ServletRequestListener {

@Override
public void requestInitialized(ServletRequestEvent event) {
System.out.println("Request initialized");
}

@Override
public void requestDestroyed(ServletRequestEvent event) {
System.out.println("Request destroyed");
}

}

或者,也许只是一个简单的 servlet filter .不同之处在于,您可以将其配置为监听特定的 URL 模式或特定的 servlet,甚至是专门转发、包含和/或出错的请求。

@WebFilter("/StartUp") // or @WebFilter(servletNames={"StartUp"})
public class StartUpServletFilter implements Filter {

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
System.out.println("Before StartUp servlet is invoked");
chain.doFilter(req, res);
System.out.println("After StartUp servlet is invoked");
}

// Don't forget the init() and destroy() boilerplate.

}

关于java - 每次我在我的 servlet 上收到请求时如何执行 Listener 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com