1.所有的類都放在包里
<%
SomeHelperClass test = new SomeHelperClass(...);
String someString = SomeUtilityClass.someStaticMethod(...);
%>
系統會認為SomeHelperClass 和SomeUtilityClass在哪個包中呢?
由JSP頁面轉換而成的servlet所在的包,可是JSP規范并沒有將這個包標準化,因此沒人知道這個包在哪。因此最好把類都放在包里,把編譯好的class文件放到web應用的ROOT\WEB-INF\classes.
<%
SomeHelperClass test = new SomeHelperClass(...);
String someString = coreservlets.SomeUtilityClass.someStaticMethod(...);
%>
2.JSP/Servlet的對應
<H2>foo</H2>
<%!
Private String randomHeading(){
Return(<H2> + Math.random() + </H2>); // 只用于定義字段和方法
}
%>
<%= bar() %>
<% bar(); %>
生成的Servlet
public class xxxx implements HttpJspPage{
private String randomHeading(){
return(<H2> + Math.random() + </H2>);
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
Throws ServletException, IOException{
Response.setContentType(text/html);
HttpSession session = request.getSession();
JspWriter out = response.getWriter();
out.println(<H2>foo</H2>);
out.println(bar());
bar();
}
}
3._jspService自動定義的8個局部變量
request - HttpServletRequest
response - HttpServletResponse
out - JspWriter (對輸出進行緩存,通過page指令的buffer屬性調整緩沖區的大小)
session - HttpSession
application - ServletContext,由Web應用中所有的servlet和JSP頁面共享
config - ServletConfig,可以使用它來讀取初始化參數,不過實際中,初始化參數在jspInit中讀取,而非_jspService
pageContext - 存儲的是與當前頁面相關的值
page - this的同義詞,為了在腳本語言中作占位符