{"id":32,"date":"2012-01-24T23:22:28","date_gmt":"2012-01-24T22:22:28","guid":{"rendered":"http:\/\/eppesuigoccas.homedns.org\/wordpress\/?p=32"},"modified":"2014-07-06T22:34:11","modified_gmt":"2014-07-06T21:34:11","slug":"avere-piu-pattern-per-la-stessa-servlet","status":"publish","type":"post","link":"https:\/\/blog.sguazz.it\/index.php\/archives\/32","title":{"rendered":"Avere pi\u00f9 pattern per la stessa servlet"},"content":{"rendered":"<p>A volte capita che si voglia mappare una <em>servlet<\/em> su pi\u00f9 URL che non sono facilmente descrivibili con una sola espressione; difatti questa possibilit\u00e0 \u00e8 stata prevista nella strutturazione del file <code>web.xml<\/code>.<\/p>\n<p>Normalmente la mappatura avviene in questo modo:<code><\/code><\/p>\n<p><code>&lt;servlet-mapping&gt;<br \/>\n&lt;servlet-name&gt;fred&lt;\/servlet-name&gt;<br \/>\n&lt;url-pattern&gt;\/john&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<\/code><\/p>\n<p>che equivale a dire che se viene richiamato l&#8217;URL http:\/\/nomehost\/context\/john allora si deve richiamare la servlet fred.<\/p>\n<p>Al posto di pattern costanti, si posso utilizzare delle espressioni, come ad esempio in:<\/p>\n<p><code>&lt;servlet-mapping&gt;<br \/>\n&lt;servlet-name&gt;fred&lt;\/servlet-name&gt;<br \/>\n&lt;url-pattern&gt;*.jsp&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<\/code><\/p>\n<p>Nel caso che si voglia fare richiamare la stessa <em>servlet<\/em> su due diversi url, si deve fare in questo modo:<\/p>\n<p><code>&lt;servlet-mapping&gt;<br \/>\n&lt;servlet-name&gt;fred&lt;\/servlet-name&gt;<br \/>\n&lt;url-pattern&gt;*.jsp&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<br \/>\n&lt;servlet-mapping&gt;<br \/>\n&lt;servlet-name&gt;fred&lt;\/servlet-name&gt;<br \/>\n&lt;url-pattern&gt;\/altrourl&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<\/code><\/p>\n<p>Almeno, questa \u00e8 la sintassi che funziona con tomcat 5.5. Notare che la sintassi alternativa:<\/p>\n<p><code>&lt;servlet-mapping&gt;<br \/>\n&lt;servlet-name&gt;fred&lt;\/servlet-name&gt;<br \/>\n&lt;url-pattern&gt;*.jsp&lt;\/url-pattern&gt;<br \/>\n&lt;url-pattern&gt;\/altrourl&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<\/code><\/p>\n<p>viene accettata da tomcat, ma solo l&#8217;ultimo <code>url-pattern<\/code> viene utilizzato, il che \u00e8 in genere \u00e8 una brutta scoperta quanto il file <code>web.xml<\/code> non \u00e8 stato scritto a mano, ma realizzato da uno strumento automatico come netbeans&#8230;<\/p>\n<p>La specifica servlet 2.5 dice, al paragrafo SRV.19.0.3 intitolato \u00abMultiple Occurrences of Servlet Mappings\u00bb:<\/p>\n<blockquote><p>Previous versions of the servlet schema allows only a single url-pattern or servlet name per servlet mapping. For servlets mapped to multiple URLs this results in needless repetition of whole mapping clauses.<\/p><\/blockquote>\n<p>il che vuol dire che in effetti il comportamento di tomcat5.5, che accetta pi\u00f9 <code>url-pattern<\/code> all&#8217;interno dello stesso <code>servlet-mapping<\/code>, \u00e8 sbagliato poich\u00e9 tomcat 5.5 aderisce alla specifica 2.4 e non alla 2.5.<\/p>\n<p>Ho aperto una <a href=\"https:\/\/issues.apache.org\/bugzilla\/show_bug.cgi?id=52530\">segnalazione<\/a> agli autori di tomcat. Vediamo come va.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A volte capita che si voglia mappare una servlet su pi\u00f9 URL che non sono facilmente descrivibili con una sola espressione; difatti questa possibilit\u00e0 \u00e8 stata prevista nella strutturazione del file web.xml. Normalmente la mappatura avviene in questo modo: &lt;servlet-mapping&gt; &lt;servlet-name&gt;fred&lt;\/servlet-name&gt; &lt;url-pattern&gt;\/john&lt;\/url-pattern&gt; &lt;\/servlet-mapping&gt; che equivale a dire che se viene richiamato l&#8217;URL http:\/\/nomehost\/context\/john allora si [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-computer"],"_links":{"self":[{"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":9,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":106,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/posts\/32\/revisions\/106"}],"wp:attachment":[{"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sguazz.it\/index.php\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}