首页 > 我遇到了问题,如何把这个jsp做到业务分离

我遇到了问题,如何把这个jsp做到业务分离

<table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
      <tr>
        <td>
          
          <!-- 商品循环开始 -->
           <% 
               ItemsDAO itemsDao = new ItemsDAO(); 
               ArrayList<Items> list = itemsDao.getAllItems();
               if(list!=null&&list.size()>0)
               {
                   for(int i=0;i<list.size();i++)
                   {
                      Items item = list.get(i);
           %>   
          <div>

上面的代码业务逻辑和html混一起,看着不舒服。 我想用servlet把list拿到然后传到jsp页面,但是我不知道怎么在jsp里做循环。

下面是我改的代码

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        itemsDao = new ItemsDAO(); 
        list = itemsDao.getAllItems();
        req.getSession().setAttribute("list", list); //我把list通过seesion传给jsp
        req.getRequestDispatcher("/index.jsp").forward(req,resp);
    }
<jsp:useBean  id="list" class="servlet.Index" scope="session"/>  
<!--my god.. 这里怎么循环? 
  list.get(0).getName();
  list.get(0).getCity();
  list.get(1).getName();
  list.get(1).getCity();
-->

最简单的,用jstl的foreach


把数据写到一个js里面,后面的操作全部都用js.我们现在的业务基本也是这么搞


有多种方法可以解决业务分离和循环功能,比如可以使用spring标签,或者struts循环遍历元素,或者JSTL标签。
然后servlet设置数据req.getSession().setAttribute("list", list);,到了视图层取出list变量循环即可。

【热门文章】
【热门文章】