Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 67
1

NumberFormatException при добавлении пользователя с ролью

16.11.2020, 17:12. Показов 405. Ответов 5

Помогите решить проблему. При переходе на страницу добавления и попытке добавления выскакивает такая ошибка:

HTTP Status 500 – Internal Server Error
Type Exception Report

Message For input string: ""

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.NumberFormatException: For input string: ""
java.base/java.lang.NumberFormatException.forInputString(NumberFormatE xception.java:68)
java.base/java.lang.Integer.parseInt(Integer.java:662)
java.base/java.lang.Integer.parseInt(Integer.java:770)
servlet.SaveServlet.doPost(SaveServlet.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilte r.java:53)
filter.CharsetFilter.doFilter(CharsetFilter.java:10)
Note The full stack trace of the root cause is available in the server logs.


SaveServlet:
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
package servlet;
import DAO.UserDAO;
import domain.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/save.jhtml")
public class SaveServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            String id = String.valueOf((Integer.parseInt(req.getParameter("id"))));
            String idRole = String.valueOf(Integer.parseInt(req.getParameter("idRoles")));
            UserDAO dao = new UserDAO();
            User searchUser = dao.selectId(Integer.parseInt(id), Integer.parseInt(idRole));
            if (searchUser != null) {
                req.setAttribute("userEdit", searchUser);
            }
            req.getRequestDispatcher("/WEB-INF/jsp/saveUser.jsp").forward(req, resp);
        } catch (Exception ex) {
            req.getRequestDispatcher("/WEB-INF/jsp/saveUser.jsp").forward(req, resp);
        }
 
    }
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = String.valueOf((Integer.parseInt(req.getParameter("id"))));
        String idRole = String.valueOf(Integer.parseInt(req.getParameter("idRoles")));
        String login = req.getParameter("loginUser");
        String password = req.getParameter("passUser");
        String name = req.getParameter("nameUser");
        String age = String.valueOf(Integer.parseInt(req.getParameter("ageUser")));
        String role = req.getParameter("roleUser");
        UserDAO dao = new UserDAO();
        User searchUser = dao.selectId(Integer.parseInt(id), Integer.parseInt(idRole));
        if (login.equals("") || password.equals("") || name.equals("") || age.equals("") || role.equals("") ||
                (login.equals("") && password.equals("") && name.equals("") && age.equals(" ") && role.equals(""))) {
            req.setAttribute("errors", "Enter your data!");
        }
        if (searchUser == null) {
            dao.insert(login, password, name, Integer.parseInt(age), role, Integer.parseInt(id), Integer.parseInt(idRole));
            req.setAttribute("message", "You have successfully added your data!");
        } else {
            dao.update(Integer.parseInt(id), login, password, name, Integer.parseInt(age), role);
            req.setAttribute("message", "You have successfully edited your data!");
        }
        req.getRequestDispatcher("/WEB-INF/jsp/saveUser.jsp").forward(req, resp);
    }
}
Класс для работы с БД:

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package DAO;
 
import domain.User;
 
import java.sql.*;
import java.util.ArrayList;
 
public class UserDAO extends RoleDAO implements DAO {
    public static String urlDB = "jdbc:postgresql://localhost:5432/web";
    public static String usernameDB = "postgres";
    public static String passwordDB = "1111";
 
