java页面后台数据交互(1)

来源:互联网 发布:阿里云cdn价格下调25 编辑:程序博客网 时间:2024/06/07 13:25

      我们在开发的时候用的是jsp页面,后台采用的是SSM框架结构,前后台的数据交互频繁,不管是从数据库查询数据在jsp页面上显示,还是在页面填写信息保存到数据库中,都需要用到数据传递。

      最常见的就是从数据库查询数据在页面上面显示,如list的列表页面,还有edit修改页面,都需要数据在页面上面显示。项目中使用的是SpringMvc,在后台的controller中返回的是modelAndView这个对象

   mv.setViewName("weixin/person/evaluation");           // 这个用来确定页面跳转的地址信息,找到对应的jsp页面。指的是相对于WEB-INF/jsp的相对路径,省去.jsp后缀   mv.addObject("totalOrderslist",totalOrderslist);          //这个用来存储数据,在这里面存储的数据可以直接在jsp中使用EL表达式取出其中的值           关于存储的可以是一个String,int,Object,List,字符串可以直接取出,对象通过打点取出属性值,list则需要通过循环取出
      不同的取值的方式

    //直接存储的字符串等基本数据类型    <input type="hidden"  name="user_id" id="user_id" value="${user_id}"/>

    //对象取值,通过打点的属性名方式获取存储在对象中的值    <input type="hidden"  name="user_id" id="user_id" value="${pd.user_id}"/>

   //list的取值方式,通过循环的方式获取每一个对象,通过对象获取里面的属性值     在里面就入了if判断,根据不同的情况来区分显示的不同值   <c:forEach items="${orders.GoodsList}" var="goods" varStatus="vs">   <!--每个物品的开始 --><div class="Order_list_middle_content_box " ><a class="Order_list_content  f-s"  href="<%=basePath%>app/weishop_toWaitSendOrder?order_id=${orders.order_id}"> <div class="Order_list_content_left"> <img src="${goods.image_url}">  </div>     <div  class="Order_list_content_right">      <h1>${goods.goods_name}</h1><!--三种规格都存在的时候  --><c:if test="${goods.color!=null&&goods.color!=''&&goods.personone!=null&&goods.personone!='' &&goods.persontwo!=null&&goods.persontwo!='' }"> <h6>颜色:${goods.color}  规格:${goods.personone} ${goods.persontwo}</h6> </c:if>       <!--只有规格一和规格二 --> <c:if test="${goods.color==null&&goods.personone!=null&&goods.personone!='' &&goods.persontwo!=null&&goods.persontwo!='' }"> <h6> 规格:${goods.personone} ${goods.persontwo}</h6></c:if>       <!--只有颜色和规格一的时候  --> <c:if test="${goods.color!=null&&goods.color!=''&&goods.personone!=null&&goods.personone!='' &&goods.persontwo==null}"> <h6>规格:${goods.color} ${goods.personone} </h6> </c:if>       <!--只有颜色和规格二的时候  --><c:if test="${goods.color!=null&&goods.color!=''&&goods.personone==null &&goods.persontwo!=null&&goods.persontwo!='' }"> <h6>规格:${goods.color} ${goods.persontwo}</h6></c:if>                       <!--只有规格一的时候  --> <c:if test="${goods.color==null&&goods.personone!=null&&goods.personone!='' &&goods.persontwo==null}">    <h6>规格:${goods.personone} </h6> </c:if>       <!--只有规格二的时候  --> <c:if test="${goods.color==null&&goods.personone==null &&goods.persontwo!=null&&goods.persontwo!='' }">    <h6> 规格:${goods.persontwo}</h6> </c:if>        <!--只有颜色的时候  --> <c:if test="${goods.color!=null&&goods.color!=''&&goods.personone==null &&goods.persontwo==null }">    <h6>规格:${goods.color} </h6></c:if>        <div class="Order_list_content_right_price f-j">   <b>¥${goods.prise}</b> <p> X <span>${goods.count}</span> </p> </div></div>        </a>    </div>    <!--每个物品的结束  --></c:forEach>


//最常用的页面if判断,用来区分不同的情况     <c:if test="${goods.color==null&&goods.personone!=null&&goods.personone!='' &&goods.persontwo==null}">    <h6>规格:${goods.personone} </h6>     </c:if>

关于动态的给name赋值,关键点在于
${vs.index+1}  它相当于for循环中的i的当前值

       <c:forEach items="${rule}" var="var" varStatus="vs"><tr style="text-align: center;"> <td class='center' style="width: 30px;">${vs.index+1}</td>  <c:if test="${pd.color!=null}"><td>${var.color}  <input type="hidden" name="color${vs.index+1}" value="${var.color}"/></td> </c:if>                <c:if test="${pd.person1!=null}">          <td>${var.personone} <input type="hidden" name="one${vs.index+1}" value="${var.personone}"/></td>          </c:if>           <c:if test="${pd.person2!=null}">          <td>${var.persontwo} <input type="hidden" name="two${vs.index+1}" value="${var.persontwo}"/></td>          </c:if>          <td>${pd.bianma}<input type="hidden" name="coding${vs.index+1}"  value="${pd.bianma}"/></td>         <%--  <td><a href="<%=basePath%>uploadFiles/tiaoXingCode/${pd.path}" title="Bar code " class="bwGal"><img src="<%=basePath%>uploadFiles/tiaoXingCode/${pd.path}" alt="编码格式不对" width="100"><!-- </a> --></td> --%>          <td><input type="text" id="price${vs.index+1}" name="price${vs.index+1}" value="" maxlength="9" ></td>           </tr>         </c:forEach>

关于循环,不止可以循环一次,原理同后台中的双重或者多重for循环一样,
  <c:forEach items="${rule}" var="var" varStatus="vs">  </c:forEach>
每一个foreach相当于一个for循环,可以循环多次  list放入object,然后object被新的list纳入,就会产生这种效果