Pierwszy Servlet

0

Chciałem się zabrać za naukę Javy EE, sięgnąłem więc na początek po książkę "Head First Servlets and JSP"
Pierwszy przykład z książki i już mam problem.
Mianowicie tomcat zglasza HTTP Status 404, zamiast uruchomić mój servlet. Przykłady dołączone do tomcata działają poprawnie, próbowałem na wersji 7 i 9 , niestety sytuacja w obu przypadkach jest taka sama.

Mój plik web.xml prezentuje się w taki sposób:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"$
         id="WebApp_ID" 
         version="2.5">
   <servlet>
     <servlet-name>Chapter1 Servlet</servlet-name>
     <servlet-class>Ch1Servlet</servlet-class>
   </servlet>

   <servlet-mapping>
     <servlet-name>Chapter1 Servlet</servlet-name>
     <url-pattern>/Serv1</url-pattern>
   </servlet-mapping>
</web-app>
 

Moja klasa w javie:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Ch1Servlet extends HttpServlet {

        public void doGet(HttpServletRequest request,
                        HttpServletResponse response) throws IOException {
        PrintWriter out = response.getWriter();
        java.util.Date today = new java.util.Date();
        out.println("<html> "+
                        "<body>" +
                        "<h1 align=center>HF\'s Chapter1 Servlet</h1>"
                        + "<br>" +today+"</body>" + "</html>");
        }
}        

Wrzuciłem wszystko do folderu webapps (oczywiście wcześniej skompilowałem z wykorzystaniem biblioteki servlet-api.jar):
ch1 -> WEB-INF(web.xml) -> classes(Ch1Servlet.class)

Szukałem oczywiście wcześniej rozwiązania w googlach, było ich sporo od zmiany kodowania w pliku xml, poprzez umieszczenie klasy w pakiecie.
Niestety nic mi nie pomogło rozwiązać problemu.

Z góry dziękuje za podpowiedzi

0

Wydaje mi się, że musisz podać pełną ścieżkę do klasy servleta (łącznie z pakietami), tutaj:
<servlet-class>Ch1Servlet</servlet-class>
np.
<servlet-class>com.anubis12.Ch1Servlet</servlet-class>
czy jak tam masz. W servlecie zrób też

response.setContentType("text/html");

Mógłbyś też dać nowszą wersję servletów:

<web-app version="3.1" 
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
0

Warto poznać podstawy technologii Servlet. Jednak kombo Servlet/JSP jest rzadko używane (deprecated) i nie polecam iść w to za głęboko.

Poza definicją w XML warto zapoznać się również z definicją servleta za pomocą adnotacji, dostępną od API 3.0.

Książka z której się uczysz jest już raczej mocno przeterminowana. Ale podstawy z opisem servletów / filtrów za pomocą XML mniej więcej powinny być aktualne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1