    @Override
    public ArrayList<User> select() {
        ArrayList<User> users = new ArrayList<>();
        String sqlSelect = "SELECT users.id, users.login, users.password, users.name, users.age, roles.name_of_role FROM users LEFT JOIN users_roles ON users_roles.usersid = users.id LEFT JOIN roles ON users_roles.rolesid = roles.\"idRole\" ORDER BY id ASC";
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB);
                 PreparedStatement preparedStatement = conn.prepareStatement(sqlSelect)) {
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    int id = resultSet.getInt("id");
                    String login = resultSet.getString("login");
                    String password = resultSet.getString("password");
                    String name = resultSet.getString("name");
                    int age = resultSet.getInt("age");
                    String nameOfRole = resultSet.getString("name_of_role");
                    User user = new User(id, login, password, name, age, nameOfRole);
                    user.setId(id);
                    user.setLogin(login);
                    user.setPassword(password);
                    user.setName(name);
                    user.setAge(age);
                    user.setRoles(selectNameRole(nameOfRole));
                    users.add(user);
                }
            }
        } catch (Exception ex) {
            System.out.println("Connection Failed : " + ex.getMessage());
        }
        return users;
    }
 
    @Override
    public User selectId(int id, int idRole) {
        User user = null;
        String sqlId = "SELECT users.id, users.login, users.password, users.name, users.age, roles.name_of_role FROM users LEFT JOIN users_roles ON users_roles.usersid = users.id LEFT JOIN roles ON users_roles.rolesid = roles.\"idRole\" WHERE users_roles.usersid = ? AND  users_roles.rolesid = ? ";
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB)) {
                try (PreparedStatement preparedStatement = conn.prepareStatement(sqlId)) {
                    preparedStatement.setInt(1, id);
                    preparedStatement.setInt(2, idRole);
                    ResultSet resultSet = preparedStatement.executeQuery();
                    if (resultSet.next()) {
                        id = resultSet.getInt("id");
                        idRole = resultSet.getInt("idRole");
                        String login = resultSet.getString("login");
                        String password = resultSet.getString("password");
                        String name = resultSet.getString("name");
                        int age = resultSet.getInt("age");
                        preparedStatement.setInt(1, id);
                        preparedStatement.setInt(2, idRole);
                        user = new User(id, login, password, name, age, idRole);
                    }
                }
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return user;
    }
 
    @Override
    public User selectUserForLogin(String login, String password) {
        User user = null;
        String sqlId = "SELECT users.login, users.password, users.name, users.age FROM users WHERE login=? AND password=?";
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB)) {
                try (PreparedStatement preparedStatement = conn.prepareStatement(sqlId)) {
                    preparedStatement.setString(1, login);
                    preparedStatement.setString(2, password);
                    ResultSet resultSet = preparedStatement.executeQuery();
                    if (resultSet.next()) {
                        String loginUser = resultSet.getString("login");
                        String passwordUser = resultSet.getString("password");
                        user = new User(loginUser, passwordUser);
                    }
                }
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return user;
    }
 
    @Override
    public int insert(String login, String password, String name, int age, String role, int usersid, int rolesid) {
        String sqlInsert = "INSERT INTO users (login, password, name, age) VALUES (?, ?, ?, ?)" +
                "INSERT INTO users_roles(usersid, rolesid) VALUES (?, ?)";//редактировать для добавления и ролей так же
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB)) {
                try (PreparedStatement preparedStatement = conn.prepareStatement(sqlInsert)) {
                    preparedStatement.setString(1, login);
                    preparedStatement.setString(2, password);
                    preparedStatement.setString(3, name);
                    preparedStatement.setInt(4, age);
                    preparedStatement.setString(5, role);
                    preparedStatement.setInt(6, usersid);
                    preparedStatement.setInt(7, rolesid);
                    return preparedStatement.executeUpdate();
                }
            }
        } catch (Exception ex) {
            System.out.println("Connection Failed : " + ex.getMessage());
        }
        return 0;
    }
 
    @Override
    public int update(int id, String login, String password, String name, int age, String role) {
        String sqlUpdate = "UPDATE users SET login = ?, password = ?, name = ?, age = ? WHERE id = ?";//редактировать для изменения и ролей так же
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB)) {
                try (PreparedStatement preparedStatement = conn.prepareStatement(sqlUpdate)) {
                    preparedStatement.setString(1, login);
                    preparedStatement.setString(2, password);
                    preparedStatement.setString(3, name);
                    preparedStatement.setInt(4, age);
                    preparedStatement.setInt(5, id);
                    return preparedStatement.executeUpdate();
                }
            }
        } catch (Exception ex) {
            System.out.println("Connection Failed : " + ex.getMessage());
        }
        return 0;
    }
 
    @Override
    public int delete(int id) {
        String sqlDelete = "DELETE FROM users WHERE id = ?";
        try {
            Class.forName("org.postgresql.Driver");
            try (Connection conn = DriverManager.getConnection(urlDB, usernameDB, passwordDB)) {
                try (PreparedStatement preparedStatement = conn.prepareStatement(sqlDelete)) {
                    preparedStatement.setInt(1, id);
                    return preparedStatement.executeUpdate();
                }
            }
        } catch (Exception ex) {
            System.out.println("Connection Failed : " + ex.getMessage());
        }
        return 0;
    }
}
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
39
40
41
42
43
44
45
46
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Add and edit user</title>
    <link rel="stylesheet" href="../../css/style.css">
    <script src="../../js/style.js"></script>
</head>
<body>
 
<div class="titleFourDiv">
    <form method="post">
        <div class="login">
            <p class="p">Add and edit user</p>
            <input type="text" class="userInputId" name="id" value='${user.id}'/>
            <input type="text" class="userInputId" name="idRoles" value='${role.idRole}'/>
            <p><label>Login:
                <input type="text" class="userInput" name="loginUser" value='${userEdit.login}'/>
            </label></p>
            <p><label>Password:
                <input type="password" class="userInput" name="passUser" value='${userEdit.password}'/>
            </label></p>
            <p><label>Name:
                <input type="text" class="userInput" name="nameUser" value='${userEdit.name}'/>
            </label></p>
            <p><label>Age:
                <input type="text" class="userInput" name="ageUser" value='${userEdit.age}'/>
            </label></p>
            <p><label>Role:
                <input type="text" class="userInput" name="roleUser" value='${userEdit.role}'/>
            </label></p>
            <c:if test="${not empty errors}">
                <div class="error"><c:out value="Enter all data!"/></div>
            </c:if>
            <c:if test="${not empty message}">
                <div class="message"><c:out value="${message}"/></div>
            </c:if>
            <button class="secondButtonUser" type="submit">Save</button>
            </br>
        </div>
    </form>
    <p class="image"><a href="/userpage.jhtml"><img src='https://img.icons8.com/dotty/50/000000/back.png'
                                      title='Back to list'/></a></p>
