Rumah hujung hadapan web tutorial js servlet与filter的url-pattern设置方式及映射规则

servlet与filter的url-pattern设置方式及映射规则

Sep 20, 2017 am 10:03 AM
filter servlet



<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"; color:rgb(0,128,128); line-height:1.5!important'></span><p style='margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:Arial,"Microsoft YaHei"; line-height:19px; word-break:break-all; background-color:rgb(254,254,242)'><span style="margin:0px; padding:0px; font-family:verdana,sans-serif; line-height:21px">Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 <br>   </span></p><p style='margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:Arial,"Microsoft YaHei"; line-height:19px; word-break:break-all; background-color:rgb(254,254,242)'><span style="margin:0px; padding:0px; font-family:verdana,sans-serif; line-height:21px">一,servlet容器对url的匹配过程: <br><br>当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉, 剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下 的servlet了(filter不同,后文会提到)。其匹配规则和顺序如下: <br><br><span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>1.     精确路径匹配。</span>例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的 servlet了。 <br><br><span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>2.     最长路径匹配</span>。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此 时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。 <br><br><span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>3.     扩展匹配</span>,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action <br><br>4.     如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>default servlet</span>,则容器会将请求丢给default servlet(什么是default servlet?后面会讲)。 <br><br>     根据这个规则表,就能很清楚的知道servlet的匹配过程,所以定义servlet的时候也要考虑url-pattern的写法,以免出错。 <br><br>      对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。 <br>   </span></p><p style='margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:Arial,"Microsoft YaHei"; line-height:19px; word-break:break-all; background-color:rgb(254,254,242)'><span style="margin:0px; padding:0px; font-family:verdana,sans-serif; line-height:21px">二,url-pattern详解 <br><br>         在web.xml文件中,以下语法用于定义映射: <br><br>l. 以<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>”/’开头</span>和<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>以”/*”结尾</span>的是用来做<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>路径映射</span>的。 <br><br>2. 以<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>前缀”*.”开头</span>的是用来做<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>扩展映射</span>的。 <br><br>3. <span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>“/”</span> 是用来定义<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>default servlet映射</span>的。 <br><br>4. 剩下的都是用来定义<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>详细映射</span>的。比如: /aa/bb/cc.action <br><br>所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为<span style='margin:0px; padding:0px; font-family:Arial,"Microsoft YaHei"'>这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断</span>。</span></p><p style='margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:Arial,"Microsoft YaHei"; line-height:19px; word-break:break-all; background-color:rgb(254,254,242)'><span style="margin:0px; padding:0px; font-family:verdana,sans-serif; line-height:21px">另外,关于url-pattern映射之后, request的servletContextPath , ServletPath , PathInfo 情况,可参照下面链接的文章</span></p> 
 1 servlet与filter的url-pattern设置方式: 
 2  
 3 1、精确匹配: 
 4 /directory/file1.jsp 
 5 /directory/file2.jsp 
 6 /directory/file3.jsp 
 7  
 8 2、目录匹配: 
 9 /directory/*
 10 
 11 3、扩展匹配:
 12 *.jsp
 13 
 14 注意:下面的不支持:
 15 /direcotry/*.jsp
 16 
 17 /和/*之间的区别:
 18 <url-pattern>/</url-pattern>: 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
 19 <url-pattern>/*</url-pattern>:会匹配所有url:路径型的和后缀型的url(包括/login , *.jsp , *.js 和 *.html 等)
 20 <url-pattern>/</url-pattern>: 甚至会造成The requested resource () is not available.

Atas ialah kandungan terperinci servlet与filter的url-pattern设置方式及映射规则 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Kitaran hayat servlet dibahagikan kepada beberapa peringkat Kitaran hayat servlet dibahagikan kepada beberapa peringkat Feb 23, 2023 pm 01:46 PM

Kitaran hayat Servlet merujuk kepada keseluruhan proses daripada penciptaan kepada pemusnahan servlet, yang boleh dibahagikan kepada tiga peringkat: 1. Peringkat permulaan, memanggil kaedah init() untuk memulakan Servlet 2. Peringkat berjalan (permintaan pemprosesan), bekas akan Meminta untuk mencipta objek ServletRequest yang mewakili permintaan HTTP dan objek ServletResponse yang mewakili respons HTTP, dan kemudian menghantarnya sebagai parameter kepada kaedah Servlet's service() 3. Fasa pemusnahan.

Bagaimana untuk menyelesaikan ralat '[Vue warn]: Gagal menyelesaikan penapis'. Bagaimana untuk menyelesaikan ralat '[Vue warn]: Gagal menyelesaikan penapis'. Aug 19, 2023 pm 03:33 PM

Kaedah untuk menyelesaikan ralat "[Vuewarn]:Failedtoresolvefilter" Semasa proses pembangunan menggunakan Vue, kadangkala kita menghadapi mesej ralat: "[Vuewarn]:Faildtoresolvefilter". Mesej ralat ini biasanya berlaku apabila kami menggunakan penapis yang tidak ditentukan dalam templat. Artikel ini menerangkan cara menyelesaikan ralat ini dan memberikan contoh kod yang sepadan. Apabila kita berada di Vue

Apa itu servlet Apa itu servlet Jan 28, 2023 am 09:51 AM

Nama penuh Servlet ialah "Java Servlet", yang bermaksud program perkhidmatan kecil atau penyambung perkhidmatan dalam bahasa Cina Ia adalah program yang dijalankan pada pelayan Web atau pelayan aplikasi Ia berfungsi sebagai permintaan daripada pelayar Web atau klien HTTP lain dan a pangkalan data pada pelayan HTTP atau Lapisan tengah antara aplikasi. Servlet mempunyai ciri-ciri bebas daripada platform dan protokol Fungsi utamanya adalah untuk menyemak imbas dan menjana data secara interaktif dan menjana kandungan Web yang dinamik.

Bagaimanakah Java Servlet melaksanakan pengurusan sesi teragih? Bagaimanakah Java Servlet melaksanakan pengurusan sesi teragih? Apr 16, 2024 pm 02:48 PM

Terdapat dua kaedah untuk melaksanakan pengurusan sesi teragih dalam JavaServlet: 1. Replikasi sesi: Salin data sesi ke setiap pelayan. 2. Pengagihan sesi: Gunakan perkhidmatan storan berpusat untuk menyimpan data sesi dan mengaksesnya daripada berbilang pelayan. Kaedah pelaksanaan khusus ialah: replikasi sesi dikonfigurasikan benar dalam data sesi web.

Apakah senario aplikasi Java Servlet? Apakah senario aplikasi Java Servlet? Apr 17, 2024 am 08:21 AM

JavaServlet boleh digunakan untuk: 1. Penjanaan kandungan dinamik 2. Akses dan pemprosesan borang; Contoh: Cipta FormSubmitServlet untuk mengendalikan penyerahan borang, menggunakan nama dan e-mel sebagai parameter dan mengubah hala ke success.jsp.

Timbunan teknologi Java untuk pembangunan web: Fahami Java EE, Servlet, JSP, Spring dan teknologi lain yang biasa digunakan dalam pembangunan web Timbunan teknologi Java untuk pembangunan web: Fahami Java EE, Servlet, JSP, Spring dan teknologi lain yang biasa digunakan dalam pembangunan web Dec 26, 2023 pm 02:29 PM

Timbunan teknologi pembangunan JavaWeb: Master JavaEE, Servlet, JSP, Spring dan teknologi lain yang digunakan untuk pembangunan Web Dengan perkembangan pesat Internet, dalam bidang pembangunan perisian hari ini, pembangunan aplikasi Web telah menjadi keperluan teknikal yang sangat penting. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java juga memainkan peranan penting dalam bidang pembangunan Web. Timbunan teknologi pembangunan JavaWeb melibatkan pelbagai teknologi, seperti JavaEE, Servlet, JSP, Spr

Kontena Servlet Didedahkan: Pemahaman Lebih Mendalam tentang Persekitaran Masa Jalan Servlet Kontena Servlet Didedahkan: Pemahaman Lebih Mendalam tentang Persekitaran Masa Jalan Servlet Feb 19, 2024 pm 01:00 PM

Bekas Servlet ialah aplikasi yang menyediakan persekitaran berjalan Servlet Ia bertanggungjawab untuk menguruskan kitaran hayat Servlet dan menyediakan perkhidmatan WEB yang diperlukan, seperti keselamatan, urus niaga, dll. Terdapat banyak jenis bekas Servlet, yang paling biasa ialah Tomcat dan Jetty. Fungsi utama bekas Servlet ialah pengurusan kitaran hayat: Bekas Servlet bertanggungjawab untuk menguruskan kitaran hayat Servlet, termasuk permulaan, permulaan, perkhidmatan dan pemusnahan. Perkhidmatan web: Bekas Servlet menyediakan perkhidmatan web, seperti keselamatan, urus niaga, dsb. Pengurusan sumber: Bekas Servlet mengurus sumber, seperti Servlet, jsP, halaman html, dsb. Pemuatan kelas: Bekas Servlet bertanggungjawab untuk menambah

Ralat Java: Ralat Servlet, Cara Menyelesaikan dan Mengelak Ralat Java: Ralat Servlet, Cara Menyelesaikan dan Mengelak Jun 25, 2023 pm 06:34 PM

Servlet ialah teknologi yang sangat biasa digunakan dalam pembangunan aplikasi Web Java. Walau bagaimanapun, beberapa ralat Servlet pasti akan berlaku semasa proses pembangunan Bagaimana untuk menyelesaikan dan mengelakkan ralat Servlet telah menjadi isu utama bagi banyak pembangun Java. Artikel ini akan memperkenalkan beberapa ralat Servlet biasa dan penyelesaiannya berdasarkan pengalaman peribadi dan maklumat berkaitan. ClassNotFoundException Apabila kita cuba memuatkan kelas, jika kelas itu tidak wujud atau tidak boleh diakses oleh sistem,

See all articles