- 搞定J2EE核心技術與企業應用
- 常建功 王向華編著
- 1214字
- 2018-12-29 13:50:06
6.2 JSP的基本語法
JSP的使用非常簡單,本節簡要介紹JSP的基本使用方法,任何語言都有基本語句和數據類型,下面分別進行講解。
6.2.1 基本語句
JSP的語句一般分為6種:編譯語句、聲明語句、程序代碼、注釋語句、運算表達式和動作語句。
● 編譯語句:<%@ 指示名 [屬性="屬性值"]%>。
● 聲明語句:<%! 聲明語句;[ 聲明語句;]…%>。
● 程序代碼:<%程序代碼%>。
● 注釋語句:<%--注解--%>。
● 運算表達式:<%=表達式%>。
● 動作語句:<JSP:動作名[屬性|…]/>。
通過上面的簡單講解,讀者可能還不太了解JSP的使用方法,下面通過一個示例來描述,示例代碼如下:
<%@page contentType="text/html;charset=GBK"%> <%@page import="java.util.List,com.bbsManagement.domain.*"%> <%@ page seesion="true"%> <%@ page isAutoFlush="true"%> <%@ page buffer="8kb"%> <html> <head><title>留言回復發布</title> </head> <body> <form name="form1" action="" method="post"> <table width="776" border="1"> <!--采用EL語法--> <tr> <td height="38" colspan="2"><div align="center">消息提示:${msg}</span></div></td> </form> <!--定義多動作的處理方式--> <script language=Javascript> function check(action) { document.forms[0].action = "bbsWriteBackAction!" + action + ".action"; document.forms[0].submit(); } </script> </body> </html>
代碼說明:
● JSP頁面的擴展名必須為.jsp。
● <%@page contentType="text/html;charset=GBK"%>用來描述該頁面所使用的編碼,還可以設置使用的語言、是否維持會話狀態、是否使用緩沖等。如果JSP頁面的中文顯示為亂碼,則是沒有指定JSP編碼所導致的。
● ${msg}表示采用EL語法來輸出變量的值。
● <script language=Javascript>表示使用的是JavaScript語法。
● <%@page import="java.util.List,com.bbsManagement.domain.*"%>表示導入包。在具體導入包時,可以導入多個包,但需要使用逗號進行分隔。
● <%@ page seesion="true"%>表示該頁面支持Session。
● <%@ page isAutoFlush="true"%>、<%@ page buffer="8kb"%>表示支持緩沖,一般只在處理圖片時使用。
在提交表單時有一個參數是method,可以設定的屬性值有get和post,屬性get和post都可以向服務器傳送數據,但是傳送機制不一樣。其中get是把參數數據隊列追加到提交表單的Action屬性所指的URL地址中,值和表單內各個字段一一對應,用戶通過URL可以看到;post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML Header內一起傳送到Action屬性所指的URL地址,用戶看不到這個過程。<form method="get" action="input.jsp?username=gf">與<form method="get" action="input.jsp">是一樣的,也就是說,action頁面后邊帶的參數列表會被忽視;而<form method="post" action="input.jsp?username=gf">與<form method="post" action="input.jsp">是不一樣的。同時要注意get的安全性非常低,post的安全性較高。
在JSP中include有兩種形式,分別是:
<%@ include file=" "%>
和:
<JSP:include page=" " flush="true"/>
前者是指令元素,后者是行為元素,它們的區別是:
● <%@ include file = "URL" %>是在編譯階段執行。
● <JSP:include page="{URL | <%= 表達式 %>}" flush="true | false " />是在請求處理階段執行。
● <%@ include file = "URL" %>引入靜態文本(HTML、JSP),在JSP頁面被轉換成Servlet之前和它融合到一起。
● <JSP:include page="{URL | <%=表達式%>}" flush="true|false"/>引入執行頁面或Servlet所生成的頁面。
forward和sendRedirect的區別如下:
● 當form被提交至a.jsp時,在a.jsp中使用forward()重定向至b.jsp,此時form提交的所有信息在b.jsp中都可以獲得,參數自動傳遞。forward執行時瀏覽器地址欄中的URL地址不變。
● sendRedirect()可以帶參數傳遞,比如,servlet?username=gf傳至下個頁面,同時它可以重定向至不同的主機上,且在瀏覽器的地址欄中會出現重定向頁面的URL地址。
6.2.2 數據類型
JSP的標識符是以字母、下畫線和美元符號開始的一個字符串,除了第一個字母外,其他字母還可以是數字。
JSP的數據類型圖如圖6.5所示。

圖6.5 JSP的數據類型圖