|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
Servlet和filter是J2EE开辟中经常使用的手艺,利用便利,设置复杂,老小咸宜。
估量年夜多半伴侣都是间接设置用,也没有体贴过详细的细节,明天碰到一个成绩,上彀查了servlet的标准才发明,servlet和filter中的url-pattern仍是有一些文章在内里的,总结了一些工具,放出来供人人参考,以避免碰到成绩又要华侈工夫。
1、servlet容器对url的婚配历程:
当一个哀求发送到servlet容器的时分,容器先会将哀求的url减往以后使用高低文的路径作为servlet的映照url,好比我会见的是http://localhost/test/aaa.html,我的使用高低文是test,容器会将http://localhost/test往失落,剩下的/aaa.html部分拿来做servlet的映照婚配。这个映照婚配历程是有按次的,并且当有一个servlet婚配乐成今后,就不会往剖析剩下的servlet了(filter分歧,后文会提到)。其婚配划定规矩温柔序以下:
1.准确路径婚配。例子:好比servletA的url-pattern为/test,servletB的url-pattern为/*,这个时分,假如我会见的url为http://localhost/test,这个时分容器就会先举行准确路径婚配,发明/test恰好被servletA准确婚配,那末就往挪用servletA,也不会往剖析其他的servlet了。
2.最长路径婚配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时会见http://localhost/test/a时,容器会选择路径最长的servlet来婚配,也就是这里的servletB。
3.扩大婚配,假如url最初一段包括扩大,容器将会依据扩大选择符合的servlet。例子:servletA的url-pattern:*.action
4.假如后面三条划定规矩都没有找到一个servlet,容器会依据url选择对应的哀求资本。假如使用界说了一个defaultservlet,则容器会将哀求丢给defaultservlet(甚么是defaultservlet?前面会讲)。
依据这个划定规矩表,就可以很分明的晓得servlet的婚配历程,以是界说servlet的时分也要思索url-pattern的写法,以避免堕落。
关于filter,不会像servlet那样只婚配一个servlet,由于filter的汇合是一个链,以是只会有处置的按次分歧,而不会呈现只选择一个filter。Filter的处置按次和filter-mapping在web.xml中界说的按次不异。
2、url-pattern详解
在web.xml文件中,以下语法用于界说映照:
以”/’开首和以”/*”开头的是用来做路径映照的。
之前缀”*.”开首的是用来做扩大映照的。
”是用来界说defaultservlet映照的。
剩下的都是用来界说具体映照的。好比:/aa/bb/cc.action
以是,为何界说”/*.action”如许一个看起来很一般的婚配会错?由于这个婚配即属于路径映照,也属于扩大映照,招致容器没法判别。
主要缺点就是:速度比较慢,没有C和C++快 |
|