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 文件中查找该类