2017-02-18 6 views
0

У меня есть простая форма html на моем веб-сайте, которая отправляет данные на сервлет и получает ответ, если успех. Если я тестирую/запускаю код на сервере Wildfly на локальном хосте или на закрытом тестовом сервере, он отлично работает.Не удается отправить форму html на реальном веб-сервере

Я загрузил свой сайт на общедоступный веб-хост (1 и 1). Если я попытаюсь отправить форму, я получаю сообщение об ошибке, что мой сервлет не найден. В чем проблема?

index.html

<form id="contactForm" method="post" action="MailServlet" name="contactForm"> 
    <div class="form-group"> 
    <label for="InputName">Ihr Name</label> <input type="text" class="form-control" id="name" name="name"> 
    </div> 
    <div class="form-group"> 
    <label for="InputEmail1">Ihr EMail Adresse</label> <input type="email" class="form-control" id="mail" name="mail" required="required"> 
    </div> 
    <div class="form-group"> 
    <label for="InputMessage">Ihre Nachricht an uns</label> 
    <textarea class="form-control" id="nachricht" rows="8" name="nachricht" required="required"></textarea> 
    </div> 

    <button type="submit" class="btn btn-ar btn-primary" id="sendenBtn" style="margin-top: 10px;">senden</button> 
    <div class="clearfix"></div> 
</form> 
<div id="antwort" style="color: green; font-weight: bold;"></div> 

Мой сервлет MailServlet.java

@WebServlet("/MailServlet") 
public class MailServlet extends HttpServlet { 
    private static final long serialVersionUID = 1 L; 

    private static final String SMTP_HOST_NAME = "smtp.1und1.de"; 
    private static final String SMTP_AUTH_USER = "[email protected]"; 
    private static final String SMTP_AUTH_PWD = "..."; 

    public MailServlet() { 
    super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    doPost(request, response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 

    response.setContentType("text/html;charset=UTF-8"); 

    String name = request.getParameter("name"); 
    String email = request.getParameter("mail"); 
    String nachricht = request.getParameter("nachricht"); 

    if (email.equals("") || nachricht.equals("")) { 

     out.write("Bitte geben Sie Ihre EMail Adresse und eine Nachricht ein."); 
     return; 
    } else { 

     //Simple Method to send an email 
     contact(name, email, nachricht); 

     out.write("Vielen Dank, wir haben Ihre Nachricht erhalten."); 

    } 
    out.close(); 

    } 

мои script.js

$(document).ready(function() { 

    //Kontaktform 
    $("#contactForm").submit(function(e) { 

    e.preventDefault(); 

    $.ajax({ 
     context: this, 
     url: $(this).attr('action'), 
     type: $(this).attr('method'), 
     data: $(this).serialize(), 
     dataType: 'html', 
     success: function(data) { 
     $("#antwort").text(data); 
     }, 
     error: function(data) { 
     alert("Es trat ein Fehler auf. Bitte versuchen Sie es erneut"); 
     } 
    }); 

    }); 
}); 

Мой web.xml

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>MailServlet</servlet-name> 
    <url-pattern>/MailServlet</url-pattern> 
</servlet-mapping> 
</web-app> 

Мой файл-Структур

Домашняя страница | - src | - de.homepage.servlets | - MailServlet.java

+0

Возможно, дубликат http://stackoverflow.com/questions/11731377/servlet-returns-http-status-404-the-requested-resource-servlet-is-not-availa –

ответ

0

Проверьте свой URL-адрес, возможно, на вашем компьютере-разработчике использовался путь контекста, который не совпадает с общедоступным сервером.

См. Http-запрос и ответ от инструмента браузера dev и проверьте, есть ли проблемы с URL-адресом действия.

0

Это все о относительной против абсолютных путей при обращении к сервлет из HTML здесь:

<form id="contactForm" method="post" action="MailServlet" name="contactForm"> 

Посмотрите this post. В разделе «Ссылка на URL сервлета из HTML» объясняется все, что вы должны знать.