【问题标题】:Jsp serverlet mapping url-pattern /* overrides the welcome-fileJsp servlet 映射 url-pattern /* 覆盖欢迎文件
【发布时间】:2013-04-01 08:25:41
【问题描述】:

我正在使用 Java 在 Google 应用引擎上构建网站。 在那里,我正在尝试使用 servlet 映射来映射 jsp 页面,如下所示:

http://localhost:8080/<any text> 应该映射到 r.jsp

http://localhost:8080 应该映射到 home.jsp

但是这两个 url 总是被映射到 r.jsp

而我的web.xml如下:

<servlet>
    <servlet-name>r</servlet-name>
    <jsp-file>/r.jsp</jsp-file>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>r</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>home</servlet-name>
    <jsp-file>/home.jsp</jsp-file>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>home</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>home.jsp</welcome-file>
</welcome-file-list>

我也试过&lt;url-pattern&gt;""&lt;/url-pattern&gt;而不是&lt;url-pattern&gt;/&lt;/url-pattern&gt;,它也没有用

有任何 servlet 映射解决方案吗?

【问题讨论】:

    标签: google-app-engine jsp servlets


    【解决方案1】:

    把你的 web.xml 改成这样的

    <servlet>
    <servlet-name>r</servlet-name>
    <jsp-file>/r.jsp</jsp-file>
    <load-on-startup>0</load-on-startup>
    </servlet>
    
    <servlet-mapping>
    <servlet-name>r</servlet-name>
    <url-pattern>/ewerw</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>r</servlet-name>
    <url-pattern>/rrrxdsfwef</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>r</servlet-name>
    <url-pattern>/xy1</url-pattern>
    </servlet-mapping>
    
    <servlet>
    <servlet-name>home</servlet-name>
    <jsp-file>/home.jsp</jsp-file>
    <load-on-startup>0</load-on-startup>
    </servlet>
    
    <welcome-file-list>
    <welcome-file>home.jsp</welcome-file>
    </welcome-file-list>
    

    【讨论】:

    • 嗨,阿维纳什。现在http://localhost:8080 正在映射到home.jsp。并且http://localhost:8080/test/xy1 映射到r.jsp。有没有办法在不改变主页映射的情况下将http://localhost:8080/xy1 映射到r.jsp。还是这是唯一的解决方案?
    • 是的,你可以做到。将 /test/* 替换为 /xy1
    • 对不起,我问错了,我希望所有http://localhost:8080/xy1http://localhost:8080/rrrxdsfwefhttp://localhost:8080/ewerw 映射到r.jsphttp://localhost:8080 映射到home.jsp
    • 在这种情况下,您可以使用多个 servlet 映射。我已经更新了答案,它可能对你有用。另外,我建议您在开始编码之前先了解 servlet 映射的基础知识。 javapapers.com/servlet/what-is-servlet-mapping
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多