На первый взгляд, это потому, что вы не поместили класс в пакет.Классы без пакетов не видны и не импортируются из других классов внутри пакета.Файлы JSP скомпилированы и преобразованы в класс, расширяющий JspServlet
, который был помещен в специфичный для servletcontainer пакет.Оттуда он не может видеть / импортировать классы без пакетов.
Всякий раз, когда вы хотите иметь возможность повторно использовать / импортировать класс где-то еще, всегда помещает его в пакет.
Например,
package com.shahensha.model;
public class Category {}
package com.shahensha.dao;
public class CategoryDAO {}
package com.shahensha.controller;
public class CategoryController extends HttpServlet {}
Обратите внимание, что сервлеты без пакетов будут работать с определенными сервлет-контейнерами определенных версий в определенных конфигурациях (например, Apache Tomcat), но это недопустимовыполнить, чтобы не помещать классы в пакет.
Это говорит о том, что вы используете scriptlets внутри файла JSP.Это плохая практика.Вместо этого используйте сервлет для подготовки данных для JSP, используйте теги вроде JSTL для управления потоком на странице JSP и используйте EL (Expression Language, эти ${}
вещи) для доступа к внутренним данным.
См. Также
Обновление : так как вы упомянули об использованииnotepad / cmd, я бы больше подчеркнул ответ Saheed: вы не должны хранить файлы классов (*.class
) в той же папке, что и исходные (*.java
) файлы, но в /WEB-INF/classes
.При использовании приведенных выше примеров пакетов классы следует размещать в следующих местах:
/WEB-INF/classes/com/shahensha/model/Category.class
/WEB-INF/classes/com/shahensha/dao/CategoryDAO.class
/WEB-INF/classes/com/shahensha/controller/CategoryController.class
Если вы использовали IDE, он позаботится о автоматической компиляции и сборке.