任何人都可以向我提供有关设置网址格式的规则的信息,以及我是否使用/
作为我的索引页面,我还需要使用request.getRequestDispatcher("/html/file.html").forward(request,response)
。
文件file.html
位于html
文件夹下war
文件夹下,html
文件夹位于WEB-INF
任何人都可以给我一些建议吗? 谢谢
答案 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规范的摘要图:
答案 1 :(得分:0)
您需要获取Java Servlet Specification 3.1的副本并阅读它。
特别是第10章和第12章。