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

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

enter link description here

【问题讨论】:

  • 不要在 jsp 中直接使用 JDBC。了解 3 层架构

标签: java jsp xampp


【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2014-08-30
    • 2014-05-24
    • 2015-05-18
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多