Понимание того, как запустить сервлет в Eclipse - PullRequest
4 голосов
/ 28 февраля 2010

Я пишу простое приложение для бронирования авиабилетов для одной из моих домашних работ. На моем сайте бронирования авиабилетов есть логин, регистрация, поиск рейсов, отображение результатов и страницы подтверждения JSP. Я хочу вызывать сервлеты, когда пользователь пытается выполнить действие, например:

Пользователь переходит к login.jsp и нажимает кнопку «Вход», у формы есть цель / core / Login (core - это мои основные сервлеты, а Login - соответствующий сервлет, который должен обрабатывать этот запрос).

В предыдущем домашнем задании мы написали наш собственный веб-сервер, поэтому я не использовал Tomcat для развертывания serlvet ... теперь, когда мы больше не используем наш собственный веб-сервер, у меня возникли проблемы с выяснением чтобы заставить сервлеты работать в Eclipse.

Я создал динамический веб-проект в Eclipse, и он автоматически сгенерировал следующую структуру папок:

../P3  
../P3/src  
../P3/src/core  
../P3/build  
../P3/WebContent 
../P3/WebContent/META-INF  
../P3/WebContent/WEB-INF  

Мой login.jsp имеет форму, которая при заполнении и нажатии отправляет результаты сервлету Login в моем основном пакете:

 <form name="input" action="src/core/Login" method=GET>
  Username: <input type="text" name="userName" />
  <br>
  Password: <input type="password" name="password" />
  <br>
  <input type="submit" value="Login" />
 </form> 

Eclipse имеет встроенный браузер, поэтому, когда я запускаю login.jsp, он загружает его в браузер Eclipse и отображает его. Когда я нажимаю кнопку входа в систему, она должна отправить имя пользователя и пароль сервлету входа, но вместо этого я получаю следующую ошибку:

HTTP Status 404 - /P3/src/core/Login

--------------------------------------------------------------------------------

type Status report

message /P3/src/core/Login

description The requested resource (/P3/src/core/Login) is not available.

По какой-то причине сервер не знает о сервлете ... Я прочитал пару ( первая и вторая ) статей в Интернете, объясняющих возможные проблемы, но Я все еще получаю ошибку. Я попробовал решение в первой статье, и оно не сработало; вторая статья на самом деле не применялась, поскольку файл settings.xml на сервере уже содержал правильные флаги и каталоги.

Вот мой файл WEB-INF / 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" 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">
  <display-name>P3</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>Registration</display-name>
    <servlet-name>Registration</servlet-name>
    <servlet-class>core.Registration</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Registration</servlet-name>
    <url-pattern>/Registration</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Register</display-name>
    <servlet-name>Register</servlet-name>
    <servlet-class>core.Register</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Login</display-name>
    <servlet-name>Login</servlet-name>
    <servlet-class>core.Login</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/Login</url-pattern>
  </servlet-mapping>
</web-app>

Как мне настроить мой проект, чтобы он правильно развертывался в Eclipse?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2010

Действие формы action="src/core/Login" не соответствует отображению сервлета /Login. Действие формы должно указывать на URL, а не на путь файловой системы локального диска.

2 голосов
/ 28 февраля 2010

Поскольку это домашнее задание, я просто укажу вам правильное направление.

Я предлагаю вам взглянуть на ваш дескриптор развертывания . (это файл /WEB-INF/web.xml). В этом файле вы определяете сервлеты и сопоставления URL , которые клиенты будут использовать для доступа к этим сервлетам.

Если эти элементы не присутствуют, Tomcat не знает, как обслуживать запросы для ваших сервлетов.

Если вы сообщите NetBeans, что создаете новый сервлет, а не новый класс Java, он запросит у вас соответствующую информацию, чтобы все настроить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...