JSP是一種建立在Servlet規范提供的功能之上的動態網頁技術,允許在網頁文件中嵌入java代碼和jsp標記。Java 服務器頁面 (Java Server Page ,JSP) 擴展名為 .jsp。
1.jsp的執行過程
- Jsp文件在用戶第一次請求時,會被編譯成Servlet,然后由這個Servlet處理用戶的請求,所以jsp可以看成是運行時的Servlet
- Jsp容器(也就是Servlet容器)管理jsp頁面聲明周期分為兩個階段.即轉換階段和執行階段
- 當有一個對jsp頁面的請求到來時,jsp容器檢查jsp頁面的語法是否正確,將jsp頁面轉換為Servlet源文件,然后調用javac命令編譯Servlet源文件生成字節碼文件.這是轉換階段
- Servlet容器加載轉換后的Servlet類,這是執行階段
2.JSP 頁面的元素
靜態內容------------→ HTML靜態文本指令------------→ 以 <%@ 開始,以 %> 結束表達式------------→ <%=Java表達式 %> *Scriptlet ------------→ <% Java 代碼 %> *聲明------------→ <%! 函數或方法 %> *動作------------→以 <jsp: 動作名 開始,以 </jsp:動作名> 結束注釋------------→<!-- 這是注釋,但客戶端可以查看到 --><%-- 這也是注釋,但客戶端不能查看到 --%>
3.JSP 指令 用來設置與整個 JSP 頁面相關的屬性
<%@ page ... %> 定義頁面的依賴屬性,比如腳本語言、error 頁面、緩存需求等等
<%@ include ... %> 包含其他文
<%@ taglib ... %> 引入標簽庫的定義,可以是自定義標簽
4、JSP的九大內置對象
request HttpServletRequest 類的實例response HttpServletResponse 類的實例out PrintWriter 類的實例,用于把結果輸出至網頁上session HttpSession 類的實例application ServletContext 類的實例,與應用上下文有關config ServletConfig 類的實例pageContext PageContext 類的實例,提供對 JSP 頁面所有對象以及命名空間的訪問page 類似于 Java 類中的 this 關鍵字Exception Exception 類的對象,代表發生錯誤的 JSP 頁面中對應的異常對象
5. JSP 作用域包括 page、request、session 和 application
JSP 示例如下:
<%-- jsp的指令 --%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'demo1.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><%--jsp的表達式 --%><p>path:<%=path%> </p><p>basePath:<%=basePath%> </p><p>姓名:<%=request.getAttribute("name") %> </p><p>密碼:<%=request.getAttribute("password") %> </p><p>年齡:<%=request.getAttribute("age") %> </p><%--jsp的Scriptlet --%><%--九九乘法表 --%><%for(int i=1;i<10;i++){for(int j=1;j<=i;j++){out.print(i +" × "+j+" = "+(i*j)+" ");}out.print("</br>");}%><%--jsp的聲明 獲取當前時間 --%><%!public String getTime(){SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sf.format(new Date());}%> <p>當前時間:<%=getTime() %> </p></body>
</html>
結果如下: