Добавление сервлета в IntelliJ говорит, что пакет javax.servlet.http не существует

#java #tomcat #servlets #intellij-idea

#java #tomcat #сервлеты #intellij-идея

Вопрос:

Просто создаю свое первое веб-приложение IntelliJ, которое работает на tomcat.

Проект работал нормально, и он отлично отображал index.jsp.

Почему index.jsp отображается, даже если web.xml кстати, у вас нет ссылки на это? Сначала он ищет психические файлы (.jsp), если они присутствуют, он их выполняет? Или web.xml только для сервлетов?

Реальная проблема заключалась в том, что я создал тестовый сервлет в своей папке / src, и, похоже, он не может найти javax.servlet jar:

 package javax.servlet.http does not exist
 

Ссылка:

web.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">

    <servlet>
        <display-name>Test1</display-name>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>TestServlet</servlet-class>
    </servlet>
</web-app>
 

TestServlet.java:

 import java.io.IOException;

package hello_world.Servlets

/**
 * Created by IntelliJ IDEA.
 * User: snad
 * Date: Oct 29, 2011
 * Time: 9:19:27 AM
 * To change this template use File | Settings | File Templates.
 */
public class TestServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

    }
}
 

Ответ №1:

  • Вам не хватает servlet-api.jar на вашем пути сборки.
  • jsp выбираются автоматически без необходимости их регистрации. web.xml предназначен для сервлетов, фильтров, прослушивателей и других настроек.
  • Не используйте пакет по умолчанию. Всегда предоставляйте пакет своим классам. Так что лучше быть test.TestServlet

Комментарии:

1. Я добавил в TestServlet.java : пакет hello_world. Сервлеты; в IntelliJ, но web.xml не обновлялся, не так ли?

2. Я добавил свой TestServlet.java класс выше с пакетом, хотя IntelliJ поместил под ним строку чтения.

3. Помещает ли IntelliJ все мои внешние библиотеки в путь сборки? где я могу получить servlet-api.jar откуда?