不能在真正的网络服务器上发送html表单

时间:2017-02-18 17:44:01

标签: java jquery html servlets

我的网站上有一个简单的html表单,它将数据发送到servlet并在成功时获得响应。如果我在localhost或私有测试服务器上测试/运行Wildfly服务器上的代码,它可以正常工作。

我已将我的网站上传到公共网站主机(1和1)。如果我尝试发送表单,我会收到我的servlet未找到的错误。问题是什么?

的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>

我的servlet 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 = "..@....de";
  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();

  }

my 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

2 个答案:

答案 0 :(得分:0)

检查您的网址,也许在您的开发计算机上使用了公共服务器上不同的上下文路径。

请参阅浏览器开发工具中的http请求和响应,并验证操作网址是否存在问题。

答案 1 :(得分:0)

在这里引用来自HTML的servlet时,它是关于相对路径与绝对路径的全部内容:

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

看看this post。在&#34;引用HTML&#34;中的servlet URL;你应该知道的一切都会被解释。