Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC的Servlet_Java_Mysql_Jsp_Servlets_Jdbc - Fatal编程技术网

Java 使用JDBC的Servlet

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

我的计划有问题。项目文件:

豪斯级

家政课

和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文件:

<?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);