我已经手动配置了我的应用程序的web.xml
文件。现在,在运行我的应用程序时遇到了问题。我正在尝试从我的jsp
页面访问我的servlet
。但是,它抛出错误,显示页面未找到
。
这些servlet位于以下文件夹位置下:
<application folder>/WEB-INF/classes/<package>
那么,在url-pattern
和servlet-mapping
中,servlet的条目应该是什么?这样,servlet
就可以通过URL访问。
我已经手动配置了我的应用程序的web.xml
文件。现在,在运行我的应用程序时遇到了问题。我正在尝试从我的jsp
页面访问我的servlet
。但是,它抛出错误,显示页面未找到
。
这些servlet位于以下文件夹位置下:
<application folder>/WEB-INF/classes/<package>
那么,在url-pattern
和servlet-mapping
中,servlet的条目应该是什么?这样,servlet
就可以通过URL访问。
url-pattern
"用于在web.xml
中将您的servlet
映射到特定的URL。请参见下面的xml代码,您可能会在web.xml
配置文件中找到类似的代码。"<servlet>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<servlet-class>upload.AddPhotoServlet</servlet-class> //servlet class
</servlet>
<servlet-mapping>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<url-pattern>/AddPhotoServlet</url-pattern> //how it should appear
</servlet-mapping>
AddPhotoServlet
的 url-pattern
从 /AddPhotoServlet
更改为 /MyUrl
,那么可以通过使用 /MyUrl
访问 AddPhotoServlet
Servlet。这对于安全原因很有用,因为您想要隐藏实际页面的URL。
Java Servlet url-pattern
规范:
- 以'/'字符开头,并以'/*'后缀结尾的字符串用于路径映射。
- 以'*.'前缀开头的字符串用作扩展名映射。
- 仅包含'/'字符的字符串表示应用程序的“默认”Servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null。
- 所有其他字符串仅用于精确匹配。
参考资料:Java Servlet 规范
您可以阅读此 Java Servlet基础知识。/AddPhotoServlet
示例,该Servlet是通过类似于http://AddPhotoServlet.company.com/
的链接访问还是通过http://company.com/AddPhotoServlet
访问? - Don Cheadleservlet-mapping有两个子标签,url-pattern和servlet-name。url-pattern指定了调用给定servlet的urls类型。请注意,容器将对servlet匹配使用区分大小写的字符串比较。
在web.xml文件中第一次指定url-pattern的规范适用于位于server.com的servlet容器上的服务器上下文,其匹配模式如下:<url-pattern>/status/*</url-pattern>
http://server.com/server/status/synopsis = Matches
http://server.com/server/status/complete?date=today = Matches
http://server.com/server/status = Matches
http://server.com/server/server1/status = Does not match
url-pattern的第二个规范 在example.com上路径为/examples的上下文将匹配<url-pattern>*.map</url-pattern>
中的模式,如下所示:
http://server.com/server/US/Oregon/Portland.map = Matches
http://server.com/server/US/server/Seattle.map = Matches
http://server.com/server/Paris.France.map = Matches
http://server.com/server/US/Oregon/Portland.MAP = Does not match, the extension is uppercase
http://example.com/examples/interface/description/mail.mapi =Does not match, the extension is mapi rather than map`
url-mapping的第三个规范:包含模式<url-pattern>/</url-pattern>
的映射将与请求匹配,如果没有其他模式匹配,则使用此默认映射。映射到此模式的servlet称为默认servlet。
通常将默认映射定向到应用程序的第一个页面。明确提供默认映射还可确保处理应用程序中的格式错误的URL请求,而不是返回错误。
下面的servlet-mapping元素将server
servlet实例映射到默认映射。
<servlet-mapping>
<servlet-name>server</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
对于包含此元素的上下文,任何未被其他映射处理的请求都会被转发到 server
服务器。
最重要的是我们应该了解 URL路径映射规则
参考URL模式