将Servlet中的ResultSet显示到Jsp页面

Servlet从数据库中拿到结果以后,

对用户来说,

他们并不关心你怎么拿的,

恰恰最重要的是,

他们要看到信息展示在网页上。

那这个该怎么实现?

。。。。。。

言归正传:

拿到数据以后,想要把数据展示到Jsp页面上,这样办:

跳转 (转发和重定看大佬文章,清晰又明白 转发和重定向的区别和使用

关键点:

 

重定向的特点

  1. 地址栏:显示新的地址
  2. 请求次数:2次
  3. 根目录:http://localhost:8080/ 没有项目的名字
  4. 请求域中的数据会丢失,因为是2次请求

重定向使用哪个方法?[服务器回应给浏览器的信息,所以是response.]

response.sendRedirect("/pages/loginsuccess.jsp");

转发的特点

  1. 地址栏不发生变化,显示的是上一个页面的地址
  2. 请求次数:只有1次请求
  3. 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
  4. 请求域中数据不会丢失

转发使用哪个方法?[转发是由Servlet直接”原封不动“的交给其他Servlet来处理,所以请求request.]

request.getRequestDispatcher("/地址").forward(request, response);

 

由于我们需要把查询到的数据发送到Jsp,所以我们要在这个跳转的过程中,保证数据不会丢失,所以我们用转发的方式(重定向因为是二次请求,所以会丢失获取到的数据)。

现在我们确定了第一个跳转问题:那就是转发方式。

第二个问题是,我们怎么把ResultSet传送到Jsp并进行"遍历"呢?

。。。

这里省略掉思考的时间。

。。。

我们采用集合,处理这个问题。

List<User> users = new ArrayList<>();
while (resultSet.next()){
   User user = new User(resultSet.getString("username"),resultSet.getString("password"),resultSet.getString("sex"));//每次都新建一个对象
   users.add(user);
 }
request.setAttribute("users",users); //将需要送到jsp的数据放到request请求域中,让request帮忙带到jsp
request.getRequestDispatcher("/pages/loginsuccess.jsp").forward(req,resp);

我们知道,ResultSet无法使用循环直接遍历,而是需要使用While处理(原因待补充,我先给自己留个坑)。

Jsp部分,需要做些什么呢?直接使用,需要引入taglib,具体可以看这篇文章

引入taglib的步骤

<table border="1">
    <tr>
        <td>姓名</td>
        <td>密码</td>
        <td>性别</td>
    </tr>

    <c:forEach items="${requestScope.users}" var="user">
    <tr>
        <td>${user.username}</td>
        <td>${user.password}</td>
        <td>${user.sex}</td>
    </tr>
    </c:forEach>
</table>

后来,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北溟南风起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值