我是JSP的新手。我正在尝试使用sublime和xwampp做一个JSP和MySQL连接的基本程序。在运行login.jsp页面时,我得到以下信息:
答案 0 :(得分:1)
Web应用程序抛出的ClassNotFoundException
表示在运行时类路径中找不到您引用的类。在您的情况下,该类别为com.mysql.jdbc.Driver
。按名称显式加载类时,这会带来更大的风险
在运行时,因为Java编译器无法检查所需的类是否存在。当然,对于JSP,编译时不一定与运行时区分开。
当然,您不能只命名一个类并期望Java自动将其放置在未指定的位置,检索并加载它。您需要在Web应用程序中或在应用服务器(例如Tomcat)为每个Web应用程序提供的类中包括所需的类及其所有依赖项。
对于诸如此类的第三方类,通常的方法是获取一个或多个包含该类及其依赖项的Jar文件,并将其放在Web应用程序的lib/
目录中战争文件或部署目录。确保它们的所有权和权限允许应用程序服务器读取它们。您可以在MySQL的网站上找到所需的Jar文件。您正在寻找他们的“ Connector/J”。
还有一个单独的问题,即如何确保您的构建/打包系统在战争中自动包括所需的Jar或以其他方式部署它,但是您在问题中没有提出任何可以解决这个问题的内容。
答案 1 :(得分:0)
可能的错误:
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驱动程序之类的任何逻辑
答案 2 :(得分:-1)
您正在JSP中使用request.getParameter()。您必须通过在特定方法中将HTTPServletRequest作为参数在Java文件中使用它。而且,如果您要连接到MySql,则在类路径中还需要MysqlConnector.jar文件