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