JavaWeb 從後端獲取資料用JSP顯示
阿新 • • 發佈:2022-03-28
最近在學習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資料的互動獲取了。