1 <%=2+2%> 2 <%=xx.getName()%> 3 <%=xx.getName()+“str”%>
注意:表達式結束不需要寫分號。
這種形式的Java代碼在轉譯成Servlet時,<%= %>內的代碼會成為service()方法中使用out.print語句的輸出。
1 out.print(2+2); 2 out.print(xx.getName()); 3 out.print(xx.getName()+“str”));
1 <table> 2 <% 3 List<Student> students = (List<Student>)request.getAttribute(“students“); 4 for(Student st : students){ 5 %> 6 <tr> 7 <td> <%=st.getId()%> </td> 8 <td> <%=st.getName()%> </td> 9 </tr> 10 <% 11 } 12 %> 13 </table>
以上代碼使用小腳本動態生成一個表格。<% %>內的代碼最終都會成為service方法的一部分,轉換結果如下:
1 public void service(…){ 2 out.write(“<table>”); 3 List<Student> students = (List<Student>)request.getAttribute(“students“); 4 for(Student st : students){ 5 out.write(“<tr> <td>”); 6 out.print(st.getId()); 7 out.write(“</td><td>”); 8 out.print(st.getName()); 9 out.write(“</td></tr>”); 10 } 11 out.write(“</table>”); 12 }
1 <%! 2 private String name; //屬性聲明 3 4 public void fun(){ //方法聲明 5 //… 方法體 6 } 7 %>
JSP聲明<%! %>內的代碼可以為對應的Servlet添加屬性和方法,轉換為Servlet之後的結果如下:
1 public class XXX_JSP extends JSPBase{ 2 private String name; //屬性聲明 3 4 public void fun(){ //方法聲明 5 // … 方法體 6 } 7 8 public void service(… …){ 9 10 } 11 }
page指令可以導入java包,也可以對頁面的一些屬性進行設置。
1 <%-- 導包 --%> 2 <%@ page import=“java.util.*“%> 3 <%@ page import=“java.util.*,java.sql.*“%> 4 5 <%-- 設置response.setConentType方法的參數值 --%> 6 <%@ page contentType=“text/html;charset=utf-8“%> 7 8 <%-- 設置容器讀取該文件時的解碼方式 --%> 9 <%@ page pageEncoding=“UTF-8“%>
(1)使用page指令導包時,需要用到import屬性。如果需要導入多個包,可以分成多條page指令來編寫,也可以在一條page指令中,使用“,“逗號作為分隔來實現。
(2)contentType屬性,設置輸出內容的編碼方式,這樣就可以設置浏覽器使用正確的解碼方式來顯示頁面。
(3)pageEncoding屬性,設置容器讀取該文件時的解碼方法,這段代碼可以保證頁面在加載到內存時正確的解碼中文。
注意,page指令要放在頁面的最上面編寫。
include指令主要用於將其他頁面包含在另一個頁面之中,可以實現頁面內容的重用。include指令的語法如下:
1 <%@ include file=“thetitle.html” %>
可引入JSTL的標簽庫,將標簽庫對應的jar包拷貝到WEB-INF/lib目錄下,以便於系統可以加載所需要的類。使用taglib指令在頁面上引入標簽的命名空間和前綴,幫助系統定位對應的類。
1 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
由於JSP頁面最終要轉化為一個Servlet,而作為即將轉變為Servlet的一個前期版本,會有很多系統提供給頁面能夠直接使用的對象,根據頁面中要實現的功能直接使用即可。具體的隱含對象信息見下表:
隱含對象 類型 說明 request HttpServletRequest 代表請求對象 response HttpServletResponse 代表響應對象 out JSPWriter 輸出流 session HttpSession 會話 application ServletContext 全局的Servlet上下文對象 pageContext PageContext JSP頁面上下文 page Object 代表JSP頁面本身,即this config ServletConfig Servlet配置對象 exception Throwable 捕獲的頁面異常對象