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數據的交互獲取了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM