Java web.xml中url模式的意义是什么?如何配置servlet?
我已经为我的应用程序手动配置了Java web.xml中url模式的意义是什么?如何配置servlet?,java,servlets,web.xml,url-pattern,servlet-mapping,Java,Servlets,Web.xml,Url Pattern,Servlet Mapping,我已经为我的应用程序手动配置了web.xml。现在,我在运行应用程序时遇到了一些问题。我正试图从我的jsp页面访问我的servlet。但是,它抛出错误,因为未找到页面 servlet放在下面的文件夹位置下 <application folder>/WEB-INF/classes/<package> /WEB-INF/classes/ 那么,在url模式和servlet映射中,servlet的条目应该是什么呢。因此,可以通过URL访问servlet。URL模式在web.
web.xml
。现在,我在运行应用程序时遇到了一些问题。我正试图从我的jsp
页面访问我的servlet
。但是,它抛出错误,因为未找到页面
servlet放在下面的文件夹位置下
<application folder>/WEB-INF/classes/<package>
/WEB-INF/classes/
那么,在
url模式
和servlet映射
中,servlet的条目应该是什么呢。因此,可以通过URL访问servlet
。URL模式在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//servlet名称
upload.AddPhotoServlet//servlet类
AddPhotoServlet//servlet名称
/AddPhotoServlet//它应该如何显示
如果将AddPhotoServlet
的url模式从/AddPhotoServlet
更改为/MyUrl
。然后,可以使用/MyUrl
访问AddPhotoServlet
servlet。出于安全考虑,您需要在其中隐藏实际页面URL
Javaservleturl模式
规范:
一个字符串,以'/'字符开头,以'/*'
后缀用于路径映射李>
以“*”开头的字符串。
前缀用作扩展映射李>
仅包含'/'字符的字符串表示应用程序的“默认”servlet。在本例中,servlet路径
请求URI减去上下文路径,路径信息为
空李>
所有其他字符串仅用于精确匹配
参考:
您还可以阅读此Servlet映射有两个子标记,url模式和Servlet名称。url模式指定应调用servlet名称中给定的servlet的url类型。请注意,容器将使用区分大小写的字符串比较来进行servlet匹配
server.com上servlet容器上服务器上下文的web.xml
文件的url模式的第一个规范与/status/*
中的模式匹配,如下所示:
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
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模式的第二个规范位于example.com代理上的路径/示例的上下文与*.map
中的模式匹配,如下所示:
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
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映射的第三个规范url映射
,如果没有其他模式匹配,则包含模式
/
的映射将匹配请求。这是默认映射。映射到此模式的servlet称为默认servlet
默认映射通常指向应用程序的第一页。显式提供默认映射还可以确保应用程序处理格式错误的URL请求,而不是返回错误
下面的servlet映射元素将server
servlet实例映射到默认映射
<servlet-mapping>
<servlet-name>server</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
服务器
/
对于包含此元素的上下文,任何未由另一个映射处理的请求都将转发到服务器
servlet
最重要的是,我们应该了解URL路径映射的规则
容器将尝试找到请求路径与servlet路径的精确匹配。成功匹配将选择servlet
容器将递归地尝试匹配最长路径前缀。这是通过使用“/”字符作为路径分隔符,一次将路径树从一个目录中删除来完成的。最长匹配确定所选的servlet
如果URL路径中的最后一段包含扩展名(例如.jsp),servlet容器将尝试匹配处理扩展名请求的servlet。扩展名定义为最后一个“.”字符后最后一段的一部分
如果前三个规则都没有导致servlet匹配,那么容器将尝试提供适合所请求资源的内容。如果为应用程序定义了“默认”servlet,则将使用它
参考仅添加一点,如果OP使用的是支持servlet 3.0的Web应用程序servlet,则无需在Web.xml中配置servlet。对于/AddPhotoServlet
示例,有一个很好的解释——该Servlet是否可以通过http://AddPhotoServlet.company.com/
?还是可以通过http://company.com/AddPhotoServlet
?首先阅读servlet规范和映射。请参考@var_给出的答案。如果您再次面临问题或异常,请粘贴有问题的异常,社区将尝试调试该问题。您应该接受答案,让社区从中受益。