@atambalasi

Как запустить сервлет в Томэкт без IDE?

Добрый вечер. Начал изучать Java servlets Скачал распоковал томкэт в папке webapps создал папку helloworld
5dda85050d5e1680879886.png
В папке web-inf создал класс classes/HelloWorld.java и скомпилировал через cmd javac -cp ../../lib/servlet-api.jar HelloWorld.java
вот содержимый файла
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Hello world!
 *
 */
public class HelloWorld extends HttpServlet
{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter printWriter = resp.getWriter();

        printWriter.print("<h1> Apple </h1>");
    }
    
}


Содержимый файла web.xml
<?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"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <servlet>
        <servlet-name>mainServlet</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>mainServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

</web-app>


Запускаю localhost:8080/helloworld запускается индекс html пишу localhost:8080/helloworld/hello not found
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 1
atambalasi
спс за пазл...

структура должна быть совсем чуть другое
/opt/tomcat/webapps/helloworld/WEB-INF/classes/sample/HelloWorld.class
/opt/tomcat/webapps/helloworld/WEB-INF/web.xml
/opt/tomcat/webapps/helloworld/WEB-INF/sample/HelloWorld.java

(я скоп ваш код и добавил
head ./sample/HelloWorld.java
package sample;
ваш код

(и в web.xml естественно - DI есть DI )
<servlet-class>sample.HelloWorld</servlet-class>

и проверил

javac -cp /opt/tomcat/lib/servlet-api.jar sample/HelloWorld.java ; 
mkdir -p classes/sample/ ; 
mv sample/HelloWorld.class classes/sample/
/opt/tomcat/bin/catalina.sh stop;
/opt/tomcat/bin/catalina.sh start


catalina.out
org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/helloworld] has finished in [51] ms


curl http://localhost:8080/helloworld/hello

<h1> Apple </h1>r
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы