通过会话变量存储数据

时间:2019-04-21 22:39:04

标签: java mysql session java-ee

我的应用程序允许用户执行某些操作 我想在他连接时记住他的名字,然后将其插入数据库(以便知道是谁做的),而不必强迫他写

这是我的servlet的代码

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

1 个答案:

答案 0 :(得分:0)

由于您已经在当前会话中存储了该属性,因此可以在所需的任何servlet中调用该属性,并将其存储在使用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          |