#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 ?выделить = драйверы