Конфигурация Tomcat для сервлетов - PullRequest
2 голосов
/ 11 июля 2009

Я установил Tomcat и проверял его: я написал несколько файлов .html и .jsp и попробовал их на сервере. Кажется, они правильно работают вместе. Например: эти файлы, которые я пытаюсь, позволяют мне загрузить файл на сервер и записать его имя в базу данных (MySQL). Как только это будет сделано, у меня есть кнопка, которая позволяет мне загрузить другой файл, или я могу обратиться к имени файлов, хранящихся в базе данных.

Моя проблема возникает, когда мне нужно запустить сервлет. Я пытаюсь основной:

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

public class HelloWorldServlet extends HttpServlet {

  public void init(ServletConfig conf)
    throws ServletException
  {
    super.init(conf);
  }
  public void service(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException
  {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();

    out.println("<html>");
    out.println("<body>");
    out.println("<h1>Hello World</h1;>");
    out.println("</body>");
    out.println("</html>");
  }
} 

Из этого я получаю файл .class. Я поместил этот файл в: webapps / HelloWord / web-inf / classes

Я действительно не знаю, как изменить файл web.xml и как вызвать этот сервлет со страницы .html или .jsp.

Ответы [ 2 ]

3 голосов
/ 11 июля 2009

Прежде всего, ваш каталог web-inf должен быть в верхнем регистре (WEB-INF).

Основной файл web.xml выглядит следующим образом:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <servlet>
      <!-- 
        This is arbitrary name for your servlet,
        used in servlet-mapping below
       -->
      <servlet-name>HelloWorld</servlet-name>

      <!-- Name of your servlet class -->
      <servlet-class>HelloWorldServlet</servlet-class>
    </servlet>

    <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>

      <!--
         Here you say location (under context) where your servlet
         can receive requests.
       -->
      <url-pattern>/hello-world</url-pattern>
    </servlet-mapping>
</web-app>

Ваш файл web.xml должен быть сохранен в <your-app>/WEB-INF/web.xml пути.

Теперь, когда браузер получит доступ к http://localhost/HelloWorld/hello-world на вашем сервере, ваш сервлет будет называться, потому что он сопоставлен с /hello-world, и потому что ваше приложение развернуто в каталоге HelloWorld (таким образом, сопоставлено с / HelloWorld контекст).

1 голос
/ 11 июля 2009

Сначала вы сопоставляете класс Servlet с именем. Затем вы сопоставляете имя с URL-шаблоном. Шаблон url может быть одним путем или может быть шаблоном «globbing», например / path / * или просто / *

Что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="TestApp" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Test App</display-name>
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorldServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...