2016-03-05 63 views
-1

我有我的progect问题。 progect的文件:的Servlet与JDBC

House.class

public class House implements Serializable { 

    //properties ------------------------------------------------------------- 
    private String price; 
    private String square; 
    private String RoomNumbers; 
    //------------------------------------------------------------------------ 

    //getters - settersm Object overriding.... ----------------------------- 

HouseDAO.class

public class HouseDAO { 

    Connection connection; 
    final String DB_CONNECTION = "jdbc:mysql://localhost:3306/mydb2"; 
    final String DB_USER = "root"; 
    final String DB_PASSWORD = "root"; 

    public HouseDAO(Connection connection) { 
     this.connection = connection; 
    } 

    public List<House> getList() { 
     List<House> houses = new ArrayList<>(); 
     try { 

      connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD); 
      System.out.println("Connection available"); 
      PreparedStatement ps = connection.prepareStatement("SELECT Square, RoomNumbers, Price FROM houses WHERE District = 'Dnepr'"); 
      ResultSet rs = ps.executeQuery(); 
       while (rs.next()){ 
       House house = new House(); 
        house.setSquare(rs.getString("Square")); 
        house.setRoomNumbers(rs.getString("RoomNumbers")); 
        house.setPrice(rs.getString("Price")); 
        houses.add(house); 
       } 

     }catch (Exception ex){ 
      System.out.println("SQL exceprion"); 
      ex.printStackTrace(); 

     } 
      return houses; 
    } 
} 

和Servlet: HousesBaseServlet

@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(); 
     } 
    } 
} 

我看了一些solutiotuns,但它并不能帮助。

SQL exceprion值java.sql.SQLException:在两个例外的问题找到了 JDBC没有合适的驱动程序的:mysql://本地主机:3306/MYDB2

我尝试添加:

的Class.forName( “com.mysql.jdbc.Driver”);

我的代码,并添加MySQL连接器JAR到我的项目,但它抛出异常:

SQL异常抛出java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

第二个例外:

JasperException:绝对URI:http://java.sun.com/jsp/jstl/core 不能在在web.xml或部署 的jar文件此应用程序无法与基地

连接在这里解决的是我的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 - artifacts

在项目结构 - >库我有所有罐子。

+1

您的WEB-INF没有任何lib文件夹来放置mysql jar – Ramanlfc

+0

'@Override public void init(){ houseDAO = new HouseDAO(conn);在这个servlet中''conn'有什么意义呢?关于你的问题,我认为Idea没有“看到”这是一个maven项目,请尝试重新输入它 – 2016-03-05 16:15:57

+0

没有帮助。只有在使用tomcat的情况下,在具有MAIN类的标准项目中才会出现问题 – user202822

回答

1

由于您使用的IntelliJ我相信你可能需要将库添加到神器,因为从我的经验的IntelliJ添加Maven依赖的类路径而不是神器。

确保您转至文件 - >项目结构 - >工件,然后将所有库从可用端添加到工件。

但你需要获得连接,否则它不工作,无论哪种方式之前注册驱动程序:

Class.forName("com.mysql.jdbc.Driver");  
connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD); 

希望这有助于。

+0

我刚刚开始学习JavaEE,在将jar添加到项目结构中的“库”之前。什么是神器? Artifacts窗口出现错误,该窗口调用了关于缺少jdbc驱动程序的错误。我点击按钮“修复它”,但异常不会错过。之后,我双击了Artifacts中的罐子 - >可用元素,而我的第二个异常是未命中。但没有驱动程序:找不到合适的驱动程序jdbc:mysql:// localhost:3306/mydb2 – user202822

+0

我更新了问题,添加了带有工件结构的图片 – user202822

+0

WEB-INF内部是否有jdbc驱动程序?你是否在tomcat启动时作为数据源连接? 尝试将jdbc驱动程序jar复制到tomcat的lib目录中,应该像tomcat/lib /那样,如果您将它作为数据源运行,那么tomcat将连接到数据库并在应用程序部署之前创建池。 PS:抱歉不是确切的,只有在工作的tomcat项目 – Tiago