Я читаю учебник, пытаясь создать очень простое веб-приложение с 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>
Вы получаете какое-либо исключение? –
Не исключение, которое я вижу где угодно. Не в браузере или в Glassfish. –