終于看到JSP了,進入實際應用階段,我原來以為JSP跟ASP或者ASP.NET差不多,今天了解了一下,感覺不是那么回事。JSP是Java Server Page的縮寫,是Servlet的擴展。書上解釋說:“在傳統的網頁HTML文件中加入Java程序片斷和JSP標簽,就構成了JSP網頁”
看起來很簡單,但是JSP語法都沒有看完就遇到問題了:
<% if(false){ %>
She is a girl
<% }else{ %>
He is a boy.
<% } %>
結果是He is a boy, 這里有點不能夠理解,不知道JSP容器是怎么解釋的,暫時把“He is a boy”當作一個字符串處理
JSP語法:
<%@ %>用來設置和整個JSP網頁相關的屬性,常用的由Page, include, taglib
<%! %>用于聲明JSP代表的Servlet類的成員變量和方法
<% %>用于直接嵌入任何有效的Java語言代碼
<%= %>用于顯示表達式的值,int或者float類型的值都自動轉換成字符串加以顯示
<%! int hitcount=1; %> 和<% int count=1; %>的區別?是類成員變量和局部變量的區別。在<%! %>聲明中的都是類成員變量。
隱含對象:
使用這些對象的引用變量時不需要做任何變量聲明
request javax.servlet.HttpServletRequest
reponse javax.servlet.HttpServletResponse
pageContext javax.servlet.jsp.PageCntext
application javax.servlet.ServletContext
out javax.servlet.jsp.JspWriter
config javax.ServletConfig
page java.lang.Object (相當于Java中的this關鍵字)
session javax.servlet.http.HttpSession
exception java.lang.Exception
JSP與Cookie:只要客戶端不禁止,使用很簡單
Cokie[] cookies = request.getCookies();
cookies[0].getName;
cookies[0].getValue();
cookies[0].setMaxAge(30);
cookies[0].getMaxAge();
response.addCookie(new Cookie("cookieName", "cookieValue"));
JSP轉發請求:
<jsp:forward page="重新定向的文件" />
如果在a.jsp中,a.jsp請求轉發給b.jsp, a.jsp所有的數據輸出都無效;此外a.jsp和a.jsp共享同一個HttpRequest對象,因此b.jsp可以通過request.getParameter("name")方法讀取請求參數
JSP異常處理:
JSP異常處理是針對每個頁面的,不知道能不能在Web.xml中配置,讓所有頁面的異常處理指向通一個頁面(應該有,只是我不知道而已^_^),每個頁面都去設置errorpage感覺很麻煩。
<%@ page errorPage="errorpage.jsp" %>
<%@ page isErrorPage="true" %>默認為true
在處理異常的網頁中可以直接訪問exception隱含對象:<%=exception.getMessage() %> <% exception.printStackTrace(new PrintWriter(out));%>在異常處理頁面中也是共享一個HttpRequest對象,應此也可以使用<%=request.getParameter("name");%>
今天就學這么一點點,玩會兒wow先^_^