Как я могу вызвать параметризованный метод класса Java в метод Doget сервлета - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть класс java, где у меня есть метод, который возвращает мне json, я хочу вызвать этот метод в свой метод doGet сервлета, чтобы я мог сделать вызов AJAX позже

но при вызове метода класса java ( Outlet.Outlet ) он запрашивает параметр для передачи, я не знаю, что там передать пожалуйста, посмотрите мой код

это мой класс Java

public class Outlet {
static Connection con = null;
static Statement statement = null;
ResultSet resultSet = null;

public static String Outlet(String idDB) throws ClassNotFoundException, SQLException {
    List<String> list = new ArrayList<String>();
    con = DBConnection.createConnection();
    statement = con.createStatement();

    String sql="select CUSTOMERDESCRIPTOR as OUTLETNAME from ecustomer where CUSTOMERIDENTIFIER in(select CUSTOMERIDENTIFIER from mt_distributrol where mt_distributr_vcdistributrcode = '"+idDB+"')";

  System.out.println("iddb  :"+idDB);
    try {

        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()) {
            list.add(resultSet.getString("OUTLETNAME"));

        }

    } catch (SQLException e) {
        e.printStackTrace();
    }
    String json = new Gson().toJson(list);
    System.out.println("Json Outlet :"+json);
    return json;
}

}

В приведенном выше Java-классе я возвращаю Json, и я хочу вызвать этот метод в свой сервлет doGost

Мой doGet

    try {
        String json = Outlet.Outlet();  //what should i pass here as a parameter
        response.setContentType("application/json");
        response.getWriter().write(json);
        System.out.println("dheeraj"+json);
    }
    catch (Exception e) {

        e.printStackTrace();
    }

}

если я передаю idDB, то выдает ошибку. Пожалуйста, кто-нибудь, имеющий какие-либо знания, поможет мне

1 Ответ

0 голосов
/ 20 ноября 2018

Пожалуйста, прочитайте OWASP - SQL-инъекция и узнайте о PreparedStatements

Во-первых, методы не должны начинаться с заглавной буквы, поэтому вы можете назвать его как Outlet.findById, а не Outlet.Outlet (метод не должен совпадать с классом; читать его очень сложно), и вы можно получить параметры из запроса

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String id = request.getParameter("id");
    String s = Outlet.findById(id);

При вызове API вы добавляете ?id=value

Или вы можете получить окончательную часть пути из request, предполагая, что ваш API настроен как /path/ids/value - См. В чем разница между методами getRequestURI и getPathInfo в HttpServletRequest? для параметров с этим

Перед этим, конечно же, вам следует дважды проверить, что выполняемый вами запрос действительно возвращает данные при непосредственном обращении к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...