是否可以将 servlet 映射到 /* 而不覆盖 JSP 处理

发布于 2024-10-13 12:30:59 字数 273 浏览 2 评论 0原文

详细说明这一点:

我将 servlet 或过滤器映射到“/*”

现在,如果我访问如下 url:

/test

那么这将被定向到 servlet(这没问题)

但是如果我访问如下 url:

/index.jsp

这也将被定向对于servlet,我不希望出现这种行为,我想要的是将index.jsp 作为jsp 进行处理。

这怎么能做到呢?

Elaborating on this:

I map a servlet or filter to "/*"

Now, if I access a url like:

/test

Then this will be directed to the servlet (which is okay)

But if i access a url like:

/index.jsp

This will be directed also to the servlet, I dont want this behavior, what I want is for index.jsp to be processed as jsp.

How can this be done?

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

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

发布评论

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

评论(1

红衣飘飘貌似仙 2024-10-20 12:30:59

将控制器 servlet 映射到更具体的 url-pattern(例如 /controller/*),并创建映射到 /* 的 Filter 大致类似于 doFilter() 方法中的操作。

String uri = ((HttpServletRequest) request).getRequestURI();
if (uri.endsWith(".jsp")) {
    chain.doFilter(request, response); // Just let it go. The container's builtin JspServlet will pickup this.
} else {
    request.getRequestDispatcher("/controller" + uri).forward(request, response); // Goes to controller servlet.
}

Map your controller servlet on a more specific url-pattern like /controller/* and create a Filter which is mapped on /* and does roughly like follows in doFilter() method.

String uri = ((HttpServletRequest) request).getRequestURI();
if (uri.endsWith(".jsp")) {
    chain.doFilter(request, response); // Just let it go. The container's builtin JspServlet will pickup this.
} else {
    request.getRequestDispatcher("/controller" + uri).forward(request, response); // Goes to controller servlet.
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文