首页 > 解决方案 > MySQL 和 Eclipse 错误

问题描述

我需要解决这个问题。我需要使用数据库创建一个简单的注册表单,所以我下载了 MySQL 数据库。在终端(MAC)中,我创建了一个新数据库

数据库

用户名:root

密码:123456789

此时我创建了一个表:

用户

使用此参数:

名; 姓; 用户名; 密码; 电子邮件;

所有这些都在 VARCHAR (40) 中。

然后我在 Eclipse 上创建一个新的 WebApplication,我设置了 Tomcat 和 mysql-connector ( mysql-connector-java-8.0.11.jar ),并将它添加到路径中。

这是我的代码: registration.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>User Data</title>
</head>
<style>
div.ex {
    text-align: right width:300px;
    padding: 10px;
    border: 5px solid grey;
    margin: 0px
}
</style>
<body>
    <h1>Registration Form</h1>
    <div class="ex">
        <form action="RegistrationController" method="post">
            <table style="with: 50%">
                <tr>
                    <td>Firstname</td>
                    <td><input type="text" name="firstname" /></td>
                </tr>
                <tr>
                    <td>Lastname</td>
                    <td><input type="text" name="lastname" /></td>
                </tr>
                <tr>
                    <td>Username</td>
                    <td><input type="text" name="username" /></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="password" name="password" /></td>
                </tr>
                <tr>
                    <td>Email</td>
                    <td><input type="text" name="email" /></td>
                </tr>
            </table>
            <input type="submit" value="register" />
        </form>
        <br>
    </div>
</body>
</html>

这是RegistrationController.java

package it;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class UserDataServlet
 */
public class RegistrationController extends HttpServlet {

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  String firstname = request.getParameter("firstname");
  String lastname = request.getParameter("lastname");
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  String email = request.getParameter("email");


  // validate given input
  if (firstname.isEmpty() || lastname.isEmpty() || username.isEmpty() || password.isEmpty() || email.isEmpty()) {
   RequestDispatcher rd = request.getRequestDispatcher("registration.jsp");
   out.println("<font color=red>Please fill all the fields</font>");
   rd.include(request, response);
  } else {

   try {
    Class.forName("com.mysql.jdbc.Driver");
    // loads mysql driver

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB", "root", "123456789"); 

    String query = "insert into users values(?,?,?,?,?)";

    PreparedStatement ps = con.prepareStatement(query); // generates sql query

    ps.setString(1, firstname);
    ps.setString(2, lastname);
    ps.setString(3, username);
    ps.setString(4, password);
    ps.setString(5, email);

    ps.executeUpdate(); // execute it on test database
    System.out.println("successfuly inserted");
    ps.close();
    con.close();
   } catch (ClassNotFoundException | SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   RequestDispatcher rd = request.getRequestDispatcher("home.jsp");
   rd.forward(request, response);
  }
 }
}

但是如果我在 eclipse 上运行,我会收到这个错误:

HTTP 状态 404 - 未找到类型状态报告

消息 /WebApplication/RegistrationController

说明 源服务器没有找到> 目标资源的当前表示或不愿意透露存在的表示。

我的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>registration</display-name>
    <welcome-file-list>
        <welcome-file>registration.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <description></description>
        <display-name>RegistrationController</display-name>
        <servlet-name>RegistrationController</servlet-name>
        <servlet-class>it.RegistrationController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegistrationController</servlet-name>
        <url-pattern>/RegistrationController</url-pattern>
    </servlet-mapping>
</web-app>

显然我也创建了home.jsp。我怎么解决这个问题?

项目形象

日志文件


我还粘贴了 Eclipse 的控制台:

lug 05, 2018 2:50:55 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
AVVERTENZA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WebApplication' did not find a matching property.
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server version:        Apache Tomcat/9.0.8
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server built:          Apr 27 2018 19:32:00 UTC
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server number:         9.0.8.0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: OS Name:               Mac OS X
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: OS Version:            10.13.5
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Architecture:          x86_64
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: JVM Version:           1.8.0_161-b12
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: JVM Vendor:            Oracle Corporation
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: CATALINA_BASE:         /Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: CATALINA_HOME:         /Library/Tomcat
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dcatalina.base=/Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dcatalina.home=/Library/Tomcat
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dwtp.deploy=/Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Djava.endorsed.dirs=/Library/Tomcat/endorsed
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dfile.encoding=UTF-8
lug 05, 2018 2:50:55 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMAZIONI: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/albertomiceli/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
lug 05, 2018 2:50:55 PM org.apache.coyote.AbstractProtocol init
INFORMAZIONI: Initializing ProtocolHandler ["http-nio-8080"]
lug 05, 2018 2:50:55 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAZIONI: Using a shared selector for servlet write/read
lug 05, 2018 2:50:55 PM org.apache.coyote.AbstractProtocol init
INFORMAZIONI: Initializing ProtocolHandler ["ajp-nio-8009"]
lug 05, 2018 2:50:55 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAZIONI: Using a shared selector for servlet write/read
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.Catalina load
INFORMAZIONI: Initialization processed in 737 ms
lug 05, 2018 2:50:55 PM org.apache.catalina.core.StandardService startInternal
INFORMAZIONI: Starting service [Catalina]
lug 05, 2018 2:50:55 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAZIONI: Starting Servlet Engine: Apache Tomcat/9.0.8
lug 05, 2018 2:50:58 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
lug 05, 2018 2:51:01 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
lug 05, 2018 2:51:01 PM org.apache.coyote.AbstractProtocol start
INFORMAZIONI: Starting ProtocolHandler ["http-nio-8080"]
lug 05, 2018 2:51:01 PM org.apache.coyote.AbstractProtocol start
INFORMAZIONI: Starting ProtocolHandler ["ajp-nio-8009"]
lug 05, 2018 2:51:01 PM org.apache.catalina.startup.Catalina start
INFORMAZIONI: Server startup in 5398 ms

标签: javamysqldatabaseeclipse

解决方案


正如所讨论的,以下是已解决的问题:

1)web.xml在错误的路径中(直接在里面WebContent,而它应该在WEB-INF文件夹里面)

2)Mysql连接抛出与时区相关的错误InvalidConnectionAttributeException,并且已按照MySQL JDBC Driver 5.1.33 - Time Zone Issue中的建议进行修复


推荐阅读