Class.forName(“com.mysql.jdbc.Driver”)错误jsp [重复]

Posted

技术标签:

【中文标题】Class.forName(“com.mysql.jdbc.Driver”)错误jsp [重复]【英文标题】:Class.forName("com.mysql.jdbc.Driver") error jsp [duplicate] 【发布时间】:2019-02-06 08:36:17 【问题描述】:

我是 JSP 的新手。我正在尝试使用 sublime 和 xwampp 做一个基本的 JSP 和 mysql 连接程序。在运行 login.jsp 页面时,我得到以下信息:

enter link description here

【问题讨论】:

不要在 jsp 中直接使用 JDBC。了解 3 层架构 【参考方案1】:

您的 Web 应用程序抛出 ClassNotFoundException 表示在运行时类路径中找不到您引用的类。在您的情况下,该类是com.mysql.jdbc.Driver。当您按名称显式加载类时,这是一个更大的风险 在运行时,因为 Java 编译器无法检查所需的类是否存在。当然,对于 JSP 来说,编译时和运行时不一定能很好区分。

当然,您不能只命名一个类并期望 Java 自动将其定位到某个未指定的位置、检索并加载它。您需要在您的 Web 应用程序中或在您的应用程序服务器(即 Tomcat)为每个 Web 应用程序提供的类中包含所需的类及其所有依赖项。

对于第三方类,例如有问题的类,通常的方法是获取一个或多个包含该类及其依赖项的 Jar 文件,并将它们放在 Web 应用程序 War 文件的 lib/ 目录中或部署目录。确保它们的所有权和权限允许应用程序服务器读取它们。您可以在 MySQL 的网站上找到所需的 Jar 文件。您正在寻找他们的“Connector/J”。

还有一个单独的问题是如何确保您的构建/打包系统自动在您的 War 中包含所需的 Jar 或以其他方式部署它,但您在问题中没有提出任何可以让我们解决这个问题的内容。

【讨论】:

【参考方案2】:

您在 JSP 中使用 request.getParameter()。您必须通过将 HTTPServletRequest 作为该特定方法中的参数来在 java 文件中使用它。如果您要连接到 MySql,您还需要在类路径中使用 MysqlConnector.jar 文件

【讨论】:

感谢您帮助我,但我不明白如何在 java 文件中使用它....你能帮帮我吗 您可以从 javatpoint、教程点获取一些基本的 servlet 实现代码示例。此外,对于连接到 MySQL,您需要在类路径中使用 MysqlConnector.jar。 我添加了整个简单的项目链接...你能帮我检查一下吗? 我已请求您的项目访问权限 鉴于所有人都可以访问...抱歉【参考方案3】:

可能的错误:

1) 您无权访问 com.mysql.jdbc.driver 类。需要在 Maven 中导入:https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.6

2) 您在 JSP 中直接访问请求。正如@Jens 所说,这不是一个好习惯。

我猜你可能有一些实际呈现 JSP 的代码,如下所示:

@Controller
public class IndexController 

    @RequestMapping("/login")
    public ModelAndView myindex() 
        return new ModelAndView("login.jsp");
    

您可以在呈现 JSP 之前执行所有繁重的逻辑,然后只向它传递一个带有值的映射。像这样的:

@Controller
    public class IndexController 

        @RequestMapping("/login")
        public ModelAndView myindex(HTTPServletRequest request) 
            Map<String, Object> data = new HashMap<>();
            data.put("userId", request.getParameter("userId"));
            ...
            // call mysql driver here for whatever reason...
            ...
            return new ModelAndView("login.jsp", data);
        
    

然后在您的 login.jsp 中,您可以只显示地图的值,而不执行任何逻辑,例如调用 SQL 驱动程序

【讨论】:

我添加了整个简单的项目链接...你能帮我检查一下吗? 当我使用try catch时,它没有显示任何错误..它进入空白的jsp页面并且数据库也没有更新 我请求访问您的项目 MySQL Connector/J 5.1.6 版本过时,不应使用。最近的版本是 5.1.47 或 8.0.12。

以上是关于Class.forName(“com.mysql.jdbc.Driver”)错误jsp [重复]的主要内容,如果未能解决你的问题,请参考以下文章

关于Class.forName(“com.mysql.jdbc.Driver”)

为啥我找不到 Class.forName("com.mysql.jdbc.Driver"); 的异常[复制]

Class.forName("com.mysql.jdbc.Driver").newInstance()

Class.forName("com.mysql.jdbc.Driver") 没有在 jar 文件中查找该类

Class.forName("com.mysql.jdbc.driver");

Class.forName(“com.mysql.jdbc.Driver”)错误jsp [重复]