使用JSP将Mysql与IntelliJ Ultimate 2016.2.3连接[重复]

Posted

技术标签:

【中文标题】使用JSP将Mysql与IntelliJ Ultimate 2016.2.3连接[重复]【英文标题】:Connecting Mysql with IntelliJ ultimate 2016.2.3 using JSP [duplicate] 【发布时间】:2016-09-09 09:15:47 【问题描述】:

我是 JSP 和 IntelliJ IDE 的新手,当我尝试登录我的应用程序时遇到错误 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。我在开发 JSP 项目时使用 IntelliJ 作为我的 IDE。 如何将 Mysql 连接到 JSP 项目?

下面是LoginDao.java

package com.huza.schooldynamic;

/**
 * Created by HUZY_KAMZ on 9/8/2016.
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LoginDao 
    public static boolean validate(String name, String pass) 
        boolean status = false;
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;

        String url = "jdbc:mysql://localhost:3306";
        String dbName = "form";
        String driver = "com.mysql.jdbc.Driver";
        String userName = "root";
        String password = "namungoona";
        try 
            Class.forName(driver).newInstance();
            conn = DriverManager
                    .getConnection(url + dbName, userName, password);

            pst = conn

                .prepareStatement("select * from login where user=? and password=?");
        pst.setString(1, name);
        pst.setString(2, pass);

        rs = pst.executeQuery();
        status = rs.next();

     catch (Exception e) 
        System.out.println(e);
     finally 
        if (conn != null) 
            try 
                conn.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        
        if (pst != null) 
            try 
                pst.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        
        if (rs != null) 
            try 
                rs.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        
    
    return status;

这是我的 servlet 类 LoginServlet.java

package com.huza.schooldynamic;

/**
 * Created by HUZY_KAMZ on 9/8/2016.
 */
import java.io.IOException;
import java.io.PrintWriter;

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

public class LoginServlet extends HttpServlet

    private static final long serialVersionUID = 1L;

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String n=request.getParameter("username");
        String p=request.getParameter("userpass");

        HttpSession session = request.getSession(false);
        if(session!=null)
            session.setAttribute("name", n);

        if(LoginDao.validate(n, p))
            RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp");
            rd.forward(request,response);
        
        else
            out.print("<p style=\"color:red\">Sorry username or password error</p>");
            RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
            rd.include(request,response);
        

        out.close();
    

这是我的 index.jsp 文件

<%--
  Created by IntelliJ IDEA.
  User: HUZY_KAMZ
  Date: 9/8/2016
  Time: 5:31 PM
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>School Management System</title>
  </head>
  <body>

  <br>
  <br>
  <br>
  <center>
  <form action="loginServlet" method="post">
    <fieldset style="width: 300px">
      <legend> Login here </legend>
      <table>
        <tr>
          <td>User ID</td>
          <td><input type="text" name="username" required="required" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="password" name="userpass" required="required" /></td>
        </tr>
        <tr>
          <td><input type="submit" value="Login" /></td>
        </tr>
      </table>
    </fieldset>
  </form>

  </center>


  </body>
</html>

这是我的 welcome.jsp 文件

<%--
  Created by IntelliJ IDEA.
  User: HUZY_KAMZ
  Date: 9/8/2016
  Time: 6:00 PM
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome <%=session.getAttribute("name")%></title>
</head>
<body>
<h3>Login successful!!!</h3>
<h4>
    Hello,
    <%=session.getAttribute("name")%></h4>
</body>
</html>

最后这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.huza.schooldynamic.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

所以目前我试图在 IntelliJ IDE 中查看 Mysql,但似乎我不知道如何将它连接到项目,当我运行应用程序并尝试登录时,IDE 中出现此错误java.lang.ClassNotFoundException: com.mysql.jdbc.Driver .

下面是IDE的图片

【问题讨论】:

@Jozef Chocholacek ,在你说它重复之前,我正在使用 IntelliJ IDE 而不是 Eclipse,所以我的问题是关于连接性。所以你的意思是它们是相同的步骤 在提问之前,先学习一些基础知识,然后在 Google 上搜索java.lang.ClassNotFoundException com.mysql.jdbc.Driver web application - 您的问题与您使用的 IDE无关 @huxaiphaerIdris 我使用 IntelliJ。您可以尝试将 Maven 添加到您的项目中(右键单击模块并选择“添加框架”...然后选择 Maven)。然后用 Maven 添加你的 mysql 依赖,这将得到你需要的依赖。 【参考方案1】:

ClassNotFoundException 告诉您它在您的类路径中找不到类 com.mysql.jdbc.Driver。换句话说,您在项目中定义的库 JAR 都不包含该类。

该特定类是java.sql.Driver 接口的 MySQL 特定实现。 (如果您不了解接口是什么,您可以从上面的Java tutorial's page 开始。但是您需要进一步了解它,因为接口是 OOP 的核心概念)。

你的 DAO 类说在String driver = "com.mysql.jdbc.Driver"; 行中使用这个特定的潜水员。但是当代码运行时,它没有找到该名称的类。所以你需要将该类添加到你的类路径中。通过转到 Maven 中心的 Advance Search Page,您可以搜索该(或任何其他)类以确定哪些库拥有它。在这种特殊情况下,它位于 mysql-connector-java JAR 中;最新版本为v6.0.4。

所以您需要将mysql-connector-java JAR 添加到您的类路径中,即将它作为库添加到您的Java 项目中。你如何做到这一点取决于你如何设置你的项目。

如果你使用的是Maven,可以添加需要的依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.4</version>
</dependency>

如果您使用的是 Gradle,请添加

compile 'mysql:mysql-connector-java:6.0.4'

如果你在 Ivy 中使用 Ant,请添加

<dependency org="mysql" name="mysql-connector-java" rev="6.0.4" />

我从information page 为 maven 中心的那个 JAR 文件复制了所有这些声明。

如果您没有使用上述构建工具之一,则需要以另一种方式将 JAR 添加到您的项目中。例如,如果您只是在 IDEA 中使用 Project 配置,请转到 Project Structure (Ctrl+Shift+Shift+S / ;) 并将其添加到模块中的新库。有关详细信息,请参阅 Library IntelliJ IDEA 帮助页面及其引用的页面。

【讨论】:

非常感谢@Javaru,你的回答成功了

以上是关于使用JSP将Mysql与IntelliJ Ultimate 2016.2.3连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 中运行 IntelliJ JSP 代码而不是显示源代码

Intellij 运行配置 Spring Boot 与 Maven 问题

使用 Intellij 10.X 和 tomcat 6.X 修改后热部署 JSP

IntelliJ 和 JSP/JSTL 无法解析 tomcat7 中 JSTL 的 taglib

IntelliJ IDEA使用idea解决新建jsp文件而找不到jsp文件模版的新建选项

使用 IntelliJ IDEA 进行调试时如何解析 JSP 中的 Spring 模型变量?