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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class.forName(“com.mysql.jdbc.Driver”)错误jsp [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我是JSP的新手。我正在尝试使用sublime和xwampp来完成JSP和mysql连接的基本程序。在运行login.jsp页面时,我得到以下内容:

enter image description here

enter link description here

答案

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

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

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

还有一个单独的问题,即如何确保您的构建/打包系统自动包含战争中所需的Jar或以其他方式部署它,但您没有在允许我们解决该问题的问题中提供任何内容。

另一答案

可能的错误:

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驱动程序那样做任何逻辑

另一答案

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

以上是关于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 [重复]