我已为我的应用程序手动配置web.xml
。现在,我在运行我的应用程序时遇到了问题。我正在尝试从我的servlet
页面访问我的jsp
。但是,它将错误抛出为page not found
。
servlet位于文件夹下方位置
<application folder>/WEB-INF/classes/<package>
那么,url-pattern
和servlet-mapping
中servlet的条目应该是什么。因此,servlet
可以通过网址访问。
答案 0 :(得分:68)
url-pattern
中使用 web.xml
将您的servlet
映射到特定网址。请参阅下面的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>
如果您将url-pattern
的{{1}}从AddPhotoServlet
更改为/AddPhotoServlet
。然后,可以使用/MyUrl
访问AddPhotoServlet
servlet。出于安全原因,您希望隐藏实际页面网址。
Java Servlet /MyUrl
规范:
- 以'/'字符开头并以'/ *'结尾的字符串 后缀用于路径映射。
- 以'*。'开头的字符串 prefix用作扩展映射。
- 仅包含'/'字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径 是请求URI减去上下文路径,路径信息是 空值。
- 所有其他字符串仅用于完全匹配。
醇>
您还可以阅读此Basics of Java Servlet
答案 1 :(得分:30)
Servlet-mapping有两个子标记,url-pattern和servlet-name。 url-pattern指定要为其调用servlet-name中指定的servlet的url类型。请注意,容器将使用区分大小写进行字符串比较以进行servlet匹配。
url-pattern
的第一个规范服务器.com上servlet容器上的服务器上下文的web.xml
文件与<url-pattern>/status/*</url-pattern>
中的模式匹配,如下所示: / p>
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上代理的路径/示例的上下文与<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
servlet。
最重要的是,我们应该了解网址路径映射规则