java-servlet-EL表達式和java標簽

来源:http://www.cnblogs.com/CaiNiao-TuFei/archive/2017/10/25/7732771.html
-Advertisement-
Play Games

1 Servlet線程安全問題 1st. 為什麼說servlet會有線程安全問題? 2nd. 如何解決? 2 Jsp基礎 1st. Jsp是什麼? 本質就是一個servlet 2nd. 如何寫jsp? I) <% %> II) <%= %> III) Jsp聲明(a1.jsp) <&! 變數或者方法 ...


1      Servlet線程安全問題

                 1st.              為什麼說servlet會有線程安全問題?

  1. 容器預設情況下,對於某個servlet,只會創建一個實例.
  2. 容器收到一個請求,就會啟動一個線程來處理請求.這樣,就有可能有多個線程同時調用同一個servlet實例,就有可能產生線程安全問題(比如,多個線程同時修改某個屬性);

                2nd.              如何解決?

  1. 使用synchronized對線程安全問題代碼進行加鎖;註:會影響性能.
  2. 儘量避免寫有線程安全的代碼,比如,不要修改屬性.

 

2      Jsp基礎

                 1st.              Jsp是什麼?
本質就是一個servlet

                2nd.              如何寫jsp?

  1. Html直接寫
  2. Java代碼(java腳本)

I)          <% %>

II)        <%= %>

III)      Jsp聲明(a1.jsp)
<&!  變數或者方法  &>
聲明以後可以直接在代碼片段中使用

  1. 指令

I)          什麼是指令?
告訴容器執行的一些配置

II)        Page指令

                                                                   i.              Import屬性:導包

                                                                 ii.              Pageencoding屬性:設置編碼集

                                                                iii.              Contenttype屬性:設置輸出屬性編碼集

                                                                iv.              Session屬性:true(預設)/false  當值為false時,不能夠直接使用session隱含對象了.(a2.jsp)

                                                                 v.              Errorpage屬性:指定一個異常處理頁面,當異常發生後,容器會調用異常處理頁面.(a3.jsp)

                                                                vi.              Iserrorpage屬性:true/false(預設) 當值為true的時候,表示這是一個異常處理頁面,可以使用exeception隱含對象.(a4.jsp)

III)      Incloud指令

                                                                   i.              File屬性:包含的文件

IV)      Taglib指令

                                                                   i.              用於導入jsp標簽.

  1. 隱含對象

I)          什麼是隱含對象…可以直接使用的對象

II)        為什麼可以直接使用

III)      有哪些隱含對象
out,request,response,session,application,
exeception,異常處理對象,只能在異常處理界面使用
pagecontext(a6.jsp  a7.jsp)

  1. 容器會為每一個jsp實例創建一個唯一的符合pagecontext介面要求對象
    特點:

a)         唯一性:jsp實例對應一個pagecontext

b)         持久性:只要jsp實例存在,pagecontext就在(不會銷毀)

  1. 作用:

a)         綁定數據    註:綁定在pagecontext上的數據只有對應的jsp可以訪問

b)         獲取其他所有隱含對象.

config(a5.jsp)  servletconfig(jsp也可以設置配置信息並獲取到)
page(從來不使用)jsp實例,   註:jsp先轉化成servlet,然後容器將這個servlet實例化.

  1. 註釋

I)          <!—註釋內容 -->z註釋內容是java代碼會執行,但是因為外面是html註釋,所以不會將時間顯示到界面上

II)        <%-- 註釋內容 --%>註釋內容是java代碼不會執行,在這個註釋中不論是不是java代碼都不會執行.

 

3      Jsp如何執行的?

a)         將jsp轉換為一個servlet類
htmlàservice方法,使用out輸出
<%   %>à照搬
<%=   %>àout輸出
<&!  變數或者方法  &>   添加新的屬性或者方法

b)         調用servlet

4      Jsp標簽和El表達式

                 1st.              什麼是jsp標簽?
jsp標簽類似於html標簽,用於替代jsp中的java代碼.
    註:因為直接在jsp中寫java代碼,不方便jsp文件的維護,比如講jsp文件交給美工修改就很不方便,所以sun制定了jsp標簽技術規範.

                2nd.              什麼是el表達式?
是一套簡單的運算規則,用於給jsp標簽的屬性賦值,也可以脫離標簽直接使用.

                 3rd.              El表達式的基本使用

  1. 訪問bean的屬性(e1.jsp)

