一、聲明JSP出錯頁面
(1) Page directive 的errorPage屬性用於指定URL,該URL可處理JSP拋出的異常
(2)URL是相對於Web應用的跟路徑。
(3)聲明的出錯頁面可以是另一個JSP,Servlet或HTML檔案。
我們看一下使用出錯指示聲明出錯頁面
<%@page errorPage="badLogin.jsp"%>
二、Exception內建對象
(1) 使用isErrorPage屬性的JSP有一個附加的內建exception
對象使用exception對象的樣本badLogin.jsp
<%@ page isErrorPage="true"%>Error message=<%=exception.getMessage()%><%PrintWriter writer=new PrintWriter(out);%>Stack=<% exception.printStackTrace(writer);%>
(2)Error頁面能夠在JSP之間共用
三、定義Web應用出錯頁面
(1) 你可以通過使用<error-page>元素指定具體的頁面的方式很好地處理HTTP錯誤
(2) 如果這些錯誤沒有被Servlets或JSPs做內部處理,則將調用這些頁面。
出錯頁面聲明的樣本web.xml檔案:
<error-page> <error-code>404</error-code> <location>/handle404.jsp</location></error-page><error-page> <exception-tpye>java.io.IOException </exception-tpye> <location>/handleIOException.jsp</locatio></error-page>
四、Forward與Include
(1) Servlets和JSPs能夠通過forward和include協同工作
(2) Servlet Fowarding
Servlets能夠只用RequestDispatcher對象的forward方法永久地把控制傳給其它的Servlets
在servlets之間forwarding的樣本:
public class Servlet1 extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response){...ServletContext sc=getServletContext();RequestDispatcher rd=sc.getRequestDispatcher("Servlet2");rd.forword(request,response);return;//結束這個servlet}...}
(3) Servlet Including
Servlets能夠使用RequestDispatcher對象的include方法臨時地把控制傳給其它的Servlets
在servlet之間including的樣本:
public class Servlet1 extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response){...ServletContext sc=getServletContext();RequestDispatcher rd=sc.getRequestDispatcher("Servlet2");rd.include(request,response);//繼續處理這個servlet}...}
(4) JSP Forwarding
當使用JSP forward動作時,控制轉給目標頁面
使用forward動作的樣本:
<% if(shippingAddressValid()){%><jsp:forward page="billing.jsp"/><% else %><jsp:forward page="address.jsp"/><%}%>
(5) JSP Including
當使用JSP include動作時,將執行被包含JSP並且該JSP的輸出將插入到所調用它的JSP中一起輸出
JSP根據使用者註冊情況包含另一個JSP:
<% String registered=request.getParameter("regUser");if(registered.equals("true")){%><jsp:include page="welcome.jsp"/><%}else{%><jsp:include page="sorry.jsp"/><%}%>...
五、使用標籤庫
(1) 定製標籤:
- 擴充JSP功能
- 根據產生內容和編寫代碼進行分工
- 使用Java類(tag handler)實現標籤動作
- 使用指定義標籤庫描述檔案Tag Library Descriptor進行聲明和配置
- 使用taglib指令載入
<%@ taglib uri="counter" prefix="countLib"%><html><body><p>This page has been visited<countLib:display/>times!</body></html>
(2)建立標籤
從檔案獲得一些點擊數量的JSP標籤:
package staplerz.tagext.counter;import java.io.*;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;public class Display extends TagSupport{public int doStartTag()throws Jspexception{File countFile=new File("count.tmp");int count=Count.getCount(countFile);JspWriter out=pageContext.getout();try{out.print(count);}catch(IOException ioe){//Error handing}return(SKIP_BODY);}}
我們這節內容屬於補充Jsp的一些內容。