Mój pierwszy servlet uruchomiony :)
To nie było takie oczywiste.
I to przechyliło szalę na moja stronę :) Oto co napisałem niedługo po tym:
To tyle ode mnie na dziś, zapraszam Ciebie do dzielenia się swoim dzisiejszym odkryciem np. w komentarzu :)
Gdy oglądałem filmik instruktażowy, to wychodziło mi wszystko co na tym filmiku było, tylko nie jedno... nie działało. Oczywiście zaczerpnąłem wiedzy z innych źródeł i zacząłem intensywnie szukać odpowiedzi i realizowałem kolejne pomysły, które przyszły mi do głowy. Napisałem na grupie programistów problem i znaleźli się ludzie dobrej woli, którzy mi podpowiedzieli co zrobić, żeby działało.
A dokładnie miałem taki problem:
póki nie mam servletu stworzonego to działa zarówno index.html w katalogu web, jak i każdy inny plik *.html i *.jsp, jednak gdy tylko stworzę servlet w lokalizacji src to już wyskakuje błąd 404 :( gdy potem usunę servlet to znowu działa html I jsp.Po chwili odezwał się ktoś i podpowiedział mi tak:
Jezeli masz już jakiś servlet na Tomcat-cie to aby uruchomić ten servlet adres w przeglądarce powinien wyglądać tak:
http://localhost:8080/NazwaTwojegoServletu
a adnotacja w kodzie servletu tak:
@WebServlet("/NazwaTwojegoServletu")
Drugim rozwiązaniem jest opis w pliku web.xml
Plik ten umieszczamy w drzewie projektu, w lokalizacji: main –> webapp –> WEB-INF
W pliku web.xml możemy zdefiniować listę nazw plików, które będą automatycznie wywoływane przez
serwer przy uruchomieniu programu. Serwer rozpoczyna wywoływanie plików od listy podanej w
web.xml (w kolejności, którą podamy). Jeśli nie zdefiniujemy tam żadnych plików, domyślnie serwer
będzie szukał w naszej aplikacji plików w poniższej kolejności:
1. index.html
2. index.htm
3. index.jsp
Jeżeli nie znajdzie żadnego z tych plików, zwróci błąd z kodem 404.Potem poprosiłem go o schematyczny servlet, żebym wiedział, że nigdzie nie mam literówki, po czym podesłał mi taki kod:
package main.java.pl.coderslab;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(value = "/Servlet11")
public class Servlet11 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//typ zwracanej wartości, kodowanie(polskie znaki)
response.setContentType("text/html; charset=utf-8");
// wyswietla na konsoli
System.out.println("Hello First Servlet ");
// wyswietla w przegladarce
response.getWriter().append("Hello First Servletąęść" + "<br>");
response.getWriter().append("Hello First Servletąęść12345");
}
}
I to przechyliło szalę na moja stronę :) Oto co napisałem niedługo po tym:
DZIAŁA! Ha ha, ale fajnie :) nie od razu, bo to, co wyżej skopiowałem, to spowodowało, że serwer się uruchamiał (co już było postępem), ale nie uruchamiał się servlet i nie wiedziałem co zrobić, żeby działał (właśnie sprawdziłem, że wystarczyło w oknie przeglądarki wpisać po "/" Servlet11 - z dużej, a ja wpisywałem z malej i nie działało). Jednak zanim to odkryłem, to znalalem w necie konfigurację web.xml na taki:
<servlet>
<servlet-name>servlet11</servlet-name>
<servlet-class>main.java.pl.coderslab.Servlet11</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet11</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
I to działało (po wpisaniu w oknie "servlet"). Potem sprawdziłem, że jak zamienie w servlecie po @WebServlet "value" na "name" i dodan urlPattern, to też działa. No i na końcu sprawdziłem, że w Twojej wersji wystarczyło wpisać tak jak jest i też działa. Także mam 3 sposoby, w których działa :)
Dziękuję raz jeszcze, mogę iść dalej :)Haaa... jak ja lubię happy endy, chociaż to nie koniec, a raczej początek, to i tak coś zrobiłem z sukcesem i mam satysfakcję.
To tyle ode mnie na dziś, zapraszam Ciebie do dzielenia się swoim dzisiejszym odkryciem np. w komentarzu :)
Komentarze
Prześlij komentarz