【问题标题】:Connect to MySQL in eclipse java ee在eclipse java ee中连接MySQL
【发布时间】:2016-03-30 20:50:51
【问题描述】:

当我尝试在 localhost:8080 登录时遇到错误

我已连接到一个数据库 (mysql),其中包含 java 应用程序将检查以验证登录的 employee_id 和密码列。但它返回一个错误。我在下面附上了我的所有文件以及错误。

登录.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Login extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    String employee_id = request.getParameter("employee_id");
    String password = request.getParameter("password");
    if(Validate.checkUser(employee_id, password)) { 
        RequestDispatcher rs = request.getRequestDispatcher("Welcome");
        rs.forward(request, response);
    }
    else
    {
       out.println("Employee ID or Password is incorrect. Please try again.");
       RequestDispatcher rs = request.getRequestDispatcher("index.html");
       rs.include(request, response);
    }
}  


    }

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="login" method="post">
<h3>
Employee Login
</h3>
<b>Employee ID:</b> <br>
<input type="text"name="employee_id" size="20"><br><br>
<b>Password:</b><br>
<input type="password" name="password" size="20"><br><br>
<input type="submit" value="Login"><br><br>
</form>
</body>
</html>

验证.java

import java.sql.*;
public class Validate
{
public static boolean checkUser(String employee_id, String password)
{
    boolean st = false;
    try { 
        Class.forName("com.mysql.jdbc.Driver"); 

        Connection con =      DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll", "root", ""); 
        PreparedStatement ps = con.prepareStatement("select * from employee_login where employee_id =? and password = ?");
        ps.setString(1, employee_id);
        ps.setString(2, password);
        ResultSet rs =ps.executeQuery();
         st = rs.next();

     }catch(Exception e)
      {
          e.printStackTrace();
      }
         return st;                 
  }   
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>Login</servlet-class>
</servlet>
<servlet>
    <servlet-name>Welcome</servlet-name>
    <servlet-class>Welcome</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <url-pattern>/Welcome</url-pattern>
</servlet-mapping>

</web-app>

我在尝试登录时收到此错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at Validate.checkUser(Validate.java:8)
at Login.doPost(Login.java:15)
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:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745) 

【问题讨论】:

  • 下载mysql jdbc驱动添加到classpath
  • @Ramanlfc 是的,我有驱动程序,但我不确定要编写的代码。顺便问一下,你能告诉我类和 servlet 的区别吗?
  • 把jar放在WEB-INF/lib中,servlet只是一个独立于协议的java类,但它通常与http一起使用

标签: java mysql sql eclipse web-applications


【解决方案1】:

您可以使用此代码使用 Servlet 连接数据库。但是你必须要 Bbbbbbulid class Path Using mysqljdbc Driver 或者下载 Jar 。

public class ServletDatabaseConnect extends HttpServlet  
{
protected void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
{
    PrintWriter pw=res.getWriter();
    res.setContentType("text/html");        
    String tb=req.getParameter("table");    

    try
    {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","admin");
         Statement st=con.createStatement();
         System.out.println("connection established successfully...!!");     

         ResultSet rs=st.executeQuery("Select * from "+tb);


             while(rs.next())
             {
                 pw.println("<tr><td>"+rs.getInt(1)+"</td><td>"+rs.getString(2)+"</td>"+
                                  "<td>"+rs.getString(3)+"</td></tr>");
             }
         pw.println("</table>");
         pw.close();
    }
    catch (Exception e){
        e.printStackTrace();
    }

}}

【讨论】:

  • Class.forName() 现在是多余的
  • @Ramanlfc 当我尝试登录时,它给出了一个错误 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 你能检查我的代码吗?我上传一下
  • 下载:com.mysql.jdbc.Driver jar 并将其添加到您的项目中。 jar 链接:java2s.com/Code/Jar/c/Downloadcommysqljdbc515jar.htm
  • @AnandDwivedi mysql-connector-java-5.1.38-bin.jar 已经在我的库中
  • 为什么拒绝回答。? btw jdbc jar 在您的项目库上? .other 方法是右键单击项目-> 构建路径-> 配置构建路径在库选项卡中按添加外部 Jar 并选择您的 jar。
猜你喜欢
  • 2014-07-01
  • 2016-02-12
  • 1970-01-01
  • 2023-03-22
  • 2012-08-27
  • 1970-01-01
  • 2018-12-31
  • 2020-02-07
  • 1970-01-01
相关资源
最近更新 更多