最近在學習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數據的交互獲取了。