Originariamente inviato da anx721
La mia risposta fa riferimento al caso di un'applicazione web la cui cartella principale si chiama miaApp, all'interno della quale si trova la cartella WEB-INF, e che dovrebbe corrispondere al tuo web module.

Tutte le risorse che si trovano dentro WEB-INF non sono accessibili ai client, ma sono accessibili al server. Quindi se poni un file html dentro WEB-INF nessun client potrà invocarlo; però ad esempio una servlet può eseguire il forward di una richiesta ad una risorsa, ad esempio una jsp, che si trova dentro WEB-INF, o includere una pagina che si trova lì dentro.

Se il nome della cartella della tua applicazione è miaApp, il percorso base della tua applicazione sarà:

http://host/miaApp

tale mapping probabilmente può essere modificato agendo su qualche configurazione.

Ora se te metti il tuo file.html direttamente nella cartella principale, quindi allo stesso livello di WEB-INF, tale file sarà invocabile come:

http://host/miaApp/file.html

Il file contiene un form e deve spedire i dati ad una servlet com.test.servlets.MyServlet; a tale servlet bisogna prima assegnare un url pattern nel file web.xml; ad esempio:


codice:
<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<web-app> 
	<servlet> 
		<servlet-name>MiaServlet</servlet-name> 
		<servlet-class>com.test.servlets.MyServlet</servlet-class> 
	</servlet>

	
	<servlet-mapping>
		<servlet-name>MiaServlet</servlet-name>
		<url-pattern>/mia</url-pattern>
	</servlet-mapping>
</web-app>
Il web.xml ha mappato la servelt com.test.servlets.MyServlet con l'url pattern /mia e quindi è invocabile come:

http://host/miaApp/mia

pertanto l'azione del tuo form deve essere:

<form action="./mia">

oppure

<form action="/miaApp/mia">

la prima forma funziona perchè l'url del file html col form è

http://host/miaApp/file.html

e quindi è come se la tua servlet si trova nella stessa cartella del form; la seconda forma funziona perchè tutte le url (url è femminile?) che iniziano con / sono risolte dai client come relative alla server root, quindi il client automaticamente ci aggiunge http://host all'inizio (bada che invece il server risolve gli inidirizzi che iniziano con / rispetto alla cartella principale della tua web application, non rispetto alla root del server).
Ti ringrazio, ora riprovo alla luce dei tuoi chiarimenti. E per quanto riguarda delle eventuali convenzioni, ce ne sono? In altre parole,esiste una regola magari non scritta che dice che i file html andrebbero posizionati in un posto piuttoasto che un'altro che le immagini andrebbero posizionate in un altro eccetera