1. 程式人生 > >javaweb學習筆記(十一):JSP(1)

javaweb學習筆記(十一):JSP(1)

目錄

jsp(1)

1.基本概念

1 .1Jsp的執行過程

1.2 JSP與servlet

2 JSP語法

2.1 Jsp模板

2.2 Jsp表示式

2.3 Jsp指令碼

2.4 Jsp宣告

2.5 Jsp註釋


jsp(1)

1.基本概念

JSP全稱Java Server Pages,是一種動態網頁開發技術。其實就是servlet,所以jsp的執行必須交給tomcat伺服器!jsp頁面既可以寫html程式碼,也可以寫java程式碼。

它相比html而言,html只能為使用者提供靜態資料,而Jsp技術允許在頁面中巢狀java程式碼,為使用者提供動態資料。

相比servlet而言,servlet很難對資料進行排版,而jsp除了可以用java程式碼產生動態資料的同時,也很容易對資料進行排版。

tomcat的work目錄:存放jsp執行時的臨時檔案

1 .1Jsp的執行過程

在MyEclipse的xioahua專案的webroot目錄下,新建一個jsp檔案:01.hello.jsp

<%@ 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>The first jsp  by xiao hua</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檔案 by xioa hua <br>
  </body>
</html>

瀏覽器訪問http://localhost:8080/xiaohua/01.hello.jsp  

1)訪問到01.hello.jsp頁面,tomcat掃描到jsp檔案,在%tomcat%/work把jsp檔案翻譯成java原始檔

(01.hello.jsp   ->   _01_hello_jsp.java) (翻譯)

2)tomcat伺服器把java原始檔編譯成class位元組碼檔案

  (_01_hello_jsp.java  ->  _01_hello_jsp.class)(編譯)

3)tomcat伺服器構造_01_hello_jsp類物件 (例項化)

4)tomcat伺服器呼叫_01_hello_jsp類裡面方法,返回內容顯示到瀏覽器。

注:①第一次訪問jsp:走(1(2(3(4)第n次訪問jsp:只走(4)

jsp檔案修改了或jsp的臨時檔案被刪除了,要重新走走(1(2(3(4)的過程

1.2 JSP與servlet

jsp翻譯成的java檔案:

public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent {

HttpJspBase類(在tomcat 的lib目錄下的jar包中)

public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {

Jsp就是一個servlet程式!servlet的技術可以用在jsp程式中jsp的技術並不是全部適用於servlet程式!

Servlet的生命週期:

1)構造方法(第1次訪問)

2)init方法(第1次訪問)

3)service方法

4)destroy方法

Jsp的生命週期

1)翻譯: jsp->java檔案

2)編譯: java檔案->class檔案(servlet程式)

3)構造方法(第1次訪問)

4)init方法(第1次訪問):_jspInit()

5)service方法:_jspService()

6)destroy方法:_jspDestroy()

2 JSP語法

2.1 Jsp模板

JSP頁面中的HTML內容稱之為JSP模版元素。 JSP模版元素定義了網頁的基本骨架,即定義了頁面的結構和外觀。

2.2 Jsp表示式

語法:<%= 變數或表示式 %>

作用: 向瀏覽器輸出變數的值或表示式計算的結果

注:表示式會被翻譯成 out.print(量或表示式 );  並放到_JspServicer()方法中。

2.3 Jsp指令碼

語法:<% 多行java程式碼 %>

作用: 執行java程式碼

注:指令碼中的java程式碼會被放在_jspService()方法中執行。

在兩個或多個指令碼片斷之間可以嵌入文字、HTML標記和其他JSP元素。單個指令碼片斷中的Java語句可以是不完整的,但是,多個指令碼片斷組合後的結果必須是完整的Java語句,例如:

 

2.4 Jsp宣告

語法:<%! 多行java程式碼 %>

Jsp宣告中的java程式碼被翻譯到_jspService方法的外面,即例項變數。所以,JSP宣告可用於定義JSP頁面轉換成的Servlet程式的靜態程式碼塊、成員變數和方法。 多個靜態程式碼塊、變數和函式可以定義在一個JSP宣告中,也可以分別單獨定義在多個JSP宣告中。JSP隱式物件的作用範圍僅限於Servlet的_jspService方法,所以在JSP宣告中不能使用這些隱式物件 例:

 

2.5 Jsp註釋

語法: <%--  jsp註釋  --%>

:在jsp頁面的html註釋會被翻譯和執行。而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>jsp語法</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表示式  --%>
   今天是:<%= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()) %><br/>
  求和:<%= 3+5 %><br/>
  <%-- jsp指令碼--%>
  <%
  	for(int i=1;i<5;i++){
  		
   %>
  		<H1>xiaohua</H1>
  <%
  	}
   %>
	<%--jsp宣告 --%>
	<%!
		String name="xiaohua";
	 %>
	 列印輸出:<%= name %><br/>

  </body>
</html>

 開啟瀏覽器,檢視: