You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已有DB.java、Servlet与JSP页面,如何在JSP欢迎语旁显示数据库用户名?

如何在JSP欢迎页展示从数据库获取的用户名?

看起来你已经完成了数据库查询和Servlet的逻辑,但还差关键一步:把查询到的用户数据传递到JSP页面并展示。咱们一步步来解决:

步骤1:修改Servlet,传递用户对象到JSP

你的Servlet已经能成功查询到用户,但没有把user对象传递给JSP页面。需要把用户对象存入请求域(如果只是当前页面展示用请求域就够了,要是需要跨页面保留可以用会话域),然后转发到欢迎页。修改后的Servlet代码如下:

if(op.equals("SIGNIN")){
    User user = flowersDB.searchUser(uname , uemail,upassword);
    if(user == null){
        msg = "notfound";
        System.out.println("user="+uemail+"is not found");
        user = new User();
    } else{
        msg = "found";
        System.out.println("user="+uemail+"is found");
    }
    // 新增:将用户对象存入请求域,供JSP获取
    request.setAttribute("currentUser", user);
    // 转发到欢迎页JSP,请确保这里的路径和你的实际文件路径一致
    request.getRequestDispatcher("/welcome.jsp").forward(request, response);
}

步骤2:修改JSP页面,展示用户名

现在JSP可以通过EL表达式(推荐,比脚本更简洁优雅)来获取请求域里的用户对象,取出用户名展示。修改后的欢迎页代码:

<h2>welcome ${currentUser.uname}!</h2><br><br>

这里要注意你的User类需要遵循JavaBean规范,也就是要有getUname()这个getter方法,EL表达式才能正确识别。如果想兼容老写法,也可以用JSP脚本的方式:

<h2>welcome 
    <% 
        User user = (User) request.getAttribute("currentUser");
        if(user != null && user.getUname() != null){
            out.print(user.getUname());
        }
    %>!
</h2><br><br>

额外重要提醒

顺便说一句,你当前db.java里的SQL拼接写法存在严重的SQL注入风险,而且还能看到语法错误(比如upassword"+upassword少了等号)。建议改用PreparedStatement做参数化查询,既安全又能避免拼接错误,示例如下:

String sql = "select * from user where uname=? and uemail=? and upassword=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, uname);
pstmt.setString(2, uemail);
// 如果upassword是数字类型就用setInt,字符串类型用setString
pstmt.setString(3, upassword);
ResultSet result = pstmt.executeQuery();

内容的提问来源于stack exchange,提问作者reem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:23:16