Java 使用JDBC的Servlet
我的计划有问题。项目文件: 豪斯级 家政课 和Servlet: 豪斯巴斯特酒店 我读了一些解决方案,但没用。问题有两个例外: SQL exceprion java.SQL.SQLException:找不到适合的驱动程序 jdbc:mysql://localhost:3306/mydb2 我想补充: Class.forNamecom.mysql.jdbc.Driver 添加到我的代码中,并将mysql连接器jar添加到我的项目中,但它会引发异常: SQL异常java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 第二个例外: JasperException:绝对uri: 无法在web.xml或随部署的jar文件中解析 此应用程序无法连接到base 这是我的pom.xml文件:Java 使用JDBC的Servlet,java,mysql,jsp,servlets,jdbc,Java,Mysql,Jsp,Servlets,Jdbc,我的计划有问题。项目文件: 豪斯级 家政课 和Servlet: 豪斯巴斯特酒店 我读了一些解决方案,但没用。问题有两个例外: SQL exceprion java.SQL.SQLException:找不到适合的驱动程序 jdbc:mysql://localhost:3306/mydb2 我想补充: Class.forNamecom.mysql.jdbc.Driver 添加到我的代码中,并将mysql连接器jar添加到我的项目中,但它会引发异常: SQL异常java.lang.ClassNotFo
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
,
JSP标记库:
%@taglib prefix=c uri=http://java.sun.com/jsp/jstl/core %
和项目结构:
[项目结构][1]
在project structure->libraries中,我拥有所有JAR。因为您使用IntelliJ,我相信您可能需要将库添加到工件中,因为根据我的经验,IntelliJ将maven依赖项添加到类路径中,而不是添加到工件中 确保转到文件->项目结构->工件,然后将所有可用库添加到工件中 但是,在连接之前,您需要注册驱动程序,否则无论哪种方式都不起作用:
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
希望这有帮助。您的WEB-INF没有任何用于放置mysql的lib文件夹jar@Overridepublic void init{houseDAO=new HouseDAOconn;}有点奇怪,这个servlet中conn的意义是什么。关于您的问题,我认为Idea并没有看到这是一个maven项目,尝试重新导入它并没有帮助。问题只在于使用tomcat时,在主类为all Works的standart项目中检查MySQL jar是否存在——这就是错误所在。您可以将其设置为运行时,因为JDBC不会根据供应商的API/jar进行编译。对于当前的JDBC 4,将不再需要Class.forName来动态加载驱动程序。最后一个补救方法是将jar放在WEB-INF/lib/中。在将jar添加到项目结构中的库之前,我刚刚开始学习JavaEE。什么是人工制品?“工件”窗口中出现错误,该窗口调用了关于缺少jdbc驱动程序的信息。我点击按钮修复它,但例外并没有错过。之后,我在Artifacts->availible元素中双击jars,我的第二个异常是miss。但不带驱动程序:未找到适合jdbc的驱动程序:mysql://localhost:3306/mydb2I 更新的问题,添加了带有工件结构的图片在WEB-INF中您有jdbc驱动程序吗?当tomcat启动时,您是否作为数据源连接?尝试将jdbc驱动程序jar复制到tomcat的lib目录,应该类似于tomcat/lib/如果您将其作为数据源运行,tomcat甚至在部署应用程序之前就连接到数据库并创建一个池。PS:很抱歉说得不准确,在我从工件中删除JAR并注册驱动程序Class.forNamecom.mysql.jdbc.driver项目开始工作后,workWow中只有tomcat项目。我现在不知道该如何感谢你如果它能工作,你在tomcat lib文件夹中有它吗?
@WebServlet("/post")
public class HosesBaseServlet extends HttpServlet {
Connection conn;
private HouseDAO houseDAO;
@Override
public void init(){
houseDAO = new HouseDAO(conn);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
//choice from html form
// String choice = request.getParameter("district");
try {
List<House> houses = houseDAO.getList();
request.setAttribute("houses", houses);
request.getRequestDispatcher("/houses.jsp").forward(request,response);
}catch (Exception ex ) {
System.out.println("Fail to connect with base");
ex.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);