Domanda

In una semplice applicazione Web Java, ad esempio immagina di avere un servlet testservlet.java. Nella descrizione della distribuzione (web.xml) è possibile mappare la richiesta in arrivo /testpage a testServlet in modo che quando /testapplication/testpage è richiesto testServlet gestisce la richiesta. E ad esempio puoi scrivere "Hello World" e inviare la risposta.

Nella struttura di directory (l'applicazione che viene distribuita sul server Web), TestServlet.java risiederà in:

webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java

Ciò significa che non c'è modo di raggiungere questo file usando il browser. (Come entrare in un URL)

È inoltre possibile ottenere il dispatcher di richiesta e inoltrare l'oggetto di richiesta e risposta a un file JSP come .getRequestDispatcher("/test.jsp"). Ma poi il file sarà dentro

webapps\testapplication\test.jsp

Quindi la connessione a http: server.com test.jsp otterrà anche questo file.

Voglio nascondere il file nella cartella Web-INF in modo che non possa essere raggiunto dal client, tranne la mappatura che ho fornito.

Qual è il modo appropriato per farlo?

È stato utile?

Soluzione

Voglio nascondere il file nella cartella Web-INF in modo che non possa essere raggiunto dal client.

Mantieni sotto i tuoi file JSP WEB-INF Per esempio - (WEB-INF/jsp), in modo che per impostazione predefinita i contenitori Web non consentono le risorse nella cartella Web-INF di accedere direttamente dai clienti, ma il RequestDispatcher può accedervi.

request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);

Altri suggerimenti

Se si utilizza JSF, è possibile inserire questo file nella cartella Web-INF e utilizzare una regola di navigazione per mappare la richiesta alla pagina. Ma se non lo sei, puoi creare un filtro e mapparlo a URL "/Test.jsp" usando il <url-pattern> attribuire e reindirizzare ovunque tu voglia (come una pagina in Web-INF).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top