我的网站上有一个简单的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
答案 0 :(得分:0)
检查您的网址,也许在您的开发计算机上使用了公共服务器上不同的上下文路径。
请参阅浏览器开发工具中的http请求和响应,并验证操作网址是否存在问题。
答案 1 :(得分:0)
在这里引用来自HTML的servlet时,它是关于相对路径与绝对路径的全部内容:
<form id="contactForm" method="post" action="MailServlet" name="contactForm">
看看this post。在&#34;引用HTML&#34;中的servlet URL;你应该知道的一切都会被解释。