хранение данных через переменные сеанса - PullRequest
0 голосов
/ 22 апреля 2019

мое приложение позволяет пользователю выполнять некоторые действия Я хочу запомнить его имя при подключении, затем вставить его в базу данных (чтобы узнать, кто совершил действие), не заставляя его писать

Вот код моего сервлета

String name = request.getParameter("name");
User userName= new User(name);
request.getSession().setAttribute("user_name", userName);
response.sendRedirect("next.jsp");

1 Ответ

0 голосов
/ 22 апреля 2019

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

Пример: Это моя база данных:

Таблица пользователя

|id |name      |password|
|01 |John due  |xxxxxxx |

Таблица товара

|id |name      |price   |
|07 |coca-cola |03      |

таблица транзакций

|id |user_id | product_id |

и в своем коде вы пишете

 Connection conn = DriverManager.getConnection(url,user,password);

User user = request.getSession().getAttribute(ATT_USER);
Product product = request.getSession().getAttribute(ATT_PRODUCT);

int userId = user.getId();
int productId = product.getId();

String query = "insert into transaction(user_id,product_id) values (?,?)";

PreparedStatement prep = conn.preparestatement(query);
        try {
            prep = conn.prepareStatement(query);

            prep.setInt(1,userId);
            prep.setInt(2,productId);

            prep.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }

тогда вы будете иметь в своей базе данных

|id |user_id | product_id |
|01 |01      |07          |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...