Java Web中,关于实现页面与服务端交互,数据传递的归纳


一、页面与Servlet交互的几种方式


1.表单项,提交<button>按钮

1.输入书籍的表单信息,点击提交,到 bookServlet 的 add方法中
       <form action="manager/bookServlet" method="get">
           <input type="hidden" name="action" var="add">
       </form>
2.点击提交按钮,调用servlet方法的update方法,用隐性表单传递参数id
    <form action="manager/bookServlet" method="get">
        <input type="hidden" name="id" value="${requestScope.book.id}">
    </form>

2.绑定事件中,设置location.href直接跳转

通过绑定单击事件,响应跳转servlet调用page方法并且传递pageNo实现
$("#inputbtn").click(function(){
	var pageNumber = $("#pn_input").val();
	location.href ="${pageScope.basePath}manager/bookServlet?action=page&pageNo="+pageNumber;
});

3.超链接跳转

<a href="bookServlet?action=list">图书管理</a>
表示这个超链接的请求由 bookServlet处理并且调用的是 bookServlet 中的list方法
点击删除时,链接到servlet的delete功能,并且传递要删除的id
<a href="bookServlet?action=delete&id=${book.id}">删除</a>
点击首页时,链接到servlet的page功能,并且要传递pageNo
<a href="manager/bookServlet?action=page&pageNo=1">首页</a>

 


二、页面与Servlet数据传递的几种方式


1.servlet将查询到的数据保存在request域中

2.将查询到的Book记录在request中,消息转发给book_edit.jsp
      Book book = bookService.queryBook(id);
      req.setAttribute("book",book);
      req.getRequestDispatcher("/pages/manager/book_edit.jsp").forward(req,resp);

jsp页面中可以直接使用${requestScope.book}得到数据内容


补充:param.namerequestScope.name的区别
${param.name} 等价于 request.getParamter("name"),
用于服务器从页面或者客户端获取的内容。
比如浏览器网址上带的参数,可以直接用param.name进行获取回显到页面中

${requestScope.name} 等价于 request.getAttribute("name") 等价于等价于 ${name},
用于服务器传递结果到页面,在页面中取出服务器保存的值。
比如servlet处理之后的数据,利用setAttribute设置之后直接在页面中利用requestScope.name取出

2.servlet将查询到的数据保存到session域中

  1.获取当前的session,并将数据存到session域中
  	  req.getSession().setAttribute("cart",cart);
  2.获取session域中存的数据
   	  Cart cart = (Cart) req.getSession().getAttribute("cart");
  3.利用响应头信息直接跳转回原页面
      resp.sendRedirect(req.getHeader("Referer"));
靠 session 来传递消息,sessionScope来获取,注意:这里存的cart.items的数据类型是map
        <c:if test="${not empty sessionScope.cart.items}">
            <c:forEach items="${sessionScope.cart.items}" var="entry">
                <tr>
                    <td>${entry.value.name}</td>
                    <td>${entry.value.count}</td>
                    <td>${entry.value.price}</td>
                    <td>${entry.value.totalPrice}</td>
                    <td><a href="#">删除</a></td>
                </tr>
            </c:forEach>
        </c:if>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值