2016-05-02 13 views
0

blobとしてmysql dbに入るプロファイルイメージを登録しようとしています.I RegisterServlet1があります。 java、UsersDAO.java、ConnectionManager.java、registration.jspのほかにUsers.javaがあります。私のMySQLのDBのスクリーンショットが。私はRegisterServlet1.javaのための解析ファイルのエラーを取得しています。具体的にはNetBeansのはDAOクラスのメソッドを呼び出すことができません - スタティックコンテキストから非スタティックメソッドinsertを参照することはできません

'non static method insert(Users) cannot be referenced from a static context. 
Unreported exception ClassNotFound Exception must be caught or declared to be thrown' 

はそれが意志として添付のスクリーンショットを参照してくださいことを私にヒントを与える「テーブル」のユーザーのために取り付けられています。 NetBeansは、私が取得していますヒントを示している。 は、誰かが私が私がエラーを訂正することができるようになります方法を知っているとMySQL DBへ行くために、フォームからユーザーの詳細を取得させることができますか?

package com.nszhost.nsztrial; 


import java.io.IOException; 
import java.util.Scanner; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.MultipartConfig; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.Part; 

@MultipartConfig 
public class RegisterServlet1 extends HttpServlet {   

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    Part fname1= request.getPart("fname"); 
    Part gender1= request.getPart("gender"); 
    Part email1= request.getPart("email"); 
    Part userid1= request.getPart("userid"); 
    Part password1= request.getPart("password"); 
    Part profile_img1= request.getPart("profile_img"); 

    Scanner scanner1 = new Scanner(fname1.getInputStream()); 
    String fname2= scanner1.nextLine(); 
    Scanner scanner2 = new Scanner(gender1.getInputStream()); 
    String gender2= scanner2.nextLine(); 
    Scanner scanner3 = new Scanner(email1.getInputStream()); 
    String email2= scanner3.nextLine(); 
    Scanner scanner4 = new Scanner(userid1.getInputStream()); 
    String userid2= scanner4.nextLine(); 
    Scanner scanner5 = new Scanner(password1.getInputStream()); 
    String password2= scanner5.nextLine(); 






    Users user=new Users(); 

    user.setEmail(email2); 
    user.setFname(fname2); 
    user.setGender(gender2); 
    user.setPassword(password2); 
    user.setUserid(userid2); 
    user.setProfile_img((Part) profile_img1); 



     UsersDAO.insert(user); 





} 



} 

package com.nszhost.nsztrial; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 


public class UsersDAO { 

private static Connection conn = ConnectionManager.getInstance().getConnection(); 
public static void insert(Users user) throws ClassNotFoundException, SQLException, IOException{ 
    Class.forName("com.mysql.jdbc.Driver"); 

PreparedStatement ps; 
ps = conn.prepareStatement("insert into users (fname,gender,email,userid,password,profile_img) values(?,?,?,?,?,?)"); 

ps.setString(1, user.getFname()); 
ps.setString(2, user.getGender()); 
ps.setString(3, user.getEmail()); 
ps.setString(4, user.getUserid()); 
ps.setString(5, user.getPassword()); 


     // size must be converted to int otherwise it results in error 
ps.setBinaryStream(6, user.getProfile_img().getInputStream(), (int) user.getProfile_img().getSize()); 
ps.executeUpdate(); 
conn.commit(); 


    } 
} 

package com.nszhost.nsztrial; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

public class ConnectionManager { 

     private static ConnectionManager instance = null; 

     private final String USERNAME =  "root"; 
     private final String PASSWORD =  "****"; 
     private final String CONN_STRING = "jdbc:mysql://localhost/jdbc"; 

     private Connection conn = null; 

     private ConnectionManager(){ 
     } 

     public static ConnectionManager getInstance(){ 
      if(instance == null){ 
       instance = new ConnectionManager(); 
      } 
      return instance; 
     } 
     private boolean openConnection(){ 
      try { 
       conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD); 
      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return true; 
     } 
     public Connection getConnection(){ 
       if(conn == null){ 
        if(openConnection()){ 
          System.out.println("Connection Opened"); 
          return conn; 
        }else{ 
         return null; 
        } 
       } 
       return conn; 
     } 
     public void close(){ 
      System.out.println("Closing Connection"); 
      try { 
       conn.close(); 
      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      conn = null; 
     } 
} 

package com.nszhost.nsztrial; 

import javax.servlet.http.Part; 

public class Users { 


private int id; 
private String fname; 
private String gender; 
private String email; 
private String userid;  
private String password; 
private Part profile_img; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getFname() { 
    return fname; 
} 

public void setFname(String fname) { 
    this.fname = fname; 
} 

public String getGender() { 
    return gender; 
} 

public void setGender(String gender) { 
    this.gender = gender; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getUserid() { 
    return userid; 
} 

public void setUserid(String userid) { 
    this.userid = userid; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 



public Part getProfile_img() { 
    return profile_img; 
} 

public void setProfile_img(Part profile_img) { 
    this.profile_img = (Part) profile_img; 
} 



} 

netbeans hint screenshot mysql table 'users'

+0

https://github.com/laxmon/nsztrial.gitでGit repoを参照してください。 –

答えて

1

私は、このチュートリアルのいくつかの種類であると仮定し、私はあなたのコード内の別の設計上の欠陥を見落とすでしょう。

あなたのメソッドとしてinsertがすでにstaticであることから、NetBeansはそのヒントを取り除くためにプロジェクトを再コンパイルする必要があると思います。

ClassNotFoundExceptionについては、 あなたの方法はpublic static void insert(Users user) throws ClassNotFoundException [...]と宣言しました。 ClassNotFoundExeptionはチェックされた例外であるため、例外を再現するか、例外をキャッチする必要があります。 alt + enter(NetBeansがスクリーンショットに示唆するように)を押すと、この2つのオプションが表示されます。

チェックされているチェックされていない例外について確信が持てない場合は、それらがJava言語の中核概念であるため、少し読んでみることをお勧めします。 Thisは素敵で短い説明のようです。

関連する問題