>
Criei um banco no phpmyadmin do Xampp, chamado: "chamados". Porque no arquivo "mysql.exe" abre o monitor do MariaDB e não do MySQL. Código do arquivo NovoChamadoServlet.java.
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//import com.mysql.jdbc.Connection;
//import com.mysql.jdbc.Statement;
/**
* Servlet implementation class NovoChamadoServlet
*/
public class NovoChamadoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private java.sql.Statement stm;
private String sQL;
/**
* @see HttpServlet#HttpServlet()
*/
/*
public NovoChamadoServlet() {
super();
// TODO Auto-generated constructor stub
}
*/
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Novo Chamado</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Preencha as Informaçoes do chamado</h1>");
out.println("</hr>");
out.println("<form method='POST'>");
out.println("Titulo: <br><input type='text' name='txtTitulo'");
out.println("<br>");
out.println("<br>");
out.println("Conteudo: <br><textarea name='txtConteudo' rows='10' cols='40'></textarea>");
out.println("<br>");
out.println("<input type='submit' value='Abrir Chamado'>");
out.println("</form>");
out.println("<br>");
out.println("<a href='http://localhost:8080/Chamados/ListarChamados'>Listar Chamados</a>");
out.println("<br>");
out.println("<a href='http://localhost:8080/Chamados/Logoff'>Sair</a>");
out.println("</body>");
out.println("</html>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
String titulo = request.getParameter("txtTitulo");
String conteudo = request.getParameter("txtConteudo");
if(titulo.trim().length()<4) {
out.println("Preencha nome do Titulo");
}else if(conteudo.trim().length()<4) {
out.println("Preencha o campo Conteudo");
}else {
try {
Class.forName("com.mysql.jdbc.Driver");
sQL = "INSERT INTO chamados (titulo, conteudo) VALUES(";
sQL += "'"+titulo+"', '"+conteudo+"')";
try {
java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados", "root", "");
stm = conn.createStatement();
stm.execute(sQL);
stm.close();
conn.close();
}catch(SQLException e) {
e.printStackTrace();
out.println("Problema na conexao com o banco");
}
}catch(ClassNotFoundException ex) {
out.println("Problema ao carregar o driver de conexao");
}
}
}
ERRO:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at NovoChamadoServlet.doPost(NovoChamadoServlet.java:88)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:301)
Preciso de ajuda para fazer essa conexão funcionar para continuar o curso.
Obrigado.
Tem que rodar o Xampp porquê o banco está nele.
Testa esse código: Obs.:Modifique o nome da tabela e dos campos, que eu coloquei diferente.
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class NovoChamadoServlet
*/
public class NovoChamadoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
PrintWriter out = response.getWriter();
out.println(\"<html>\");
out.println(\"<head>\");
out.println(\"<title>Novo Chamado</title>\");
out.println(\"</head>\");
out.println(\"<body>\");
out.println(\"<h1>Preencha as informações do Chamado</h1>\");
out.println(\"<hr/>\");
out.println(\"<form method=\'POST\'>\");
out.println(\"Título:<br> <input type=\'text\' name=\'txtTitulo\'>\");
out.println(\"<br>\");
out.println(\"Conteúdo:<br> <textarea name=\'txtConteudo\' rows=\'10\' cols=\'40\'></textarea>\");
out.println(\"<br>\");
out.println(\"<input type=\'submit\' value=\'Abrir Camado\'>\");
out.println(\"</form>\");
out.println(\"<br>\");
out.println(\"<a href=\'http://localhost:8080/Chamados/ListarChamado\'>Listar Chamados<a/>\");
out.println(\"<br>\");
out.println(\"<a href=\'http://localhost:8080/Chamados/Logoff\'>Sair<a/>\");
out.println(\"</body>\");
out.println(\"</html>\");
} catch (IOException e) {
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String titulo = request.getParameter(\"txtTitulo\");
String conteudo = request.getParameter(\"txtConteudo\");
if(titulo.trim().length() < 4) {
out.println(\"Preencha o título\");
} else if(conteudo.trim().length() < 4) {
out.println(\"Preencha o conteúdo\");
} else {
try {
//Class.forName(\"com.mysql.cj.jdbc.Driver\");
Class.forName(\"com.mysql.jdbc.Driver\");//Caminho do driver de conexão
String SQL = \"INSERT INTO tbl_chamado(titulo, conteudo, data) VALUES(?, ?, ?)\";
try {
Connection conn = DriverManager.getConnection(\"jdbc:mysql://localhost:3306/chamados\", \"root\", \"\");
PreparedStatement pstm = conn.prepareStatement(SQL);
Date dataSQL = new Date(new java.util.Date().getTime());
//SimpleDateFormat dt = new SimpleDateFormat(\"yyy-MM-dd\");//\"yyy-MM-dd\" padrão da data no mysql
//dt.format(data);
pstm.setString(1, titulo);
pstm.setString(2, conteudo);
pstm.setDate(3, dataSQL);
pstm.execute();
pstm.close();
conn.close();
response.sendRedirect(\"http://localhost:8080/Chamados/ListarChamado\");
} catch (Exception e) {
out.println(\"Problema no banco de dados! \" + e.getMessage());
}
} catch (ClassNotFoundException e) {
out.println(\"Problema ao carregar o driver de conexão! \" + e.getMessage());
}
}
}
}