一、JSP介紹
JSP全稱Java Server Pages,是一種動態網頁技術,它可以將Java代碼嵌入HTML頁面,實現動態頁面的功能。
下面是一個JSP頁面的簡單示例:
Hello World
上面的代碼中,使用了JSP中的<% %>
語法,將Java代碼嵌入到了HTML頁面中,並使用out.println()
方法輸出了一句話。在運行時,JSP頁面會被轉換成一個Java Servlet,然後被Web容器執行。
二、JSP基礎語法
1. JSP注釋語法
JSP中的注釋語法和HTML一樣,有兩種:
- HTML注釋:使用
<!-- -->
注釋的內容在客戶端是不可見的。 - JSP注釋:使用
<%-- --%>
注釋的內容在客戶端也是不可見的,但是會在JSP頁面被轉換成Servlet時被保留。
2. JSP腳本語法
JSP腳本語法是將Java代碼嵌入到JSP頁面中的一種方式,可以使用以下兩種語法:
- 腳本let:使用
<% %>
將Java代碼包含在其中。 - 表達式:使用
<%= %>
輸出Java表達式的值。
下面是一個使用腳本let和表達式的例子:
Hello World
3. JSP指令語法
指令是一些特殊語句,用於設置JSP頁面的一些屬性。常用的指令有:<%@ page %>
、<%@ include %>
、<%@ taglib %>
等。
下面是一個使用<%@ page %>
指令控制JSP頁面編碼的例子:
Hello World Hello, World!
三、JSP內置對象
JSP內置對象是在JSP頁面中自動創建的,可以使用它們來執行一些常見操作,如獲取請求信息、訪問Session等。
常用的JSP內置對象有:request
、response
、pageContext
、session
、application
等。
下面是一個使用request
、response
對象的例子:
Hello World Request URI:
Remote Address:
Server Name:
Response Status:
四、JSP標籤庫
JSP標籤庫是一組自定義標記,可以方便地擴展JSP功能,提高代碼的可讀性和可維護性。JSP標籤庫可分為兩種:標準標籤庫和自定義標籤庫。
標準標籤庫是由JSP規範定義的,包括了多個標籤庫,如Core、Fmt、Sql等。可以通過<%@ taglib %>
指令導入標準標籤庫。
自定義標籤庫是由開發人員自己定義的,可以方便地將重複使用的代碼封裝成標籤,讓JSP頁面更加簡潔、易讀。下面是一個簡單的自定義標籤庫的例子:
1. 編寫tag文件:/WEB-INF/tags/hello.tag
<%@tag language="java" pageEncoding="UTF-8"%> <%@attribute name="name" required="true" type="java.lang.String" description="The name to say hello to"%> Hello, <c:out value="${name}"/>!
2. 在JSP頁面中使用標籤:
<%@taglib prefix="my" tagdir="/WEB-INF/tags"%> <my:hello name="World"/>
上面的代碼中,使用了<%@tag %>
指令導入了自定義標籤庫,並使用了<my:hello %>
標籤輸出了一句話。
五、JSP和Servlet之間的關係
JSP和Servlet在本質上是一樣的,都是用Java語言編寫的,只不過JSP是在HTML頁面中嵌入Java代碼,而Servlet是純Java代碼。在底層,JSP頁面在運行時會被轉換成一個Servlet,然後在Web容器中執行。
下面是一個簡單的Servlet和JSP頁面的例子:
1. 編寫Servlet:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String message = "Hello, World!"; request.setAttribute("message", message); RequestDispatcher rd = request.getRequestDispatcher("/hello.jsp"); rd.forward(request, response); } }
2. 編寫JSP頁面:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>Hello World</title> </head> <body> <p>Message: <c:out value="${message}"/></p> </body> </html>
上面的代碼中,Servlet設置了一個名為message
的屬性,並將請求轉發到了/hello.jsp
頁面,然後在JSP頁面中使用了標籤輸出了這個屬性的值。
六、JSP小結
JSP是一種將Java代碼嵌入HTML頁面的動態網頁技術,它包含了腳本語法、指令語法、內置對象和標籤庫等功能。JSP和Servlet在底層是一樣的,都是Java代碼,只不過在表現形式上有所不同。使用JSP可以大大提高代碼的可讀性和可維護性,同時也能方便地實現動態網頁的功能。
原創文章,作者:JYGDH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369443.html