当我使用path映射servlet时:
<servlet>
<servlet-name>Home1Servlet</servlet-name>
<servlet-class>com.project.servlets.Home1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Home1Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
然后当我通过任何路径从浏览器请求servlet时:
http://localhost:8084/project/
http://localhost:8084/project/asd
http://localhost:8084/project/why
http://localhost:8084/project/hell
所有这些请求都返回相同的Home1Servlet内容。为什么呢?
如何将servlet仅映射到路径“/”?
我正在使用Apache Tomcat 6.0.26,Java EE 5.上下文路径是:/ project
答案 0 :(得分:2)
如果要将servlet仅映射到根URL,请使用空映射:
<url-pattern></url-pattern>
它在Servlet规范12.2中描述:
空字符串(&#34;&#34;)是一个精确映射到的特殊URL模式 应用程序的上下文根,即表单的请求 主机:端口/&LT; context_root&GT; /。在这种情况下,路径信息是/和 servlet路径和上下文路径是空字符串(&#34;&#34;)。
答案 1 :(得分:-1)
您的servlet网址映射为空。
http://localhost:8084/project/<any_url_given>
所以这个网址
<servlet>
<servlet-name>hell</servlet-name>
<servlet-class>com.project.servlets.Hell</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hell</servlet-name>
<url-pattern>/hell</url-pattern>
</servlet-mapping>
并不指向任何特定的servlet类,而是告诉你它接受的任何url模式,例如http :: /。
如果您的servlet映射类似于
http://localhost:8084/project/hell
如果您输入网址
com.project.servlets.Hell
然后应该调用 line-height
servlet。