JavaWeb 从后端获取数据用JSP显示

最近在学习JavaWeb,看到下面的代码有些蒙,果然基础还是得一步步来。
效果是这样的,可以看到一条一条的企业信息从数据库获取并显示到页面中,那么这些数据的流程是怎么样的呢?

笔记1

<c:forEach items="${page.list}" var="item">
<tr>
    <td><input name="ids" value="${item.id}" type="checkbox"></td>
    <td>
        ${item.name}
    </td>
    <td>${item.city}</td>
    <td>${item.address}</td>
    <td>${item.representative}</td>
    <td>${item.phone}</td>
    <td>${item.industry}</td>
    <td>${item.state ==0?'未审核':'已审核'}</td>
    <td class="text-center">
        <button type="button" class="btn bg-olive btn-xs" onclick='location.href="${ctx}/store/company?operation=toEdit&id=${item.id}"'>编辑</button>
    </td>
</tr>
</c:forEach>
  • JSP:在html上写Java代码,本质上还是Servlet
  • EL表达式:用于简化在JSP中取值的代码书写,浅谈jsp EL表达式取值过程、page和pagecontext的区别
    • 原始写法:request.getAttribute("page.list") 其中page.list是什么后面再说
    • EL写法:${page.list}
  • JSTL:一个JSP标签集合,它封装了JSP应用的通用核心功能,使用时需要导包<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ,其中c是标签名,所以这也是为什么foreach循环前面有个c的原因
    • 原始书写
    <%for ( int i = 0; i <= ${page.list.length}; i++){ %>
      //do something 
    <%}%>
    
    • var就是遍历数组时被赋值临时变量,用它就可以调用每一个对象的属性了
      <c:forEach items="${page.list}" var="item">
      可以看到,JSP是基本,后两个是为了编写JSP页面时更方便而快捷的。

笔记2

有时候可以看到这种标签,<a href="${ctx}/system/sysLog?operation=list" onclick="setSidebarActive(this)" target="iframe">其中,{ctx}是什么呢?

笔记3

有时候听视频会常常听到四大域,那四大域是啥的

总结,有了这些基础后,配合后端代码,就大致了解数据从数据获取再用前端显示的一个流程了

控制层代码

// uri:/store/company?operation=list
@WebServlet("/store/company")
public class CompanyServlet extends BaseServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String operation = request.getParameter("operation");
        if ("list".equals(operation)) {
            this.list(request, response);
        }
    }

    private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**进来需要做的事情
         * 1. 进入列表页
         * 2. 获取数据
         * 3. 将数据保存到指定位置
         * 4. 跳转页面
         * */
        //进入列表页
        //获取数据
        int page = 1;
        int size = 5;
        if(StringUtils.isNotBlank(request.getParameter("page"))){
            page = Integer.parseInt(request.getParameter("page"));
        }
        if(StringUtils.isNotBlank(request.getParameter("size"))){
            size = Integer.parseInt(request.getParameter("size"));
        }
        PageInfo all = companyService.findAll(page, size);
        //将数据保存到指定的位置
        request.setAttribute("page",all);
        //跳转页面
        request.getRequestDispatcher("/WEB-INF/pages/store/company/list.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

可以看到当进入显示企业信息时list功能,先是用了一个分页插件获取5条企业信息,当得到这些信息后,就用set.Attribute中设置,然后JSP页面中用get.Attribute来获取,搭配JSTL的foreach标签完成数据的绑定从而成功显示开头的效果。还记得刚刚再EL表达式提到的${page.list} ,其实这里就是与Java数据的交互获取了。

posted on 2022-03-28 14:03  stuMartin  阅读(1190)  评论(0编辑  收藏  举报

导航