Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 39

Java.lang.NullPointerException от сервлета

19.08.2015, 12:05. Показов 2032. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Целью является вывести данные из бд на jsp страницу при помощи сервлета. Вроде все сделал согласно структуре MVC, но сервлет падает с java.lang.NullPointerException. Подскажите, в чем ошибка?
Java
1
2
3
4
5
6
7
8
INFO: Server startup in 536 ms
авг 19, 2015 11:31:08 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [base] in context with path [/russvet] threw exception
java.lang.NullPointerException
    at russvet.BaseServlet.doGet(BaseServlet.java:25)
 
25 строка BaseServlet.java:
List personnes = basecontact.getPersonnes();
Вот листинги кода:
BaseServlet.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package russvet;
 
import java.io.IOException;
import java.util.List;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class BaseServlet extends HttpServlet {
    
    private BaseContact basecontact;
    private BaseBean basebean;
    
    public void init(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            
            basecontact = new BaseContact();
            basebean = new BaseBean();
        
    }
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    
            List personnes = basecontact.getPersonnes();
        
            
            basebean.setPersonnes(personnes);
            HttpSession session = request.getSession();
            session.setAttribute("userbase", basebean); 
     
            RequestDispatcher rDispatch = getServletContext().getRequestDispatcher("/index.jsp");
            rDispatch.forward(request, response);
    }
}


BaseContact.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package russvet;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
 
 
public class BaseContact {
    
    public static void main(String[] args) {
        BaseContact basecontact = new BaseContact();
        List<Personne> l = basecontact.getPersonnes();
    }
    
    public BaseContact() {
    }
 
    public List<Personne> getPersonnes() {
            Personne personne = null;
            List<Personne> personnes = new ArrayList<Personne>();
            try {
     
                Class.forName("com.mysql.jdbc.Driver");
     
                String url = "jdbc:mysql://127.0.0.1:3306/article";
                Connection con = DriverManager.getConnection(url, "root", "");
                Statement statement = con.createStatement();
     
                String requete1 = "SELECT * FROM users";
     
                System.out.println(requete1);
                ResultSet resultset = statement.executeQuery(requete1);
     
                while (resultset.next()) {
                    personne = new Personne();
                    personne.setName(resultset.getString("name"));
                    personne.setLast_name(resultset.getString("last_name"));
                    //personne.setAge(resultset.getString("age"));
                    personnes.add(personne);
                    /*for (int i = 0; i < personnes.size(); i++) {
                        System.out.println(personnes.get(i).getName()+ " " + personnes.get(i).getLast_name());
                    }*/
                }
                con.close();
     
            }
 
            catch (ClassNotFoundException e) {
                System.err.println("Where is JDBS driver?" + e);
            } 
            catch (SQLException sqle) {
                System.err.print(sqle);
            }
            return personnes;
    }
}


Personne.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package russvet;
 
public class Personne {
    private int user_id;
    private String name;
    private String last_name;
    private int age;
    
    public int getUser_id() {
        return user_id;
    }
    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }
    
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    
    public String getLast_name() {
        return last_name;
    }
    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }
    
    
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}


BaseBean.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package russvet;
 
import java.util.List;
 
public class BaseBean {
     
    List<Personne> personnes = null;
    
    public void setPersonnes(List<Personne> personnes){
        this.personnes=personnes;    
        }
        
    public List<Personne> getPersonnes() {
        return personnes;
        }
    
    }


index.jsp
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page import="java.util.*"%>
<%@ page import="russvet.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt"%>
 
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test Russkiy Svet</title>
        <style type="text/css">
            body,table,hr {
                color: black;
                background: silver;
                font-family: Verdana, sans-serif;
                font-size: x-small;
            }
        </style>
    </head>
    <body>
        <center>
            <table border=1>
                <tr>
                    <th>Name</th>
                    <th>Last Name</th>
                    <th>Age</th>
                </tr>
            </table>
        </CENTER>
        <P><jsp:useBean id="userbase" scope="session" class="russvet.BaseBean" /> 
     
        <%List<Personne> personnes = userbase.getPersonnes();%>
        <c-rt:forEach var="person" items="<%= personnes %>">
                <tr>
                    <td width="200"><%=personne.getName()%></td>
                </tr>
        </c-rt:forEach>
</html>


web.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 
 
<web-app> 
    
    <servlet> 
        <servlet-name>base</servlet-name> 
        <servlet-class>russvet.BaseServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>base</servlet-name> 
        <url-pattern>/base</url-pattern> 
    </servlet-mapping>
