JSP基礎:六、EL表達式、JSTL標籤和亂碼解決

一、複習
二、新內容(EL表達式、JSTL標籤)StuPrjEL項目
 1、JSP腳本有什麼不足?
      代碼結構混亂<% %>
      Java代碼和Html代碼混合起來容易出錯
      代碼不易於維護
 2、解決方案:EL表達式 Espression Language
      以${開始,以}結束,中間寫EL表達式。
                    語法:${}
 3、EL表達式作用
      頁面結構清晰。
      代碼可讀性高,易於維護。
 4、EL操作符
      點        .      ${對象名.屬性名}         獲取對象中的屬性
      中括號 []      ${集合名[對象名]}         獲取集合中的對象
 5、EL使用注意
      類的屬性必須實現了getter/setter方法。
      EL表達式尋找對象時候
      順序爲:pageContext--request--session--application
      如果想在某個作用域裏去找,前面要指定範圍:
      pageScope--->pageContext
      requestScope--->request
      sessionScope--->session
                   applicationScope--->application
 6、代碼示例:複製StuPrj項目爲StuPrjEL
      --新建testel.jsp講解EL訪問的作用域
  ${requestScope.strs[1]}
      --testel.jsp使用EL表達式獲取集合的值
  ${requestScope.strs[1]}
      --EL表達式的運算
  ${1+2}             ${"1"+"2"}EL表達式自動轉換
  ${5*(1+2)}        ${"1"}${"2"}
  ${1==2}            邏輯運算,true、false
  ${1>2:"ab":"cd"}  三目運算符
  ${}
      --改造update.jsp頁面講解EL表達式取對象的實例
      --改造stuinfo.jsp時遇到問題,因爲有頁面循環和判斷
 
 7、JSTL(EL表達式無法實現邏輯控制,所以要引入jstl)(注意JSTL的jar包)
      JavaServerPages Standard Tag Library JSP標準標籤庫
      JSTL作用:實現頁面中的邏輯控制(判斷、循環)
      核心標籤庫:http://java.sun.com/jsp/jstl/core     c
      條件標籤
  <c:if>
           <c:if test="${age<=18}">
        <h1>此網站未成年人禁止訪問!</h1>
          </c:if>
      迭代標籤
  <c:forEach>
       <c:forEach items="${stus}" var="stu">
           <span>${stu.sno }----${stu.sname }----${stu.ssex }<br/>
       </c:forEach>
      --代碼示例:新建testjstl.jsp
      導入標籤庫
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      --需求:偶數行變色
 
亂碼解決

一 JSP頁面亂碼:
JSP文件和頁面規定的編碼保持一致。(用myEclipse開發不會出現這個問題)GET方式傳值亂碼:
 解決方案:
  //1、解決請求亂碼問題、解決響應亂碼問題
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  response.setCharacterEncoding("utf-8");

二 設置tomcat的編碼方式
利用request.setCharacterEncoding("UTF-8");來設置Tomcat接收請求的編碼格式,只對POST方式提交的數據有效,對GET方式提交的數據無效!
要設置GET的編碼,可以修改server.xml文件中,相應的端口的Connector的屬性:URIEncoding="UTF-8",這樣,GET方式提交的數據纔會被正確解碼。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
 redirectPort="8443" URIEncoding="UTF-8" />
 
三 數據庫連接字符串
jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章