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

页面与服务器的交互与数据传递

    • 一、页面与Servlet交互的几种方式
      • 1.表单项,提交``按钮
      • 2.绑定事件中,设置`location.href`直接跳转
      • 3.超链接跳转
    • 二、页面与`Servlet`数据传递的几种方式
      • 1.`servlet`将查询到的数据保存在`request`域中
        • 补充:`param.name`与`requestScope.name`的区别
      • 2.`servlet`将查询到的数据保存到`session`域中


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


1.表单项,提交

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>

你可能感兴趣的:(早期编程语言基础)