2013-08-02 2 views
0

Мои Apache Tomcat каталог установки C: \ Apache-7.0.42 котHtml форма автоматически вызывает Servlet без представления

-

В WebApps папку я создал index.html и WEB-INF папку.

index.html

<html> 
<form action="MyServlet" method="post"> 
<pre> 
     Enter A: <input type="text" name="fieldA"> 
     Enter B: <input type="text" name="fieldA">   
     Add <input type="radio" name="operation" value="add"> 
     Sub <input type="radio" name="operation" value="sub"> 
     Add <input type="radio" name="operation" value="mul"> 
     Div <input type="radio" name="operation" value="div">   
     <input type="submit" value="submit"> 
     Result: <input type="text" name="result">   
<pre> 
</form> 
</body> 
</html> 

В папке WEB-INF Я создал web.xml и папка под названием "классы"

web.xml

<web-app> 
<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>MyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
</web-app> 

В WebApps/pravesh/WEB-INF/classes Я создал MyServlet.java

MyServlet.java

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.io.IOException; 
import javax.servlet.ServletException; 

public class MyServlet extends HttpServlet 
{ 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException 
{ 
    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 
    out.println("<html><body>"); 
    out.println("doGet"); 
    out.println("</body></html>"); 
    out.close(); 
} 

} 

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

Проблема: - 1) Когда я набираю localhost: 8080/pravesh/index.html, он не показывает мне html-страницу. Вместо этого он автоматически отправляет форму и запускает MyServlet и печатает на странице

doGet 

Хотя Если удалить всю папку WEB-INF, страница HTML показывает вверх.

2) Вместо doGet(), если я разместил doPost() в MyServlet.java и изменил метод формы index.html для публикации, он говорит: «HTTP-метод GET не поддерживается этим URL-адресом».

ответ

1

<url-pattern>/*</url-pattern> уловить /pravesh/index.html. Итак, сервлет MyServlet обрабатывает запрос (на самом деле запрос GET).

Вам нужен шаблон, который не улавливает статические ресурсы вашего приложения. В вашей форме у вас есть:

<form action="MyServlet" method="post"> 

Схема должна быть:

<url-pattern>/MyServlet</url-pattern> 
+0

Что должно быть правильным URL-шаблон, так что index.html страница показывает вверх? – theSilentOne

+0

См. Обновление моего ответа. Удачи! –

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