1. 程式人生 > 其它 >JavaWeb 從後端獲取資料用JSP顯示

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資料的互動獲取了。