Проблемы с отображением информации о JSP из сервлета

#java #html #jsp #servlets #cassandra

#java #HTML #jsp #сервлеты #cassandra

Вопрос:

У меня возникли проблемы с назначением uni, когда я пытаюсь отобразить данные из базы данных cassandra в JSP через сервлет. По сути, я получаю исключение с нулевым указателем, когда пытаюсь использовать методы get в классе, хранящем информацию пользователя для страницы профиля.

Приведенный ниже код является частью JSP, которая запрашивает у сервлета отправку объекта, содержащего данные текущего пользователя. При просмотре в отладчике кажется, что он получает имя пользователя без каких-либо проблем, но запрос сведений профиля возвращает пустой объект, тогда как он должен быть заполнен информацией из базы данных.

  <%
        String Username=null;

        LoggedIn lg = (LoggedIn) session.getAttribute("LoggedIn");
        Username = lg.getUsername();

        ProfileDetails pd= new ProfileDetails();
        pd = (ProfileDetails) request.getAttribute("Profile");


        if (pd!=null)
        {
        String forename= pd.getForename();
        String surname=pd.getSurname();
        String email=pd.getEmail();


        %>
  

Следующий сегмент кода — это метод в сервлете, который вызывает метод, который возвращает объект, заполненный данными пользователя.

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
  //  processRequest(request, response);
    HttpSession session=request.getSession();

     LoggedIn lg = (LoggedIn)session.getAttribute("LoggedIn");
    String username=lg.getUsername();

    User us = new User();
    us.setCluster(cluster);
    ProfileDetails pd= new ProfileDetails();

    pd = us.GetUserDetails(pd, username);
    request.setAttribute("Profile", pd);

    RequestDispatcher rd = request.getRequestDispatcher("Profile.jsp");
    rd.forward(request, response);

}
  

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

Если кто-то действительно хочет помочь, вот ссылка на мой проект для клонирования на GitHub https://github.com/BrodieRoss/Instagrim.git

P.s. извините, если какое-либо из моих объяснений здесь звучит немного как бессмыслица, я довольно новичок в веб-разработке.

Ответ №1:

Вам нужно использовать более MVC-версию вашего веб-приложения. Я видел, что вы написали несколько методов получения (voids), но будет лучше, если вы напишете и некоторые методы установки для этого класса.

Тогда вам не нужно пересылать сервлет на ваш jsp, а перенаправлять его с помощью:

 HttpServletResponse.sendRedirect(String Location)
  

или

 HttpServletResponse.sendRedirect("/your/new/location.jsp")
  

Перед перенаправлением вы должны установить нужные атрибуты для этого объекта. Для доступа к этим атрибутам вы используете те же переменные, которые вы используете в классе. Для отображения их в файле jsp вы должны использовать jstl lib. Подробнее здесь:
https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

Этот учебник может помочь вам: https://docs.oracle.com/cd/E15919_01/wlp.1032/e14254/developuserprofiles.htm

Комментарии:

1. Скажите, нужна ли вам дополнительная помощь в написании Java-кода.

Ответ №2:

Пользователь us = новый пользователь (); Я полагаю, относится к «кластеру» информации, которая является частью экземпляра сервера?, of Я не вижу объявленной переменной или вызова присваивания какой-либо соответствующей формы для самого «кластера», хотя / и тоже (и т. Д.) Я бы сказал также, что «база данных» (как вы сказали / написали) означает «конфигурация сервера, на котором выполняется информация об экземпляре и переменные серверной среды, глобальные переменные и т. Д.» сервера Java J2EE в этом не имеет дополнительно настроенного набора «подключений» к другой серверной программе (например, MySQL Potgre …), требующей связанных драйверов Java и пулов соединений.

Удивительно, что она скомпилирована, однако что-то может быть «статической» переменной и требует приведения к нестатическому контексту для передачи в метод или переменную. Можете ли вы теперь просмотреть это лучше?

Информацию было бы лучше передавать через компоненты JSP с некоторым состоянием (просто мысль) Интеграции Java и Java-совместимых драйверов для «Cassandra» (экземпляр интерфейса драйвера и поток аналогичны MySQL, запрашивающим и подключающим системы драйверов)… http://cassandra.apache.org/doc/latest/getting_started/drivers.html ?выделить = драйверы