【问题标题】:servlet mapping in tomcattomcat中的servlet映射
【发布时间】:2012-01-22 01:45:47
【问题描述】:

抱歉标题含糊,但我在 web.xml 中有一个带有以下映射的 servlet

<servlet>
  <servlet-name>SomeServlet</servlet-name>
  <servlet-class>SomePackage.SomeServlet</servlet-class>
</servlet>  

<servlet-mapping>
    <servlet-name>SomeServlet</servlet-name>
    <url-pattern>/servlet/SomeServlet</url-pattern>
</servlet-mapping> 

在不同的文件夹中打开一个 html 文件并写入响应。结果,该 html 中的图像尝试加载 /servlet/images/someimage.png 而不是 /images/someimage.png

我知道 html 中的图像引用是相对的,因此它试图从 servlet 路径中去,但我无法更改 html 页面或 servlet 代码。有什么理由从配置文件中解决这个问题?

谢谢

【问题讨论】:

    标签: tomcat servlets


    【解决方案1】:

    将 servlet 映射到 /SomeServlet

    或者创建一个映射到/servlet/images/*.jpg 的servlet,它转发到/images/Xxx.jpg,其中Xxx 是匹配通配符的。

    你在什么样的环境中工作,你无法改变什么?

    【讨论】:

    • 页面发布到/servlet/SomeServlet,我无法更改html。
    • @JBNitz 从带有 IIS 的 ServletExec 迁移到 tomcat。只有大约 10 个 servlet,但我只有类文件。至于 html 页面,我有数百个页面发布到这些 servlet,我正在尝试看看是否有一种方法可以实现这一点而无需更改单个页面。
    • @JBNitz 现在,我是否必须创建一个扩展 HttpServlet 的新 servlet?
    【解决方案2】:

    在你的 HTML 文件中使用上下文路径..

    <img src ="/CONTEXT/images/someimage.png"/>
    

    例如

    <img src ="/StackOverOverflow/images/someimage.png"/>
    

    抱歉,我没有注意到您无法更改 HTML。

    如果创建一个过滤器,它将过滤掉图像并将调用转发到 servlet,如果它与您的 servlet 路径匹配,怎么样?你试过了吗?

    【讨论】:

    • 如果我可以更改 html 文件,我知道从 src="someimage.png" 更改为 src="/someimage.png" 会解决它,但我目前无法修改 html 文件。
    猜你喜欢
    • 2018-11-24
    • 2010-11-08
    • 2017-02-01
    • 2012-02-12
    • 2013-10-11
    • 2016-10-28
    • 1970-01-01
    • 2012-12-22
    • 2011-10-05
    相关资源
    最近更新 更多