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页面时,我得到以下内容:
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 文件中查找该类