天天看點

【JSP】JSP學習筆記&servlet程式設計【JSP】學習筆記

【JSP】學習筆記

目錄

【JSP】學習筆記

二、JSP代碼使用小貼士

三、JSP指令與動作類型

四、Responce對象的redirect方法(sendRedirect函數)與forward指令方法的差別

五、session對象與application對象

六、servlet程式設計

一、JSP中主要的代碼形式

JSP代碼形式

類型 代碼形式
JSP注釋  <%--       --%>   
JSP表達式 <%=變量/傳回值/表達式>
JSP程式段 <% Java代碼 %>
JSP聲明變量、方法、類 <% !代碼 %>
JSP指令 <% @指令類别   屬性值="  " ....  %>

二、JSP代碼使用小貼士

  1. JSP程式段不能定義函數。
  2. JSP表達式不能以";"結束。
  3. JSP表達式不能出現多條語句。
  4. JSP表達式中内容隻能為字元串類型。

三、JSP指令與動作類型

  1. JSP指令:page/include/taglib
  2. JSP動作:include/forward/useBean/setProperty/getProperty/plugin

四、Responce對象的redirect方法(sendRedirect函數)與forward指令方法的差別

  1. redirect方法屬于用戶端操作,會改變浏覽器的位址顯示;forward屬于伺服器端操作,不會改變浏覽器的位址顯示。
  2. redirect方法不能使目前頁面與目标頁面共享request中的資料,但forward方法可以共享。
  3. redirect方法可以重定向到目前應用程式的其他資源或其他應用程式的資源,如百度頁面;但forward方法隻能在同一個web應用程式的資源間轉發請求。
  4. redirect方法效率較低,forward方法效率較高。

五、session對象與application對象

1.session對象存儲在用戶端,可以實作“跨頁面保持”。

【JSP】JSP學習筆記&amp;servlet程式設計【JSP】學習筆記

session原理圖(圖源于網絡,侵删)

2.application存儲在伺服器端,可以實作所有使用者共享對象。(狗頭)

【JSP】JSP學習筆記&amp;servlet程式設計【JSP】學習筆記

application原理圖(圖源于網絡,侵删)

六、servlet程式設計

1.生命周期:init()初始化、service()調用get或post請求方法、destroy()消亡。

【JSP】JSP學習筆記&amp;servlet程式設計【JSP】學習筆記

Servlet生命周期圖(圖源于網絡,侵删)

2.設定歡迎頁面

在web.xml中找到welcome-fle-list标簽下的welcome-file字段中設定即可。部署後,浏覽器位址欄的輸入方法可以有兩種。例如http://localhost:8888/Prj/cart3.jsp或http://localhost:8888/Prj/都可以進入同一個歡迎頁面。

3.在Servlet中讀取參數

  • 全局參數(必須放在web.xml的最上面!)
<context-param>
    <param-name>全局參數名稱</param-name>
    <param-value>全局參數值</param-value>
  </context-param>
           

擷取全局參數的方法如下:

ServletContext application = this.getSerletContext();
application.getInitParameter("參數名稱");
           
  • 局部參數
<servlet>
    <servlet-name>Servlet名稱</servlet-name>
    <servlet-class>Servlet類路徑</servlet-class>
    <init-param>
      <param-name>局部參數名稱</param-name>
      <param-value>局部參數值</param-value>
    </init-param>
  </servlet>
           

擷取局部參數的方法如下:

this.getInitParameter("參數名稱");
           

七、JavaBean

  • 定義JavaBean
<jsp:useBean id="idName(執行個體名稱)" class="package.class" scope="page|session|..."></jsp:useBean>
           
  • 設定JavaBean屬性

1.值的來源是String常量時,設定方法如下

<jsp:setProperty property="屬性名稱" name="對象名" param="常量" />
           

2.值的來源是request參數時,設定方法如下:

<jsp:setProperty property="屬性名稱" name="對象名" param="參數名" />
           
  • 擷取JavaBean屬性
<jsp:getProperty property="屬性名稱" name="bean對象名" />
           

八、EL與JSTL

1.EL(作用于JSP表達式相同)

1.1基本運算符

EL的運算符"."與"[]"功能幾乎一緻,但有兩種情況隻能使用"[]"運算符:

  • 當存取的資料的名稱中包含特殊字元(字母與數字元号以外的);
  • 當動态取值時,如${sessionScope.對象名[param]},其中param是變量參數。

在使用關系運算符時,判斷兩個變量是否相等隻能采取第一種形式,不能采取另外兩種形式。

  • ${ 變量1 == 變量2 }
  • ${變量1} == ${變量2}
  • ${ ${變量1} == ${變量2} }

empty運算符,即$ { empty A }隻有當A為null/不存在/空字元串/空數組時才會傳回true,其他情況傳回false。

1.2資料通路

JSP中存在四種作用域:pageScope、requestScope、sessionScope、applicationScope。使用方法是$ { XXXScpoe.對象}。

  • 注意:當在不同作用域存在同名對象時,會按以下順序查找:pag=>request=>session==>application。

EL中定義了五個隐含對象,在資料通路時可以調用這些對象,包括pageContext/param/paramValues/cookie/initParam,調用方式如$ { cookie.對象名稱.屬性名稱 }

2.JSTL

2.1.JSTL标簽庫

JSLT标簽庫

JSTL 推薦字首 URI 範例
核心标簽庫 c http://java.sun.com/jsp/jstl/core < c:out >
I18N标簽庫 fmt http://java.sun.com/jsp/jstl/fmt < fmt:formatDate>
SQL标簽庫 sql http://java.sun.com/jsp/jstl/sql < sql:query >
XML标簽庫 x http://java.sun.com/jsp/jstl/xml < x:forBach >
函數标簽庫 fn http://java.sun.com/jsp/jstl/functions < fnL:sqlit >

注意:引入标簽庫時,需要在page指令之後加入taglib指令

2.2.核心标簽庫

2.2.1顯示資料:<c:out value="變量名" escapeXml="true"></c:out>,escapeXml屬性為false ,不會顯示HTML标簽。

2.2.2指派資料:<c:set value="變量值" scope="session" var="變量名"></c:set>

2.2.3删除變量:<c:remove var="變量名" scope="session" ></c:remove>

2.2.4流程控制

  • 簡單條件
<c:if test = "${判斷條件}">..........</c:if>
           
  • 複雜條件
<c:choose>
<c:when test="${條件1}">代碼段</c:when>
...
<c:when test="${條件n}">代碼段</c:when>
<c:otherwise>代碼段</c:otherwise>
</c:choose>
           
  • 循環控制
<c:forEach var="元素名" items="集合名" begin="起始" end="結束" step="步長">
代碼段
</c:forEach>
           

九、AJAX

AJAX實作的核心代碼有五個步驟,執行個體如下 。

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
  	<SCRIPT LANGUAGE="JavaScript">
  	function showInfo(){
  		var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//步驟一:在IE中執行個體化Msxml2.XMLHTTP對象
		xmlHttp.open("GET", "info.jsp", true);//步驟二:指定異步送出的目标和送出方式		
		xmlHttp.onreadystatechange=function() {//步驟三:指定xmlHttp狀态改變時的處理方法
			if (xmlHttp.readyState==4) {//步驟四:編寫處理方法代碼
				infoDiv.innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send();//步驟五:送出請求
	}
	</SCRIPT>  
  </body>
</html>
           
下一篇: 手機硬改

繼續閱讀