Olá pessoal, estou tomando uma coça para entender a dinâmica do java(fase inicial) mas acho que para o que estou querendo estou quase lá.
Quando tento acessar o servlet recebo o seguinte erro:
HTTP Status 500 - type Exception report message description The server encountered an internal error that prevented it from fulfilling this request. exception java.lang.NullPointerException java.util.Properties$LineReader.readLine(Unknown Source) java.util.Properties.load0(Unknown Source) java.util.Properties.load(Unknown Source) util.Conexao.getConnection(Conexao.java:22) dao.ProfessorDAO.<init>(ProfessorDAO.java:30) controller.ProfessorServlet.processRequest(ProfessorServlet.java:52) controller.ProfessorServlet.doPost(ProfessorServlet.java:67) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) note The full stack trace of the root cause is available in the Apache Tomcat/8.0.22 logs. Apache Tomcat/8.0.22
Meu arquivo de conexão é:
package util; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class Conexao { private static Connection connection = null; public static Connection getConnection() { if (connection != null) return connection; else { try { Properties prop = new Properties(); InputStream inputStream = Conexao.class.getClassLoader().getResourceAsStream("db.properties"); prop.load(inputStream); String driver = prop.getProperty("driver"); String url = prop.getProperty("url"); String user = prop.getProperty("user"); String password = prop.getProperty("password"); Class.forName(driver); connection = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return connection; } } }
O tal arquivo db.properties é
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/imwsaogotardo user=imwsaogotardo password=carcleo
Meu arquivo de servlet é
package controller; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.ProfessorDAO; import model.Professor; /** * Servlet implementation class ProfessorServlet */ @WebServlet("/ProfessorServlet") public class ProfessorServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ProfessorServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String login = request.getParameter("login"); String senha = request.getParameter("senha"); String nome = request.getParameter("nome"); java.util.Date data = new java.util.Date(); int sala = Integer.parseInt(request.getParameter("sala")); Professor professor = new Professor( login, senha, nome, data, sala ); ProfessorDAO dao = new ProfessorDAO(); dao.addProfessor(professor); RequestDispatcher rd = request.getRequestDispatcher("listar.jsp"); rd.forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest( request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest( request, response); } }
E o arquivo dao é
package dao; /* ///////////////////////////////////////BUSCANDO O ID DA SALA///////////////////// PreparedStatement select = connection.prepareStatement( "select id from sala where nome = ?"); select.setString(1, _professor.getNomeSala()); ResultSet rs = select.executeQuery(); int idSala = rs.getInt("id"); ////////////////////////////////////////////////////////////////////////////////// */ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.GregorianCalendar; import model.Professor; import util.Conexao; public class ProfessorDAO { private Connection connection; public ProfessorDAO() { connection = Conexao.getConnection(); } public void addProfessor(Professor _professor) { try { PreparedStatement insert = connection.prepareStatement("insert into professor(login, senha, nome, dataCadastro, sala) values (?, ?, ?, ?, ? )"); // Parameters start with 1 insert.setString(1, _professor.getLogin()); insert.setString(2, _professor.getSenha()); insert.setString(3, _professor.getNome()); insert.setDate(4, new java.sql.Date(_professor.getDataCadastro().getTime())); insert.setInt(5, _professor.getSala()); insert.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public void deleteProfessor(int _professorId) { try { PreparedStatement preparedStatement = connection.prepareStatement("delete from professor where id=?"); // Parameters start with 1 preparedStatement.setInt(1, _professorId); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public void updateProfessor(Professor _professor) { try { //java.util.Date novaData = new Date(); GregorianCalendar novaData = new GregorianCalendar(); java.sql.Date dataNova = new java.sql.Date(novaData.getTime().getTime()); PreparedStatement preparedStatement = connection. prepareStatement("update professor set nome=?, login=?, senha=?, dataCadastro=?, sala=?" + "where id=?"); // Parameters start with 1 preparedStatement.setString(1, _professor.getNome()); preparedStatement.setString(2, _professor.getLogin()); preparedStatement.setString(3, _professor.getSenha()); preparedStatement.setDate(4, dataNova); preparedStatement.setInt(5, _professor.getSala()); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public List<Professor> getAllProfessores() { List<Professor> professor = new ArrayList<Professor>(); try { Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("select nome, login, senha, dataCadastro, sala from professor"); while (rs.next()) { Professor professorRS = new Professor( rs.getString("nome"), rs.getString("login"), rs.getString("senha"), rs.getDate("dataCadastro"), rs.getInt("sala") ); professor.add(professorRS); } } catch (SQLException e) { e.printStackTrace(); } return professor; } public Professor getProfessorById(int _professorId) { Professor professor; professor = null; try { PreparedStatement preparedStatement = connection.prepareStatement("select nome, login, senha, dataCadastro sala from professor where id=?"); preparedStatement.setInt(1, _professorId); ResultSet rs = preparedStatement.executeQuery(); if (rs.next()) { new Professor( rs.getString("nome"), rs.getString("login"), rs.getString("senha"), rs.getDate("dataCadastro"), rs.getInt("sala") ); } } catch (SQLException e) { e.printStackTrace(); } return professor; } }
O jsp é
<div id="indexMeio"> <form action="ProfessorServlet" method="post"> <input type="text" name="login" id="login"><br /> <input type="text" name="senha" id="senha"><br /> <input type="text" name="nome" id="nome"><br /> <input type="text" name="sala" id="sala"><br /> <input type="submit" value="Envia"> </form><br /> </div>
Onde esta o erro?
Obs.: tenho no diretorio imwsaogotardo\WebContent\WEB-INF\lib o .jar mysql-connector-java-5.1.35-bin.jar