从外部 web.xml 文件中访问 Servlet 类

发布于 2024-09-13 19:52:33 字数 97 浏览 4 评论 0原文

我有两个 Web 应用程序。但其中只有一个包含 Java servlet 类。我想从其他应用程序的 web.xml 文件中访问该 servlet 类。这可能吗?如果是,怎么可能?。

I have two web applications.But only one among them includes Java servlet class.I want to access that servlet class from within the web.xml file of other application.Is it possible?.If yes,How will be it possible?.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

西瑶 2024-09-20 19:52:33

您不能在 web.xml 中执行此操作。但是,您可以创建一个新的 servlet,该 servlet 又将请求重定向/转发到其他 Web 应用程序的 servlet。重定向很简单,只需让 URL 指向特定的 servlet 即可。

response.sendRedirect("/otherwebapp/theservlet");

转发需要做更多的工作。由于安全限制,默认情况下这是不可能的。首先,您需要配置 servlet 容器以启用相关 Web 应用程序之间的跨上下文访问。目前还不清楚您使用的是哪一个,因此这里只是一个针对 Tomcat 的示例,以便您了解应该向哪个方向寻找自己的 servletcontainer:对于这两个 Web 应用程序,您需要设置 crossContext 属性元素为 true

<Context crossContext="true">

这样您可以通过 ServletContext#getContext() 在 Servlet 内:

ServletContext othercontext = getServletContext().getContext("/otherwebapp");

最后,您可以通过它转发请求,如下所示:

othercontext.getRequestDispatcher("/theservlet").forward(request, response);

You can't do that in the web.xml. You can however create a new servlet which in turn redirects/forwards the request to the servlet of the other webapplication. Redirecting is easy, just let the URL point to the particular servlet.

response.sendRedirect("/otherwebapp/theservlet");

Forwarding requires a bit more work. This is by default not possible due to security restrictions. First you need to configure the servletcontainer to enable cross context access between the webapplications in question. It's unclear which one you're using, so here's just a Tomcat targeted example so that you understand in what direction you should look for your own servletcontainer: for the both webapps, you need to set the crossContext attribute of the <Context> element to true:

<Context crossContext="true">

This way you can obtain the other context by ServletContext#getContext() inside a servlet:

ServletContext othercontext = getServletContext().getContext("/otherwebapp");

Finally you can forward the request through it as follows:

othercontext.getRequestDispatcher("/theservlet").forward(request, response);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文