web.xml网址格式

时间:2017-06-16 12:07:16

标签: java html servlets web.xml url-pattern

任何人都可以向我提供有关设置网址格式的规则的信息,以及我是否使用/作为我的索引页面,我还需要使用request.getRequestDispatcher("/html/file.html").forward(request,response)

文件file.html位于html文件夹下war文件夹下,html文件夹位于WEB-INF

的同一文件夹中

任何人都可以给我一些建议吗? 谢谢

2 个答案:

答案 0 :(得分:2)

您可以在web.xml中定义一个servlet,如下所示,然后使用request.getRequestDispatcher("file").forward(request,response),基本上会发生的情况是您将请求发送到映射为/file的servlet和该servlet会指向您的资源/html/file.html。请注意,即使元素名称为jsp-file,您也可以从中指出HTML。

<servlet>
    <servlet-name>FileServlet</servlet-name>
    <jsp-file>/html/file.html</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>FileServlet</servlet-name>
    <url-pattern>/file</url-pattern>
</servlet-mapping>

作为附加组件 - 了解URL模式如何与web.xml文件中存在的serlvet映射相匹配,下面是web.xml中的servlet映射规则(源代码为 - Servlet specs和{{3} }):

<强> 1。路径映射:

  • 如果您要创建路径映射,请使用/开始映射,然后将其/*结束。例如:

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/foo/bar/*</url-pattern> <!-- http://localhost:7001/MyTestingApp/foo/bar/index.html would map this servlet  -->
    </servlet-mapping>
    

<强> 2。扩展映射:

  • 如果要创建扩展映射,请使用servlet映射*.。例如:

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>*.html</url-pattern> <!-- http://localhost:7001/MyTestingApp/index.html would map this servlet. Also, please note that this servlet mapping would also be selected even if the request is `http://localhost:7001/MyTestingApp/foo/index.html` unless you have another servlet mapping as `/foo/*`.  -->
    </servlet-mapping>
    

第3。默认servlet映射:

  • 假设您要定义如果映射不匹配任何servelt映射,那么它应该映射到默认servlet,然后将servlet映射为/。例如:

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/</url-pattern> <!-- Suppose you have mapping defined as in above 2 example as well, and request comes for `http://localhost:7001/MyTestingApp/catalog/index.jsp` then it would mapped with servlet  -->
    </servlet-mapping>
    

<强> 4。完全匹配映射:

  • 假设您要定义完全匹配映射,请不要使用任何通配符或其他内容,并定义完全匹配,例如/catalog。例如:

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/catalog</url-pattern> <!-- Only requests with http://localhost:7001/MyTestingApp/catalog will match this servlet   -->
    </servlet-mapping>
    

<强> 5。应用程序上下文根映射:

  • 空字符串""是一个特殊的URL模式,它完全映射到 应用程序的上下文根。即http://localhost:7001/MyTestingApp/形式的请求。

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern></url-pattern> <!-- Only requests with http://localhost:7001/MyTestingApp/ will match this servlet  Please note that if request is http://localhost:7001/MyTestingApp/abc then it will not match this mapping  -->
    </servlet-mapping>
    

<强> 6。匹配所有映射:

  • 如果要将所有请求与一个映射匹配或覆盖所有其他servlet映射,请创建映射为/*

    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/*</url-pattern> <!-- This will override all mappings including the default servlet mapping  -->
    </servlet-mapping>
    

以下是JMS规范的摘要图:

@BalusC answer

答案 1 :(得分:0)

您需要获取Java Servlet Specification 3.1的副本并阅读它。

特别是第10章和第12章。