2014-01-14 1 views
0

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

  • Вход

  • процесса

  • Результат

В качестве сервлетов и фильтра:

  • AuthentifFilter

Это мой .xml:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app 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" 
     version="2.4"> 

    <display-name>PDPJ Servlet Application</display-name> 

    <description> 
     Not in english so skipping this 
    </description> 

    <listener> 
     <listener-class>listeners.InitServlet</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>LoginServlet</servlet-name> 
     <servlet-class>servlet.LoginServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>LoginServlet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>ProcessingServlet</servlet-name> 
     <servlet-class>servlet.ProcessingServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>ProcessingServlet</servlet-name> 
     <url-pattern>/PDPJ_-_Servlet_-_V4/process/</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>ResultsServlet</servlet-name> 
     <servlet-class>servlet.ResultsServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>ResultsServlet</servlet-name> 
     <url-pattern>/process/results</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>1200</session-timeout> 
    </session-config> 

    <filter> 
     <filter-name>AuthFilter</filter-name> <!-- mandatory --> 
     <filter-class>filter.AuthentificationFilter</filter-class> <!-- mandatory --> 

    </filter> 

    <filter-mapping> 
     <filter-name>AuthFilter</filter-name> 
     <url-pattern>/PDPJ_-_Servlet_-_V4/process/*</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 

    </filter-mapping> 

</web-app> 

Теперь обработка сервлет имеет URL-адрес из "/ PDPJ_- Servlet -_V4/процесс /", используемый для быть просто «/ process /».

Вещь, после входа в систему, адрес должен выглядеть так: http://localhost:8080/PDPJ_-_Servlet_-_V4/process/?username=admin&password=admin и он работает для ввода вручную, однако, если я просто нажму кнопку отправки, URL станет http://localhost:8080/process/?username=admin&password=admin, которого я просто не получу.

Вот форма:

PrintWriter pw = resp.getWriter(); 
pw.println("<html><head></head><body>"); 

pw.println("<form action=\"/process/\"> " + 
     "Username:<input type=\"text\" name=\"username\"/><br/> " + 
     "Password:<input type=\"password\" name=\"password\"/><br/> " + 
     "<input type=\"submit\" value=\"login\"> " + 
     "</form> "); 
pw.println("</body></html>"); 

Может кто-то указать на то, что я не хватает?

EDIT Кроме того, если .xml содержат/PDPJ_- Servlet -_V4/или я могу сказать, что я хочу «относительный путь» или что-то подобное?

ответ

1

Вы -, установив его по этому URL-адресу в форме (см. Ниже). Ведущая косая черта делает ее абсолютной.


Почти невозможно создавать HTML на Java; используйте JSP или аналогичный для слоя представления.

+0

Домашнее задание предназначено только для сервлета, без jsp. После этого Jsp. Спасибо, но не могли бы вы также привести пример того, как он должен работать? – Kalec

+0

@Kalec Пример чего? Я сказал, что ведущая косая черта делает ее абсолютной ... так что сделать ее относительной ... удалить ведущую косую черту. –

+0

Английский не мой первый язык, я не понимаю, ведущий является первым или последним? – Kalec

1

Здесь:

pw.println("<form action=\"/process/\"> 

Вы говорите форме, чтобы получить возможность отправлять обратно в URL/процесс/который является абсолютным путем.

+0

, и я бы сделал это ... не абсолютным путем ... как? – Kalec

+0

Удалить ведущий/ –

+0

Извините, английский - это не мой первый язык, ведущий - первый или последний? – Kalec

0

Ну, действие вашей формы является action="/process/", поэтому, когда подавать нажимается она подает запрос на: <server-url>:<server-port>/process/ и нет «/ PDPJ_- Servlet -_V4 in the URL, by the way there is no context name in the URL too, so even if you change the действие value, you can only deploy your application with no context` имя, в противном случае то же самое происходит.

+0

Контекстное имя, что именно? – Kalec

+0

Назовите ваш военный файл 'something.war' и разверните его в Tomcat (в режиме по умолчанию), имя контекста будет' something'. –

 Смежные вопросы

  • Нет связанных вопросов^_^