</web-app>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2015, 12:05
Ответы с готовыми решениями:

java.lang.NullPointerException
Сегодня начал пробовать писать на Java. столкнулся с ошибкой. Создал 2 файла fibonachi.java и MassivClass.java Вот код первого: ...

Ошибка java.lang.NullPointerException при добавлении записи в базу данных
Здравствуйте! Подскажите, пожалуйста, почему 15-ая строка возвращает нулевое значание? Что не так? Соединение находит, доходит до 15...

JavaFx+Hibernate+Spring "don't inject bean Caused by: java.lang.NullPointerException"
Здравствуйте. Очень нужна Ваша помощь. Сделал конфигурацию. Если запускать с главного класса(начала работы приложения), то бин создаёться и...

6
 Аватар для bazJaz
36 / 33 / 21
Регистрация: 11.07.2014
Сообщений: 390
19.08.2015, 12:24
возможно надо писать
Java
1
List<Personne> personnes = basecontact.getPersonnes();
0
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 39
19.08.2015, 12:42  [ТС]
bazJaz, изменил метод init()
Java
1
 public void init() throws ServletException{
так все компилится без ошибок, теперь пытаюсь на jsp с помощью jstl вывести хоть что-то - не выходит
Java
1
2
3
4
5
6
7
<jsp:useBean id="userbase" scope="session" class="russvet.BaseBean" />
        
        <c:forEach var="person" items="${userbase.getPersonnes()}">
            <tr>
                <td width="200"><c:out value="${person}"/></td>
            </tr>
        </c:forEach>
0
 Аватар для bazJaz
36 / 33 / 21
Регистрация: 11.07.2014
Сообщений: 390
19.08.2015, 13:02
Цитата Сообщение от ryadovoy Посмотреть сообщение
так все компилится без ошибок
потому что ошибки падают сюда
Цитата Сообщение от ryadovoy Посмотреть сообщение
throws ServletException{
0
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 39
19.08.2015, 14:09  [ТС]
bazJaz, изменил на
Java
1
List<Personne> personnes = basecontact.getPersonnes();
по-моему все так же. Нагавнокодил на index.jsp, теперь в таблице создается 6 пустых строк, что соответствует 6 непустым записям в бд.
Java
1
2
3
4
5
6
7
8
<% List personnes = userbase.getPersonnes();
                    for (Iterator i = personnes.iterator(); i.hasNext();) {
                            Personne personne = (Personne) i.next(); %>
                    <tr>
                        <td width="200"><% personne.getLast_name();%></td>
                    </tr>
                    
                    <%}%>
Добавлено через 53 минуты
bazJaz, EL был отключен на странице, установил isELIgnored="false" и данные успешно вывелись!
Сейчас у меня на странице показываются данные из конкретной таблицы, а как сделать выбор таблиц и при нажатии на кнопку "показать" показывать данные?
0
 Аватар для bazJaz
36 / 33 / 21
Регистрация: 11.07.2014
Сообщений: 390
19.08.2015, 17:41
Цитата Сообщение от ryadovoy Посмотреть сообщение
а как сделать выбор таблиц и при нажатии на кнопку "показать" показывать данные
ну так же, у вас данные показываются по ссылке, для другой таблицы делайте по другой ссылке, если хотите на одной странице все делать подключайте модули js
0
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 39
19.08.2015, 19:06  [ТС]
bazJaz, хочу открыть index.jsp, где будет drop down menu с выбором таблиц, я выбираю таблицу, жму показать и попадаю на response.jsp где данные из бд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2015, 19:06
Помогаю со студенческими работами здесь

Exception in thread "main" java.lang.NullPointerException at JMS.JMSClient.main(JMSClient.java:15)
Всем привет, ребят тут такое дело....уже сума схожу. Изучаю jms, хочу добиться соединения к ConnectionFactory. Снизу приведена...

Аутентификация с сервлета, NullPointerException
При попытке проверить подлинность введенных данных выбрасывает: java.lang.NullPointerException DAO.UserDAO.searchID(UserDAO.java:19) ...

Maven java.lang.NoClassDefFoundError
Доброго времени суток. Второй день мучаюсь, подскажите что поправить. Программа считает стоимость перевозки, данные берет из mysql, в...

Hibernate java.lang.StringIndexOutOfBoundsException
HibernateUtil package util; import org.hibernate.SessionFactory; import...

Ошибка java.lang.ArrayIndexOutOfBoundsException: -1
Программа представляет собой систему работы с документами(Web-приложение). В браузере, при переходе по гиперссылке, выдает следующее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru