回答了我在迷你博客中的提的问题
这段代码中:config.getPackageConfigs方法的到配置的所有package bean信息,prefix是从servletPath中截取的index从0..lastIndex("/")之间的字符串。
(ns!=null&& prefix.startsWith(ns)):表明package中的namespace不为null且ns匹配namespace的开始部分
prefix.length()==ns.length() :表明ns.equals(prerix)
prefix.charAt(ns.length())=='/':表明prefixde在index=ns.length()地方的字符匹配为'/'
这段代码中:config.getPackageConfigs方法的到配置的所有package bean信息,prefix是从servletPath中截取的index从0..lastIndex("/")之间的字符串。
(ns!=null&& prefix.startsWith(ns)):表明package中的namespace不为null且ns匹配namespace的开始部分
prefix.length()==ns.length() :表明ns.equals(prerix)
prefix.charAt(ns.length())=='/':表明prefixde在index=ns.length()地方的字符匹配为'/'
- if(ns.length()>namespace.length()) namespace=ns;表明取最长匹配(但最长也不会超过prefix的长度)
- for (Iterator i = config.getPackageConfigs().values().iterator(); i.hasNext();) {
- String ns = ((PackageConfig) i.next()).getNamespace();
- if (ns != null && prefix.startsWith(ns)
- && (prefix.length() == ns.length() || prefix.charAt(ns.length()) == '/')) {
- if (ns.length() > namespace.length()) {
- namespace = ns;
- }
- }
- }