</div>
</body>
</html>
Сервлет для вывода пользователей и их ролей:

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
package servlet;
 
import DAO.RoleDAO;
import DAO.UserDAO;
import domain.Role;
import domain.User;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
 
 
@WebServlet("/userpage.jhtml")
public class ListServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        UserDAO dao = new UserDAO();
        RoleDAO roleDAO = new RoleDAO();
        ArrayList<User> users = dao.select();
        req.setAttribute("user", users);
        ArrayList<Role> roles = roleDAO.selectRole();
        req.setAttribute("role", roles);
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/WEB-INF/jsp/userPage.jsp");
        requestDispatcher.forward(req, resp);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2020, 17:12
Ответы с готовыми решениями:

Создание пользователя Базы с ролью
Добрый день! Такая проблема: имеется База данных MS SQL server 2012 и Delphi7. Необходимо из Делфи...

Почему в yii выкидывает из админки пользователя с соответсвующей ролью в allow?
Добрый день, по рецепту Макарова выполнил yiiframework.ru/doc/cookbook/ru/access.rbac.file ...

EntityValidationErrors при добавлении пользователя в базу
Добрый день. Ситуация такая. Был класс, экземпляры которого без проблем добавлялись в базу, но...

При добавлении нового пользователя в БД запись дублируется
Всем привет. Вопрос простой, но я никак не могу с ним совладать. Есть код: $db =...

5
Эксперт Java
3099 / 2583 / 795
Регистрация: 05.07.2013
Сообщений: 12,453
16.11.2020, 18:51 2
Цитата Сообщение от littlefoxjoelle Посмотреть сообщение
java.lang.NumberFormatException: For input string: ""
по-человечески же вроде написано в чем проблема
0
7 / 6 / 2
Регистрация: 04.03.2016
Сообщений: 78
16.11.2020, 18:58 3
Поставьте бряки и продебажте, найдите строку на которой падает и подумайте, почему так происходит.
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 67
16.11.2020, 19:06  [ТС] 4
MaxSta, Я уже так делала. Но не смогла найти ошибку. Поэтому, написала сюда
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,585
16.11.2020, 19:10 5
Цитата Сообщение от littlefoxjoelle Посмотреть сообщение
не смогла найти ошибку.
Java
1
 java.base/java.lang.NumberFormatException.forInputString(NumberFormatE xception.java:68)
Java
1
String age = String.valueOf(Integer.parseInt(req.getParameter("ageUser")));
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 67
16.11.2020, 19:17  [ТС] 6
Цитата Сообщение от littlefoxjoelle Посмотреть сообщение
servlet.SaveServlet.doPost(SaveServlet.java:36)
С возрастом всё нормально пока, а вот дело в id.

Добавлено через 5 минут
Дело в том, что почему-то на место idRole приходит null. Хотя в атрибутах, если вывести просто role, то все данные есть. Но если я пытаюсь вывести таким образом: role.idRole, то ничего не выходит. Вот, в чём проблема.
Я пыталась найти, где всё крашится, ставила точки останова и смотрела в дебаггере. Но не смогла исправить данную проблему.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2020, 19:17

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

При добавлении пользователя в БД для необязательных полей нужно передать NULL, а не ''
Код добавления в БД пользователя: $result_query_insert = $mysqli-&gt;query(&quot;INSERT INTO `users`...

Правила обновления SQL: не работает обновление при добавлении нового пользователя
Форумчане) Проблема одна с обновлением при добавлении нового пользователя)

Кодировка. При добавлении пользователя с именем на русском языке получаю в данных иероглифы.
mysql_connect($host, $user, $pswd) or die (&quot;не могу соедениться с MySQL&quot;);...

NumberFormatException при чтении файла
При чтении файла вылетает NumberFormatException, хотя кроме чисел и знаков переноса строки в файле...

получаю id пользователя выбрав его, но при добавлении статьи в базу, полученный id не добавляется в базу
Выбираю нужного мне пользователя, получив его id, перекидывает на страницу с добавлением статей,...

Работа с ролью
Роль &quot;менеджер рабочее место&quot; Эта роль имеет ограничения на документы по пользователю. Нужно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.