2014-08-03 3 views
0

Я читаю учебник, пытаясь создать очень простое веб-приложение с MySql. Моя IDE - это NetBeans 8.0. С моим приветственным файлом index.jsp пользователь должен иметь возможность вводить запрос в текстовое поле, после чего таблица результатов отобразится ниже. Или будет отображаться текст с указанием того, сколько строк повлияло на оператор. Когда я нажимаю кнопку «выполнить», ничего не происходит.Сервлет не подключается к MySQL или doPost() не работает

Я добавил драйвер MySQL в свою библиотеку и зарегистрировал сервер MySQL на вкладке Мои сервисы.

Я могу выполнить запросы с помощью команды «Выполнение» из Netbeans, но мой Java-сервлет, похоже, ничего не делает.

Мой сервлет:

package com.test; 

import com.john.utils.SQLUtil; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

/** 
* 
* @author me 
*/ 
public class SqlServlet extends HttpServlet { 

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> 
    * methods. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     String sqlStatement = request.getParameter("sqlStatement"); 
     String sqlResult = ""; 
     try 
     { 
      // load DB driver 
      Class.forName("com.mysql.jdbc.Driver"); 

      // get connection 
      String dbURL = "jdbc:mysql://localhost:3306/tester"; 
      String username = "root"; 
      String password = "broken1"; 
      Connection connection = DriverManager.getConnection(dbURL, username, password); 

      // create statement 
      Statement statement = connection.createStatement(); 

      // parse SQL string 
      sqlStatement = sqlStatement.trim(); 
      if(sqlStatement.length() >= 6) 
      { 
       String sqlType = sqlStatement.substring(0, 6); 
       if(sqlType.equalsIgnoreCase("select")) 
       { 
        ResultSet resultSet = statement.executeQuery(sqlStatement); 
        sqlResult = SQLUtil.getHtmlTable(resultSet); 
        resultSet.close(); 
       } else { 
        int i = statement.executeUpdate(sqlStatement); 
        if(i == 0) { 
         sqlResult = "<p>The statement executed successfully.</p>"; 
        } else { 
         sqlResult = "<p>The statement executed successfully.</p>" 
         + i + " row (s) affected.</p>"; 
        } 
       } 
      } 
      statement.close(); 
      connection.close(); 
     } catch (ClassNotFoundException e){ 
      sqlResult = "<p>Error loading th edatabase driver: </br>" 
         + e.getMessage() + "</p>"; 
     } catch (SQLException e){ 
      sqlResult = "<p>Error executing the SQL statement: <br>" 
        + e.getMessage() + "</p>"; 
     } 

     HttpSession session = request.getSession(); 
     session.setAttribute("sqlResult", sqlResult); 
     session.setAttribute("sqlStatement", sqlStatement); 

     String url = "/index.jsp"; 
     getServletContext() 
        .getRequestDispatcher(url) 
        .forward(request, response); 

    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** 
    * Handles the HTTP <code>GET</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Handles the HTTP <code>POST</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Returns a short description of the servlet. 
    * 
    * @return a String containing servlet description 
    */ 
    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 

} 

Мои JSP:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Query Master</title> 
    </head> 
    <body> 
     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
     <c:if test="${sqlStatement == null}"> 
      <c:set var="sqlStatement" value="select * from user" /> 
     </c:if> 

     <h1>Input a SQL Statement</h1> 

     <form action="SqlServlet" method="POST"> 
      <textarea name="sqlStatement" cols="60" rows="8">${sqlStatement}</textarea> 
      <input type="submit" value="Execute" 
     </form> 

      <p>SQL Results</p> 
     ${sqlResult} 

    </body> 
</html> 
+1

Вы получаете какое-либо исключение? –

+0

Не исключение, которое я вижу где угодно. Не в браузере или в Glassfish. –

ответ

0

Вы забыли включить схему в SQL запросе. Напишите свой запрос следующим образом:

SELECT * FROM Tester.User 

Попробуйте также посмотреть журнал своего сервера в Netbeans в окне вывода. Обычно вы можете найти их, если вы делаете что-то не так.

+0

Единственное сообщение в окне вывода сервера Glassfish указывает, что оно было успешно развернуто. Никакого исключения из того, что я могу сказать. Просто выводьте, что сборка прошла успешно. –

Смежные вопросы