设置 Servlet 的 JSP 位置

发布于 2024-10-04 09:24:18 字数 870 浏览 2 评论 0 原文

我有一个基于 JSP 的简单 Web 应用程序。应用程序的根目录如下所示:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--index.jsp
|--some1.jsp
|--some2.jsp
|--some3.jsp

其中 web.xml 包含以下行:

<servlet>
    <servlet-name>servlet-jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/*.jsp</url-pattern>
</servlet-mapping>

现在我想更改项目的文件结构 - 将所有 *.jsp 文件移动到特殊目录:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--jsp
   |--index.jsp
   |--some1.jsp
   |--some2.jsp
   |--some3.jsp

我可以配置“servlet-jsp”来处理 jsp/some1.jsp 时请求“/some1.jsp”url?

I have simple web application based on JSP. Root of application looks like this:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--index.jsp
|--some1.jsp
|--some2.jsp
|--some3.jsp

Where web.xml contains lines below:

<servlet>
    <servlet-name>servlet-jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/*.jsp</url-pattern>
</servlet-mapping>

Now I want change file structure of project - move all *.jsp files to special directory:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--jsp
   |--index.jsp
   |--some1.jsp
   |--some2.jsp
   |--some3.jsp

Can I configure "servlet-jsp" to process jsp/some1.jsp when "/some1.jsp" url requested?

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

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

发布评论

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

评论(3

故事还在继续 2024-10-11 09:24:18

我认为许多(全部?)容器已经将 *.jsp (在任何目录中)映射到 JSP servlet,因此只有当您想使用自定义文件扩展名时才需要编写这样的显式 servlet 映射你的 JSP。更直接地说:您可能可以删除您编写的 servlet 映射。

/ 中的 JSP 文件请求转发到 /jsp 最好通过定义 过滤器映射。您还需要编写自己的过滤器类。过滤器有点像 Servlet,但它们不像 JSP 或 Servlet 那样生成内容,而是更像流量控制器,[重新]定向请求。

I think many (all?) containers already map *.jsp (in any directory) to the JSP servlet, so writing such an explicit servlet-mapping is only necessary if you want to use custom file extensions for your JSPs. To state it more directly: you can probably just remove the servlet-mapping you have written.

Forwarding requests for JSP files in / to /jsp might best be accomplished by defining a filter mapping. You will also need to write your own filter class. Filters are a little like Servlets, but instead of generating content like a JSP or Servlet would, they are a bit more like a traffic controller, [re]directing requests.

哑剧 2024-10-11 09:24:18

您可以创建一个映射到 /jsp/ 的 servlet,然后使用 request.getRequestDispatcer(targetJsp).forward()

You can create a servlet that is mapped to /jsp/ then parse the path after the servlet mapping and forward to the JSP, using request.getRequestDispatcer(targetJsp).forward()

安人多梦 2024-10-11 09:24:18
<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/jsp/*.jsp</url-pattern>
</servlet-mapping>

我认为这应该可以解决问题。

<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/jsp/*.jsp</url-pattern>
</servlet-mapping>

I think this should do the trick.

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