To jest moje pierwsze pytanie (więc bądźcie łagodni :)). Szukałem wszędzie i nie mogę znaleźć odpowiedzi na mój problem (również poszło trochę szalony w tym procesie).Apache Tomcat: Żądany zasób() nie jest dostępny (podczas uzyskiwania dostępu do zasobu, który powinien być dostępny).
Używam Tomcat 7 i najnowszego Eclipse IDE dla programistów Java EE (platforma Eclipse 3.7.2 i Java EE IDE 1.4.2). Pojawia się następujący błąd: "Żądany zasób() nie jest dostępny" podczas uzyskiwania dostępu do http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp. Sprawdziłem wiele razy, że ten plik znajduje się na dysku w dokładnym folderze. Próbowałem uruchomić Tomcat wewnątrz Eclipse i wdrażanie wyeksportowanego .war w Tomcat. Za każdym razem pojawia się ten sam błąd.
Moje pliki:
myTest/index.jsp
myTest/WEB-INF/html/GetName.html
myTest/WEB-INF/jsp/savename.jsp
Kiedy uruchamiam "http: // localhost/myTest" index.jsp zawsze działa poprawnie. Następnie używam
"<jsp:forward page="WEB-INF/html/GetName.html"></jsp:forward>"
wewnątrz mojego index.jsp, aby przejść do GetName.html a także działa. Problem pojawia się w GetName.html:
<form action='WEB-INF/jsp/savename.jsp' method="post" >
What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20>
<P><INPUT TYPE=SUBMIT>
</form>
po naciśnięciu przycisku złożyć w formie, przeglądarka przekierowuje do: http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp i wyskakuje błąd.
Więc ja naprawdę nie rozumiem, dlaczego tak się dzieje ... Domyślnie Tomcat aplikacje działają doskonale ...
PS: Próbowałem również manualy nawigowania do plików:
http://127.0.0.1:8080/myTest/WEB-INF/html/GetName.html
http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp
ale również pojawia się błąd (nawet gdy idex.jsp nawiguje także GetName.html bez żadnych problemów) ..
Każda pomoc jest znacznie apreciated! Dzięki!
Dzięki człowiek! Ale problem nadal występuje ... Jak połączyć różne pliki w różnych folderach? Dlaczego formularz w pliku GetName.html nie może uzyskać dostępu do WEB-INF/jsp/savename.jsp? Jakie byłoby rozwiązanie? (z wyjątkiem umieszczania wszystkich plików w katalogu głównym ...) – MoD
Przykro mi to mówić, ale ze zwykłymi stronami JSP nie ma innego rozwiązania. Dane formularza są wysyłane przez przeglądarkę, więc przeglądarka gromadzi adres URL i wysyła dane do serwera za pomocą tego adresu URL, a serwer mówi "NIE, nie można uzyskać dostępu do WEB-INF". Dlatego musisz umieścić * savename.jsp * w katalogu głównym lub innym katalogu w katalogu głównym, a także użyć tagów lub dyrektyw include do załadowania prawdziwej zawartości z plików w WEB-INF. – t0r0X
Myślę, że wiem, co próbujesz osiągnąć: ochrona/ukrywanie wszystkich stron JSP i związanego z nimi kodu. Jak już powiedziałem, nie można tego zrobić za pomocą zwykłych stron JSP. Musisz zbudować serwlet lub filtr, który służy jako "brama" i jest zmapowany do URI nie w/poniżej WEB-INF, i który przekazuje żądania do twoich stron JSP wewnątrz WEB-INF. Wolałbym polecić użycie architektury oferującej takie możliwości, np. Wiosenne ramy MVC. Pozwól mi podać kilka wskazówek: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-features – t0r0X