Portál AbcLinuxu, 13. července 2025 18:54


Dotaz: Java servlet uprostřed URL

Jiří Svoboda avatar 1.4.2010 12:25 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Java servlet uprostřed URL
Přečteno: 399×
Odpovědět | Admin
Programuji jednoduchou aplikaci v JSP. Zbývá mi vyřešit poslední problém.

Vše mám v čistém JSP (tj. bez frameworku) a teď potřebuji dopsat malou část, která bude sloužit pouze ke stažení souboru. Zřejmě bude v tomto okamžiku vhodnější použít samostatný servlet než JSP.

Potřeboval bych tip, jak naprogramovat, resp. jak nastavit webový kontejner (používám Jetty) tak, aby bylo z browseru možné použít následující tvar URL (příklad):

http://example.com/context/nejakyServlet/65535/Jméno_souboru.txt

Po zadání této URL by se měl spustit příslušný servlet (to je ten problém) a získat zbytek URL (nechci tomu říkat query string) a podle něj začít odesílat příslušný soubor.

'65535' je ID do databáze metadat souborů, "Jméno_souboru.txt" je tam jen proto, aby si browser myslel, že stahuje soubor příslušného jména (z předchozích zkušeností s CGI vím, je to nejschůdnější cesta vnucení jména souboru).

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.4.2010 14:06 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java servlet uprostřed URL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použijte takovéto mapování ve web.xml:
<servlet>
  <servlet-name>DownloadServlet</servlet-name>
  <servlet-class>com.example.web.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>DownloadServlet</servlet-name>
  <url-pattern>/nejakyServlet/*</url-pattern>
</servlet-mapping>
Zbývající část adresy si pak zjistíte z request.getServletPah() nebo request.getPathInfo().

Mimochodem, psát výkonný kód (aplikační logiku) do JSP není šťastné řešení, bude se vám to pak špatně udržovat. Lepší je použít MVC vzor (klidně jen se servlety, bez dalšího frameworku).
Jiří Svoboda avatar 1.4.2010 15:06 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Re: Java servlet uprostřed URL
Díky, chodí to jako z praku. Netušil jsem, že to bude až tak jednoduché.

K poznámce: Napsal jsem sice "čisté JSP", ale myslel jsem tím bez frameworku. Samotnou aplikační logiku mám v objektech JavaBeans, které používám pomocí <jsp:useBean...>, obvykle ve scope="session".

Určitě lze zvolit ještě vhodnější způsob, ale zatím spíš zkouším, co to umí (tato aplikace má cca. 1000 řádků v souborech .jsp a 2000 řádků v souborech .java). Programování mě neživí (a snad ani nebude), je to spíš takové hobby.

Ještě jednou díky za odpověď.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.