I)          ${user.name}   容器依次從pagecontext,request,session,application中查找綁定名為user的對象.接下來會調用這個對象的gername方法並輸出該方法的結果.
註:如果找不到對應的對象,會輸出””.
   會將null轉換為””輸出.
   可以使用pageScope,requestScope,sessionScope,applicationScope指定查找範圍.

II)        ${user[‘name’]}   
註:

  1. []里可以使用綁定名
  2. []裡面可以使用從0開始的下標,用於訪問數組的某個元素.
  3. 運行一些簡單的運算.
       註:運算結果可以直接輸出也可以給屬性賦值.
    1. 算數運算:+-*/%    註:+只能求和.
    2. 關係運算 < <= = > >= == !=;
    3. 邏輯運算 && || !
    4. 空運算 empty  判斷是否為空是不是一個空字元串.找不到綁定也是true.
  4. 讀取請求參數值(e3.jsp)
    1. ${param.name} 等價於 request.getParameter(string name)
    2. ${paramValues.city} 等價於request.getParameterValues(‘city’)

                 4th.              Jsp標簽  jstl (java standard tag lib)àjava標準標簽庫

  1. Jstl是什麼?
    Apache開發的一套jsp標簽,後來捐獻給sun,sun將其命名為jstl
  2. 如何使用jspl?
    1. 導包
    2. 使用指令taglib導入要使用的jsp標簽.
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      uri屬性:指定要導入的標簽的命名空間(命名空間”namesoace”是為了區分同名的元素在元素前面添加的一個限定,通常是一個功能變數名稱)
      prefix屬性:首碼,命名空間的別名.
  3. 幾個核心標簽

I)          If標簽

                                                                   i.              <c:if test=””>
<c:if>
當test屬性值為true,容器執行標簽體的內容.可以使用el表達式給test賦值,
var屬性:指定一個綁定名
scope屬性:指定綁定範圍,page  request  session  application

                                                                 ii.              Choose標簽(c2.jsp)
<c:choose>
    <c:when test=””>
    <c:otherwise>
    <c:otherwise>
</c:choose>
when可以出現1次 otherwise可以出現0到1次

                                                                iii.              ForEach標簽(c3.jsp)
<c:forEach  items=”” var=”” varStatus=””></c:forEach>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 判斷是否是同一人的方法——equals() 不能直接用per1==per2,這不是對象內容的比較而是存放對象地址的值得比較 在Person類中提供一個比較的方法compare()返回boolean值 註意this關鍵字指的是當前對象。 並且在類的內部即使是私有的屬性,也不需要使用共有的方法來調用。 ...
  • 原文地址:https://codex.wordpress.org/Rewrite_API Rewrite API(重寫規則API) Description(描述) WordPress allows theme and plugin developers to programmatically spe ...
  • Akka-http routing DSL在Route運算中拋出的異常是由內向外浮出的:當內層Route未能捕獲異常時,外一層Route會接著嘗試捕捉,依次向外擴展。Akka-http提供了ExceptionHandler類來處理Route運算產生的異常: 簡單來說ExceptionHandler類 ...
  • HTTP協議的主要特點:1.支持客戶/伺服器模式。2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。4.限制每次連接只處理一個請求。伺服器處理完客戶 ...
  • 一、搭建maven環境,引入相關jar 參考demo 二、寫web.xml 三、寫springmvc的xml文件mvc-dispatcher-servlet.xml 四、寫spring的配置文件applicationContext.xml 五、mybatis-config.xml文件 六、jdbc. ...
  • 在前一陣用Java寫C--(簡化的C語言)編譯器的時候,遇到了一個困擾我很久的問題:在將測試C—代碼輸入並執行完parser和typechecking之後,成功編譯生成了一段完整的MIPS代碼。然而將MIPS代碼複製進模擬器QtSpim執行時,模擬器卻報錯了。 問題分析:一開始無法直接定位出現問題的 ...
  • 迭代器模式:就是提供一種方法對一個容器對象中的各個元素進行訪問,而又不暴露該對象容器的內部細節。 概述 Java集合框架的集合類,我們有時候稱之為容器。容器的種類有很多種,比如ArrayList、LinkedList、HashSet...,每種容器都有自己的特點,ArrayList底層維護的是一個數 ...
  • 一、業務場景 在合同列印中,需要臨時添加其他約定事項,在列印程式的ALV中添加其他事項欄位,點擊之後彈出文字輸入視窗,點擊確定,文字內容存表,併在ALV中展示,點擊列印後,文字內容載入到smartforms。 二、實現功能 新建屏幕,並創建控制塊 為其他事項欄位設置單擊事件 此處的STARTING ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...