OnClick of Servlet> Необходимо извлечь данные конкретного человека из базы данных и отобразить их на JSP - PullRequest
0 голосов
/ 01 мая 2020

Java -Код Здесь у меня есть 8 подписчиков в моей базе данных, и он был отображен во внешнем интерфейсе в виде таблицы (столбцы - имя пользователя, тип подписчика, дата, срок действия до). Нажмите на имя пользователя подписчика> оно имеет чтобы получить это конкретное имя и его действительность детали. Это должно быть сделано с помощью JAVA. Здесь я использовал счетчик сервлетов, поэтому при каждом щелчке счетчик увеличивался, и счетчик передавался в качестве параметра моему классу моделей, который принимает параметр count и данные из базы данных хранятся в ArrayList. Используя метод ArrayList getInt, Count был передан в это. Приложение работает отлично! но когда приложение достигает большего количества посетителей и число сервлетов не инициализируется обратно в hitCount в ноль. Как получить данные динамически в java? и что я могу улучшить в этом коде, чтобы получить правильный результат!

ServletCounter

private int hitCount; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session=request.getSession();
        hitCount++
        try {
            Model m=new Model();

            System.out.println("Entering getstatement method...");
            String NAME=m.getStatement(hitCount);

                session.setAttribute("NAME", NAME);
                response.sendRedirect("ManageAccount.jsp");
                System.out.println(NAME);
            }


        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }

Класс модели

public class Model{

public String getStatement(int hitCount) throws Exception 

    {

       System.out.println("Inside getStatement..");
        pst = conn
                .prepareStatement("SELECT user FROM trillup.subscribers");
       ArrayList ar=new ArrayList();

        rs = pst.executeQuery();


        ar.add("");
        while(rs.next()==true) 
        {
           System.out.println("Inside while loop");
            ar.add(rs.getString("user"));
        }

            System.out.println(ar);

        hitCount++;
        String NAME=(String) ar.get(hitCount);
        return NAME;



    }  
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Если я правильно понимаю ваш вопрос, вы хотите поддерживать увеличение счетчика посещений каждый раз, когда поступает запрос на подписчиков.

Не хранить счет в основной памяти, если jvm cra sh? Вы потеряете данные, поэтому держите этот счетчик на уровне таблицы.

Редактировать - ваш счетчик будет повторно инициализирован для любого значения динамического c (возможно, считанного из некоторой конфигурации) и логики c повторно инициализированы в ноль в таблице.

А также попробуйте четко определить класс модели.

Class Model{
Private List<Subscriber> subscribers;
// getter setter
}

class Subscriber {
Long hitcount ;
//Rest attributes

}
0 голосов
/ 01 мая 2020

Вы пытались инициализировать hitCount = 0 перед методом DoGet? Взгляните на руководство по библиотеке sql JSTL. Это очень интересно и легко использовать для получения данных. Не нуждается в овладении структурами данных

...