1. 程式人生 > 實用技巧 >el技術,,,,,JSTL技術,,,,,javaEE的開發模式

el技術,,,,,JSTL技術,,,,,javaEE的開發模式

1.EL 表示式概述

EL(Express Lanuage)表示式可以嵌入在jsp頁面內部,減少jsp指令碼的編寫,EL 出現的目的是要替代jsp頁面中指令碼的編寫。

2. EL從域中取出資料(EL最重要的作用)

jsp指令碼:<%=request.getAttribute(name)%>

EL表示式替代上面的指令碼:${requestScope.name}

EL最主要的作用是獲得四大域中的資料,格式${EL表示式}

EL獲得pageContext域中的值:${pageScope.key};

EL獲得request域中的值:${requestScope.key};

EL獲得session域中的值:${sessionScope.key};

EL獲得application域中的值:${applicationScope.key};

EL從四個域中獲得某個值${key};

---同樣是依次從pageContext域,request域,session域,application域中 獲取屬性,在某個域中獲取後將不在向後尋找

1)獲得普通字串

2)獲得User物件的值

3)獲得List<User>的值

<!-- 模擬域中的資料 -->
<%
    pageContext.setAttribute("name", "pageContxt");
    //儲存字串
    request.setAttribute("
name", "request"); //儲存一個物件 Users user=new Users(); user.setId(1); user.setUsername("lisi"); user.setPwd("123"); session.setAttribute("user", user); //儲存一個集合 List<Users> list=new ArrayList<Users>(); Users user1=new Users(); user1.setId(1); user1.setUsername(
"wangwu"); user1.setPwd("123"); list.add(user1); Users user2=new Users(); user2.setId(1); user2.setUsername("zhaoliu"); user2.setPwd("123"); list.add(user2); application.setAttribute("List", list); %> <hr> <!-- 使用指令碼取出域中的值 --> <%=request.getAttribute("name") %> <%Users u=(Users)session.getAttribute("user"); out.write(u.getUsername()); %> <hr> <!-- 使用EL表示式取出域中的值 --> ${requestScope.name} ${sessionScope.user.username} ${applicationScope.List[0].pwd} <hr> <!-- 使用el表示式 全域查詢(會從最小的找,底層就是findAttribute()) --> ${name } ${user.username} ${List[0].pwd}

pageContext - WEB開發中的pageContext.

pageContext獲得其他八大物件

${pageContext.request.contextPath}

1.EL執行表示式

例如:

${1+1}

${empty user}

${user==null?true:false}

JSTL技術

1.JSTL概述

JSTL(JSP Standard Tag Library),JSP標準標籤庫,可以嵌入在jsp頁面中使用標籤的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的指令碼程式碼。JSTL標準標準標籤庫有5個子庫,但隨著發展,目前常使用的是他的核心庫

標籤庫

標籤庫的URI

字首

Core

http://java.sun.com/jsp/jstl/core

c

I18N

http://java.sun.com/jsp/jstl/fmt

fmt

SQL

http://java.sun.com/jsp/jstl/sql

sql

XML

http://java.sun.com/jsp/jstl/xml

x

Functions

http://java.sun.com/jsp/jstl/functions

fn

2.JSTL下載與匯入

JSTL下載:

從Apache的網站下載JSTL的JAR包。進入 “http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”網址下載 JSTL的安裝包。jakarta-taglibs-standard-1.1.2.zip,然後將下載好的JSTL安裝包 進行解壓,此時,在lib目錄下可以看到兩個JAR檔案,分別為jstl.jar和standard.jar。 其中,jstl.jar檔案包含JSTL規範中定義的介面和相關類,standard.jar檔案包含用於 實現JSTL的.class檔案以及JSTL中5個標籤庫描述符檔案(TLD)

將兩個jar包匯入我們工程的lib中

使用jsp的taglib指令匯入核心標籤庫

1.JSTL核心庫的常用標籤

1)<c:if test=””>標籤

其中test是返回boolean的條件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
     <c:if test="${1==1 }">
     正確
     </c:if>
      <c:if test="${1!=1 }">
     錯誤 
     </c:if>
     <c:if test="${empty user}"><!--如果資料庫裡沒有user就顯示  -->
     <a href="#">登入</a>
     <a href="#">註冊</a>
     </c:if>
<!-- 使用者已經登陸 -->

<c:if test="${!empty user }">

   <span>${user.name }</span>

   <a href="#">退出</a>

</c:if>
</body>
</html>
<%
    //模擬使用者已經登入成功
    User user=new User();
    user.setId(100);
    user.setName("張三");
    user.setPwd("123");
    session.setAttribute("user", user);
%>

網頁顯示張三 退出

2)<c:forEach>標籤

使用方式有兩種組合形式

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach begin="0" end="5" var="i">
   ${i } <!-- 列印0-5: ${i } -->
   <!-- 列印5個i: i  -->
</c:forEach>
<c:forEach items="${List }" var="u">
   ${u.id }...${u.username }...${u.pwd }<br>
</c:forEach>

<!-- items:一個集合或陣列(從域中選) var:代表集合中的某一個元素 -->

<c:forEach items="${UserMap }" var="entry">
   ${entry.key }...${entry.value.username }...${entry.value.pwd }
</c:forEach>
</body>
</html>

一、javaEE的開發模式

MVC:---- web開發的設計模式

M:Model---模型 javaBean:封裝資料

V:View-----檢視 jsp:單純進行頁面的顯示

C:Controller----控制器 Servelt:獲取資料--對資料進行封裝--傳遞資料-- 指派顯示的jsp頁面

1.javaEE的三層架構

伺服器開發時 分為三層

web層:與客戶端互動

service層:複雜業務處理

dao層:與資料庫進行互動

開發實踐時 三層架構通過包結構體現

總結:

EL表示式

從域中取出資料 ${域中儲存的資料的name}

${pageContext.request.contextPath}

JSTL標籤(核心庫)

<%@ taglib uri=”” prefix=”c”%>

<c:if test=””>

<c:forEach items=”陣列或集合” var=”陣列或集合中的每一個元素”>

javaEE三層架構+MVC

web層:收集頁面資料,封裝資料,傳遞資料,指定響應jsp頁面

service層:邏輯業務程式碼的編寫

dao層:資料庫的訪問程式碼的編寫