免费3d建模软件,便宜营销型网站建设优化建站,安阳县职业中等专业学校,苏州优化外包文章目录 URL 匹配规则几个容易混淆的规则精确匹配路径匹配扩展名匹配缺省匹配注意事项 1#xff1a;匹配规则不能混用注意事项 2#xff1a;\/\* 和 / 含义并不相同 URL 匹配规则
几个容易混淆的规则 servlet 容器中的匹配规则既不是简单的通配匹配规则不能混用注意事项 2\/\* 和 / 含义并不相同 URL 匹配规则
几个容易混淆的规则 servlet 容器中的匹配规则既不是简单的通配也不是正则表达式而是特定的规则。所以不要用通配符或者正则表达式的匹配规则来看待 servlet 的 “url-pattern” 。 Servlet 2.5 开始一个 servlet 可以使用多个 url-pattern 规则“servlet-mapping” 标签声明了与该 servlet 相应的匹配规则每个 “url-pattern” 标签代表 1 个匹配规则 当 servlet 容器接收到浏览器发起的一个 url 请求后容器会用 url 减去当前应用的上下文路径以剩余的字符串作为 servlet 映射假如 url 是 http://localhost:8080/appDemo/index.html其应用上下文是 appDemo容器会将 http://localhost:8080/appDemo 去掉用剩下的 “/index.html” 部分拿来做 servlet 的映射匹配 url-pattern 映射匹配过程是有优先顺序的而且当有一个 servlet 匹配成功以后就不会去理会剩下的 servlet 了。
精确匹配
精确匹配是优先级最高最不会产生歧义的匹配。
servlet-mappingservlet-name.../servlet-nameurl-pattern/user/users.html/url-patternurl-pattern/index.html/url-patternurl-pattern/user/addUser.action/url-pattern
/servlet-mapping当在浏览器中输入如下几种 url 时都会被匹配到该 servlet
http://localhost:8080/appDemo/user/users.html
http://localhost:8080/appDemo/index.html
http://localhost:8080/appDemo/user/addUser.action注意 http://localhost:8080/appDemo/user/addUser/最后有斜杠符是非法的 url 它不会被当作 http://localhost:8081/appDemo/user/addUser最后没有斜杠府识别。 另外上述 url 后面可以跟任意的查询条件都会被匹配如
http://localhost:8080/appDemo/user/addUser?usernameTomage23 会被匹配。
路径匹配
路径匹配的优先级仅次于精确匹配。
以 “/” 字符开头并以 “/*” 结尾的字符串都表示是路径匹配。
servlet-mappingservlet-name.../servlet-nameurl-pattern/user/*/url-pattern
/servlet-mapping上述规则表示 URL 以 “/user” 开始后面的路径可以任意。比如下面的 url 都会被匹配。
http://localhost:8080/appDemo/user/users.html
http://localhost:8080/appDemo/user/addUser.action
http://localhost:8080/appDemo/user/updateUser.do扩展名匹配
也叫 后缀匹配 。
以 “*.” 开头的字符串被用于扩展名匹配
servlet-mappingservlet-name.../servlet-nameurl-pattern*.jsp/url-patternurl-pattern*.action/url-pattern
/servlet-mapping则任何扩展名为 jsp 或 action 的 url 请求都会匹配比如下面的 url 都会被匹配
http://localhost:8080/appDemo/user/users.jsp
http://localhost:8080/appDemo/toHome.action缺省匹配
缺省匹配也是「兜底」的匹配一个 url 不符合精确匹配、路径匹配、扩展品匹配的任何一种情况那么它所触发的 Servlet 就是由缺省匹配决定。
servlet-mappingservlet-name.../servlet-nameurl-pattern//url-pattern
/servlet-mapping注意事项 1匹配规则不能混用
匹配规则不是正则表达式规则不要想当然的使用通配符精确匹配、路径匹配、后缀匹配 三者 不能混用 。 要么以 / 开头并以 /* 结尾表示路径匹配。 要么以 *. 开头表示后缀匹配。 要么就是精确匹配。
例如
url-pattern/user/*.action/url-pattern 是非法的
另外
url-pattern/aa/*/bb/url-pattern 是合法的。是精确匹配合法
注意事项 2“/*” 和 “/” 含义并不相同
“/*” 属于路径匹配“/” 属于 default 匹配。“.jsp” 的访问JSP Servlet的优先级刚好『卡』在它们俩的中间
“/*” 会拦截你对 .jsp 页面的访问“/” 则不会。很多 404 错误均由此引起。 注意 除非是真的需要否则不要使用 “/*” 从效果上看“/*” 和 “/” 均会拦截对静态资源的访问请求需要特别注意。