JSP簡介
JSP全稱是Java Server Pages,是一種動態網頁技術,JSP其實就是在html中插入了java代碼和JSP標簽之后形成的文件,文件名以.jsp結尾。其實JSP就是一個servlet。
在servlet中編寫html比較痛苦,而寫JSP就像在寫html,但它相比html而言,html只能為用戶提供靜態數據即靜態頁面,而Jsp技術允許在頁面中嵌套java代碼,為用戶提供動態數據,從而形成動態頁面。需要注意的是最好只在JSP中編寫動態輸出的java代碼。
其實JSP就是一個servlet 這句話要記一下!!!
一個JSP:
IDEA中創建jsp:
在web目錄下右鍵,new—>JSP/JSPX,創建一個名為first.jsp的文件。
eclipse中創建JSP:
在WebContent目錄下點擊右鍵—>new—>JSP file,創建一個名為first.jsp的文件。
記住是在WebContent下創建,可以自己訪問.
然后在文件中編寫下面代碼:
1.把頭部那些編碼換成UTF-8即可支持中文
2.可以看出 上面除了導包那一塊 下面的都是html代碼!
3.記住 java代碼要在這里面寫: <% java代碼塊 %>
4.記住 導java的包要這樣寫:<%@page import="java.util.*"%> 【例:導入util中全部包】
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>Hello,World!</h1> <% Date now = new Date(); out.write(now.toLocaleString()); %> </body> </html>
之后將項目部署到tomcat中並啟動,在瀏覽器中訪問該JSP即可在頁面中看到HELLOWORLD! 和 當前時間了。
JSP就是一個servlet
IDEA查看方式:
打開tomcat啟動的控制台中的最上面的CATALINA_BASE后面的硬盤地址,然后進入到work\Catalina\localhost目錄下就可以找到這個java文件了。
eclipse查看方式:
工作空間中的.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\07-04-jsp\org\apache\jsp目錄下。
可以看到firstjsp.java和firstjsp.class兩個文件,打開java源碼后可以看到該類繼承了 org.apache.jasper.runtime.HttpJspBase類,通過HttpJspBase的源碼可以看到是繼承了HttpServlet,因此JSP就是一個servlet。
JSP的工作流程
將JSP文件轉換為.java文件並將其編譯為.class文件的過程都是由tomcat完成的,在tomcat內部有一個翻譯引擎,當JSP頁面第一次被訪問時由翻譯引擎轉換為.java文件並編譯出.class文件。之后再運行該class文件。
在JSP中的html代碼都會翻譯到servlet中的out.write()中。
JSP中的注釋
在JSP中可以使用下面兩種注釋:
-
html注釋:
<!-- -->
-
JSP注釋:
<%-- --%>
兩者之間的區別是html注釋可以在客戶端瀏覽器中以查看源代碼的方式看到,而JSP注釋則不會被看到。
例: JSP源代碼:
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- 我不想學啦!!!!!!!! --> <%-- 求知若渴啊!!!!!!! --%> </body> </html>
瀏覽器中的源代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- 我不想學啦!!!!!!!! --> </body> </html>
JSP一些基本的代碼標簽:
- <% %>
在JSP中使用該標簽嵌入Java代碼,在一個JSP中可以有多個<% %>並且可以出現JSP文件中的任意位置,JSP引擎會將這部分Java代碼按照從上到下的順序放到_jspService方法中,因此在<% %>中只能出現以分號結尾的Java語句,不能出現下面內容:
- 聲明變量添加訪問權限修飾符的; - 不能定義方法; - 不能定義靜態語句塊;
- <%! %>
如果想要在JSP中聲明方法或靜態代碼塊等內容的話可以使用該標簽,在該標簽中不能直接編寫普通的Java語句,一般情況下不建議使用這個標簽,因為JSP是在單線程環境下運行的,所以在這部分中的變量可能會有線程安全問題。例:
<%! private int a = 10; %> <%! public void m1(){ System.out.println("m1方法"); } %> <% m1();//調用m1方法 %>
- <%= %>
該標簽中的內容可以直接在JSP中輸出變量、常量等,里面的內容是不用分號結尾的,會被JSP引擎直接翻譯到_jspService方法中的out.write()方法中輸出,例如:
<% int a = 1024;%> <%= a %> <%= "monkey1024" %>