servletfilter如何识别下一个目标是另一个filter还是servlet / jsp?
我们通常最终在web.xml中为servlet中的任何Filter编写/*
。
requestRedirectorFilter /action `.
现在我的疑问是java如何识别下一个servlet / jsp是哪个? 因为我们通过任何要求
request.getRequestDispatcher("/ABCXYZ").forward(request, (HttpServletResponse)servletResponse);
要在下一个servlet / jsp上导航,默认情况下容器将在web.xml中搜索。 在web.xml中, /*
已经存在于我们使用的filter中。 究竟这里的实际问题就开始了。
如果/*
[其作用类似于任何请求的通用接收器]已存在于web.xml中,那么heck容器如何知道如何跟随/ABCXYZ
而不是/*
? 请在这方面分享您的观点和知识。
Servlet匹配程序
请求可以匹配给定上下文中的多个servlet映射。 servlet容器使用简单的匹配过程来确定最佳匹配。
匹配过程有四个简单的规则。
-
首先,容器更喜欢通配符路径匹配的精确路径匹配。
-
其次,容器更喜欢匹配最长的图案 。
-
第三,容器优先于文件类型匹配的路径匹配。
-
最后,模式
始终匹配任何其他模式不匹配的请求。/
例如,上下文web.xml文件可以将在线目录的主页映射到一个模式,将目录的搜索页面映射到不同的模式,如下所示:
catalogBrowse /Catalog/* catalogSearch /Catalog/search/*
下图说明了上下文的匹配过程。 由于容器更喜欢匹配最长的模式 ,因此包含/Catalog/search/
的URL始终与catalogSearch的映射匹配,而不是与catalogBrowse的映射匹配。
URL模式匹配
如果您不想转到该链接,则会从以下链接复制。
请查看URL模式 ,其中详细介绍了示例。
- 如何使JTable列不包含JTextFields,而是包含JTextAreas?
- 如何从Java8 lambda 创建Runnable
- Spring Security:允许所有经过完全身份validation的用户的页面查看,除非他们具有特定角色
- Hibernate Criteria API相当于HQL select子句?
- 如何在Spring Data中按示例查询在两个日期之间添加限制范围
- 在Eclipse外运行jar时未加载FXML布局
- Spring,Hibernate和JPA:在entitymanager上调用persist似乎没有提交数据库
- 从XPath表达式填充XML模板文件?
- 热交换java中的jar文件