2014-08-28 2 views
0

Я новичок в JAVA и веб-сервисах.Сервер REST подключается к данным databse и извлекает данные

Я хочу вызвать метод в приложении REST client JAVA Desktop. Клиент находится в среде IDE NetBeans, и он должен быть чем-то вроде структуры, где он вызывает сервер REST (динамический веб-проект), сервер находится в среде Eclipse IDE, это тоже что-то вроде структуры - простое изменение по мере необходимости. Сервер должен подключиться к базе данных MS SQL для получения данных и передачи этих данных клиенту и отображения этих значений в соответствующем текстовом поле в приложении клиентского рабочего стола. Код клиента REST для получения значения JTextField.

String id = this.jTextField1.getText(); 
ObjectMapper mapper = new ObjectMapper(); 
     try { 
       mapper.writerWithDefaultPrettyPrinter().writeValueAsString(id); 
     } catch (JsonProcessingException ex) { 
      Logger.getLogger(SearchOne_1.class.getName()).log(Level.SEVERE, null, ex); 
     } 

Когда я нажимаю кнопку, я хочу передать это значение текстового поля серверу REST. Эта часть кода еще не реализована и все еще находит способ сделать это.

Код сервера REST выглядит следующим образом. Это SQLtask.java. Это для выбранного запроса.

public SQLTasks(String dbSource) { 
    super(dbSource); 
} 
public void SQLSelect(String SQL_SELECT) throws SQLException { 

    try{ 
    stmt = conn.createStatement(); //connection created in MDBConnection class 
    rs = stmt.executeQuery(SQL_SELECT); 
    } 
    catch(SQLException sqEx){ 
     System.out.println("SQL_EX "+sqEx); 
     System.out.println("SQL_EX SELECT "+SQL_SELECT); 
     throw new SQLException(); 

    }catch(Exception sqEx){ 
     System.out.println("EXC "+sqEx); 
     System.out.println("EXC SELECT "+SQL_SELECT); 
     throw new SQLException(); 
    } 
} 

Этот код предназначен для DBAccess.java

public Employee getEmployeeDataByEPFNo(String dataSource,String EPFNo){ 
    SQLTasks st1 = new SQLTasks(dataSource); 
    Employee employee=new Employee(); 
    try { 
     st1.SQLSelect("SELECT * FROM Employee WHERE id="+EPFNo); 
      ResultSet rs1 = st1.rs; 
      while (rs1.next()) { 


       employee.setEpfno(rs1.getString("EPFNo")); 
       employee.setEfname(rs1.getString("fName")); 
       employee.setElname(rs1.getString("lName")); 
       employee.setDesignation(rs1.getString("designation")); 
       employee.setNic(rs1.getString("NIC")); 
       employee.setAddress(rs1.getString("Address")); 
       employee.setArrival(rs1.getString("eArrivalDate")); 
       employee.setDob(rs1.getString("DOB")); 

      } 
    } catch (SQLException e) { 

     e.printStackTrace(); 
    }catch (Exception e) { 

     e.printStackTrace(); 
    } 
return employee; 
} 

это RESTServer.java

@GET 
@Path("/dbAccess/getDBValEmpByEPF/{EPFNo}") 
@Produces(MediaType.APPLICATION_JSON) 

public Employee getDBValEmpByEPF(@PathParam("EPFNo") String EPFNo) { 
    Employee e= new Employee(); 
    DBAccess dbAcc=new DBAccess(); 
    e= dbAcc.getEmployeeDataByEPFNo("jdbc/db_sample_mssql","EPFNo");//call getEmployeeDataByEPFNo() which is inside DBAccess class 
    return e; 


    } 

Вместо Мануалы значение на входе, как "500", что я хочу передать это значение при получении от клиента. Является ли это возможным ?

+1

Почему бы не добавить параметр к URL-адресу? – 2014-08-28 18:47:29

+0

Я потерял первые предложения по вашему вопросу. Что означает клиент в среде Netbeans IDE? На что ссылается сервер в Eclipse IDE? – mostruash

+0

Клиент REST - это обычное приложение JAVA (Файл -> Новый проект -> java -> приложение java), в котором есть GUI. Сервер REST находится в Eclipse. Это динамичный веб-проект. Я хочу общаться между этими двумя в соответствии с RESTful architechture –

ответ

0

Вы использовали @PathParam для EPFNo в службе отдыха, так, чтобы получить это значение, которое нужно передать значение EPFNo в вашем запросе URL просто как упоминалось в ниже

http://localhost:8080/TestRestWebService/appPath/dbAccess/getDBValEmpByEPF/3245 

Здесь İŞ значение EPFNo, которое мы передали серверу с клиентской стороны и внутри метода getDBValEmpByEPF(), будет доступно.

@GET 
@Path("/dbAccess/getDBValEmpByEPF/{EPFNo}") 
public Response getDBValEmpByEPF(@PathParam("EPFNo") String EPFNo) { 
    System.out.println("EPFNo is="+EPFNo);//it will print EPFNo is=3245 
     ......} 

Пример код клиента

try { 
     String EPFNo="234";//JTextField field value 
     URL url = new URL(
       "http://localhost:8080/TestRestWebService/appPath/dbAccess/getDBValEmpByEPF/"+EPFNo); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("Accept", "application/json"); 

     if (conn.getResponseCode() != 200) { 
      throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); 
     } 
     BufferedReader br = new BufferedReader(new InputStreamReader(
       (conn.getInputStream()))); 
     String output; 
     System.out.println("Output from Server .... \n"); 
     while ((output = br.readLine()) != null) { 
      System.out.println(output); 
     } 
     conn.disconnect(); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Надеется, что это поможет.

Смежные вопросы