我正在用heroku测试这个简单的应用程序,这是一个注册表。当我在eclipse服务器上运行它时没有问题,它正确地进行了注册。然而,当在heroku上部署它并提交给servlet时,我有两个错误。
Servlet代码:
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
//Conexion.Conectar();
boolean crear = create(request.getParameter("correo"),request.getParameter("nombre_usuario"),request.getParameter("pass"));
//System.out.println(creado);
if(crear){
request.getRequestDispatcher("correcto.jsp").forward(request, response);
System.out.println("ok");
}else {
request.getRequestDispatcher("index.jsp").forward(request, response);
System.out.println("mal");
}
//System.out.println("ok");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
public boolean create(String correo, String nombre_usu, String password) {
boolean creado = false;
Connection con = null;
PreparedStatement ps = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://XXXXXX","XXXXXXX","XXXXXXXXX");
String sql = "INSERT INTO usuarios (correo,nombre_usuario,clave) VALUES (?,?,?)";
System.out.println("Conexion bn");
ps = con.prepareStatement(sql);
ps.setString(1, correo);
ps.setString(2, nombre_usu);
ps.setString(3, password);
creado = ps.execute;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
ps.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return creado;
}
}
1)我第一次运行部署的应用程序时做sumbit我得到这个:
输入图片描述
- 然后我做同样的事情,应用程序显示:https://i.stack.imgur.com/kIKvT.jpg
我的项目https://i.stack.imgur.com/5ZNAD.jpg
https://i.stack.imgur.com/K9iMQ.jpg
index . jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Formulario</h1>
<form action="Servlet" method="GET">
Correo <input type="text" name="correo"> <br><br>
Nombre de usuario <input type="text" name="nombre_usuario"> <br><br>
Contraseña <input type="text" name="pass"> <br><br>
<input type="submit" value="Registrarse">
</form>
</body>
</html>
根据我的调查,这可能是由于这篇文章中讨论的路线https://es.stackoverflow.com/questions/320688/como-utilizar-las-rutas-relativas-en-javaee-para-war-en-hosting然而,我已经尝试过了,但它仍然不起作用。
第一个关于类版本的错误消息意味着您使用比您用来编译它的Java版本更旧的Java版本运行应用程序:
- Java类版本60是Java 16 -这可能是你用来编译的;
- Java类版本52是Java 8 -这是你用来在Heroku上运行它的。
所以你应该使用Java 8来构建你的应用程序,或者将你在Heroku上使用的Java版本更新到至少16。
第二个错误很可能是由于第一个错误导致应用程序没有正确部署。