JSP第一天

來源:互聯網
上載者:User

jsp:java server pages
使用java語言開發的運行在伺服器端得頁面

html+javaScript---運行在用戶端的頁面

用戶端----》html---->Servlet--->DAO--->DB

servlet的優缺點:
 處理商務邏輯
 展現頁面 out.println("<javaScript><css><html>");
  編寫時沒有文法檢測
  調試時依賴於web容器
 ===》Java代碼中嵌套了Html+JavaScript
 解決:
 在Html+JavaScript代碼中嵌入java代碼===jsp

jsp本質上就是servlet

jsp的運行調用流程:
 1 用戶端首次訪問時,由web容器把jsp翻譯為Servlet,同時編譯,然後調用其中方法
 _jspService。在_jspService方法中內容主要都是out.write("靜態資訊");
 2 第一次訪問之後,只要頁面內容沒有發生改變,則web容器直接調用_jspService方法
 3 第一次訪問之後,頁面中內容發生改變,則web容器則先編譯後調用_jspService方法

注意:
 開發過程中,只要是頁面(html/jsp),改變內容之後,只需重新整理頁面即可

java代碼如何嵌入到html中的文法:<%%>
 聲明 <%! %>
  被翻譯為servlet中的成員變數
  聲明中的代碼必須以;結尾
  同一個jsp頁面中的聲明變數,不能重名

 注釋 <%-- --%> 標準的jsp注釋
   只存在於jsp的原始碼中,給jsp程式員調試使用
  <!-- -->  標準的html注釋
   被翻譯為out.write()中的靜態資訊,原封不動發給用戶端瀏覽器解析
  <%   //  /* */  /****/  %> 純java注釋
   被翻譯為_jspService方法內部的注釋,用戶端源碼中沒有該注釋

 運算式 <%= %>
  將運算式的運算結果在頁面中替換當前標籤顯示
  運算式中的內容結尾必須不能寫;

 程式碼片段 <%  %>
  被翻譯為_jspService方法中的資訊
  結尾必須寫分號
============================
上述jsp文法結構不能嵌套書寫
============================

package com;
import java...    --指令

public class Test{ 
 //
 int i = 100;   --聲明
 public void show(){
  int i = 20;
  //對i進行計算  --注釋
  i+= 30;   --運算式
  System.out.println(i); --程式碼片段
 }
}
class A{

}

 
練習:
 在jsp頁面中使用jsp文法結構顯示99乘法表

  

jsp--->servlet--->dao--->db

jsp文法---指令:<%@ %>
 page指令:<%@page 屬性名稱=屬性值...%>
  *1)contentType="text/html;charset=gbk"
  ===>
  response.setContentType("text/html;charset=gbk");
  
  2)pageEncoding="gbk"
  ==>setCharacterEncoding("gbk");
  
  3) language = "java"
   預設可以不寫,為了相容以後出現的其他語言所預留的介面
  4) session = "true/false"
   設定訪問當前jsp頁面,該頁面是否建立session
   預設值為true
  5) buffer
   設定當前頁面輸出資訊時緩衝區的大小,預設為8k
   如果設定為none,則表示不適用緩衝區,直接輸出每條資訊給用戶端頁面
  6) autoFlush
   設定緩衝區滿了之後是否自動重新整理資訊到用戶端頁面上
   預設值為true,即自動重新整理
  7) isThreadSafe = "true/false"
   設定當前頁面是否經過安全執行緒控制
   預設為true,即安全執行緒
   如果設定為false,則用戶端多線程必須順序訪問該頁面
  *8) import
   給當前頁面引入lang包以外的其他類路徑
  *9) errorPage
   指定當前jsp頁面如果出現異常,則跳轉的頁面路徑
   ===》
   try{

   }catch(Exception e){
     ....
    //resp.sendRedirect("error.jsp");
    req.setAttribute("exception",e);
    req.getRequestDispatcher("error.jsp").forward(req,resp);
   }

  *10 isErrorPage
   指定當前error.jsp頁面,是一個特殊用於處理異常的專屬頁面
   在本頁面中可以擷取異常跳轉之前頁面中的異常對象資訊
   ==>
   Exception e = req.getAttribute("exception");

 include指令:<%@include file=""%>
  引入其他jsp頁面中的資訊
  靜態引入:
   所有的頁面先合并源碼,統一編譯執行

動作:<jsp:標籤名></jsp:標籤名>
 include動作:<jsp:include page=""></jsp:include>
  動態引入:
   先編譯擷取每個頁面的執行結果,然後合并結果顯示
 param動作:依賴於include動作存在
  <jsp:include page="foot.jsp">
   <jsp:param name="copyName" value="@_@"></jsp:param>
  </jsp:include>
  擷取參數:
  <%=request.getparameter("copyName")%>

 forward動作:
  <jsp:forward page="">
 
jsp內建對象
 request  ---javax.servlet.http.HttpServletRequest
 response ---javax.servlet.http.HttpServletResponse
 exception ---java.lang.Throwable
 out  ---javax.servlet.jsp.JspWriter
 session  ---javax.servlet.http.HttpSession
 application ---javax.servlet.ServletContext

web項目中的中文亂碼:
 1 jsp必須頭部設定指令<%@page contentType="text/html;charset=gbk"%>
 2 添加CharacterEncodingFilter
 
http://localhost:8088/myJsp/include/static/content.jsp
==>../../basic/date.jsp
http://localhost:8088/myJsp/basic/date.jsp

===========================
注意:
 在jsp頁面中注釋代碼
 資訊,必須使用<%-- --%>
===========================

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.