【问题标题】:Displaying a users first name on Welcome page through a servlet JDBC通过 servlet JDBC 在欢迎页面上显示用户名
【发布时间】:2013-06-27 14:17:41
【问题描述】:

我在这里有工作代码,可以从我的用户和位于 oracle 数据库中的用户信息表中提取我需要的所有信息:

try
        {
            conn = DB_Admin.getConnection();
            pstmnt = conn.prepareStatement("SELECT u.username, u.password, ui.user_id, " +
                                            "ui.f_name, ui.l_name, ui.email, ui.dob FROM users u " +
                                            "JOIN user_info ui ON ui.user_id = u.user_id " +
                                            "WHERE u.username = ? AND u.password = ?");
            pstmnt.setString(1, username);
            pstmnt.setString(2, password);
            rs = pstmnt.executeQuery();
            boolean exists = rs.next();

                    ...

我有一个 servlet,我试图在他/她登录后显示用户的名字:

String username = request.getParameter("username").toString();
        String password = request.getParameter("password").toString();

        User user1 = new User(username, password);
        User user2 = new User(username,password, user1.getF_name(), user1.getL_name(), user1.getEmail(), user1.getDob());

        //HttpSession session = request.getSession();
        //session.setAttribute("f_name", user1.getF_name());

        boolean valid = ud.login(username, password);
        try{
            if(!valid)
            {
            //  request.setAttribute("var", companies);
                response.sendRedirect("login.html");
                logger.warn("Login Servlet : " + username + " has failed at logging in");
            }
            else
            {
                //response.sendRedirect("index.jsp");
                request.setAttribute("f_name",user2.getF_name());
                RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
                rd.forward(request, response);
                logger.info("Login Servlet : " + username + " has logged in");
            }
        }
        catch (Exception ex) { out.println(ex.getMessage()); } 

在我的 User 类中,我有所有字段的 getter 和 setter:“f_name、email 等”

我知道这段代码写错了,我的欢迎页面上不断出现“空”值。

【问题讨论】:

  • 您能否显示您在页面中获得null 值的位置?顺便说一句,在对用户进行身份验证和验证后,其基本数据(用户名、偏好等)应该保存在 session 中,而不是保存为请求属性。

标签: java servlets jdbc login


【解决方案1】:

首先你应该能够以这种方式从执行的查询中获取你需要的数据

String username = null;
while(rs.next){
username = rs.getString(1);
}

rs.getString 方法可以按照您在执行查询中的顺序通过列索引来调用,或者您可以简单地将数字放在原始数据库的列名中

for example:

username = rs.getString("username");

这里你有在执行查询中返回的用户名,你可以很容易地在 jsp 中打印它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2015-08-15
    相关资源
    最近更新 更多