jsp的聲明:html
<%!java
int i=10;//實例變量,加!後的代碼出如今源碼的類裏面,能夠添加方法web
%>瀏覽器
<%緩存
int i=10;//局部變量,出如今源碼的方法裏,不能添加方法服務器
%>session
註釋:架構
<%--out.write("adc")--%> jsp註釋,註釋掉的代碼根本不會翻譯到servlet中mvc
<!---app
<%="abc"%> html的註釋,代碼依舊會翻譯到servlet中,只是html沒有顯示而已
->
指令: 給服務器使用,告訴服務器如何使用jsp頁面
page指令:做用於整個jsp頁面,
定義jsp的頁面上屬性:
language:語言,默認是java.指示jsp中的腳本語言
import:導入須要的java類
Session:默認是true;是否生成httpSession對象;
buffer:字符緩存,默認是8kb;
errorPage:頁面出錯時轉向的頁面./開頭表明絕對路徑
配置全局錯誤轉向頁面:
在web.xml中配置:
匹配錯誤類型
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
匹配錯誤碼:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
isErrorPage:是否產生exception對象,默認爲false;
ContentType:做用與request.setContentType()相同.給瀏覽器用。
pageEncoding:告知服務器用什麼編碼讀取jsp,實際上只需寫這個,pageEncoding同時具備ContentType的做用
isELIgnore:默認值爲false,是否忽略EL表達式
taglib指令:
引入外部標籤:
include指令:
屬性:file
路徑:/開頭表示當前應用
頁面包含:
<%@include file="/1.jsp"%>
靜態包含:將2個jsp合成一個class文件,(推薦,效率高)
動態包含:
<jsp:include page="/1.jsp"/>
生成2個class,分別輸出各自的代碼
jsp中的動做元素(標籤):
jsp:include:
動態包含:屬性:page
jsp:forward:
轉發:屬性:page
代碼:<jsp:forward page="/index.jsp"></jsp:forward>
jsp:param:
傳遞請求參數,結合其餘標籤來使用:
<jsp:forward page="/2.jsp">
<jsp:param value="djw" name="username"/>
</jsp:forward>
在2.jsp中可獲取username;
jsp九大隱式對象:
JSP內置對象名稱 對應的類型 備註
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession JSP指令page中有一個開關session=」true」
application javax.servlet.ServletContext
config javax.servlet.ServletConfig
page java.lang.Object 表明當前Servlet對象自己
exception java.lang.Throwable JSP指令page中有一個開關isErrorPage="true"
out javax.servlet.jsp.JspWriter 和response.getWriter()返回的PrintWriter做用同樣
pageContext javax.servlet.jsp.PageContext
jsp四大域對象:
pageContext內置對象:
1自己是域對象,只能該頁面使用
特色:只能操做該頁面中的數據
2還能操做其餘三個域對象:
pageContext.setAttribute("p", "p");//頁面
pageContext.setAttribute("p", "p",pageContext.PAGE_SCOPE);//和上面一行同樣
request.setAttribute("p", "pp");//請求,只有當頁面轉發時,兩個頁面的請求才爲同一個請求,能夠用pagecontext來操做
pageContext.setAttribute("p", "p",pageContext.REQUEST_SCOPE);//同上
session.setAttribute("p", "ppp");//做用域範圍爲一次回話
pageContext.setAttribute("p", "ppp",pageContext.SESSION_SCOPE);//同上
application.setAttribute("p", "pppp");//做用域範圍爲該應用
pageContext.setAttribute("p", "pppp",pageContext.APPLICATION_SCOPE);//同上
pageContext.findAttribute
String str=(String)pageContext.findAttribute("p");
該方法的注意點主要在於頁面,回話,請求這三個域的範圍.
還能得到其餘8個隱式對象,
提供了包含和轉發的簡易方法
Jsp.out的緩存機制:
1,out.write(「abc」)
2,response.getWrite.write("def");
以上代碼輸出顯示的是defabc
由於out是jsp的輸出流,先寫入jsp的緩存中,2中上的語句寫入的的respense的緩存,
輸出到頁面最終要使用的是reponse中的流,因此jsp中的流先關閉,
刷新後abc就進入response中的緩存,進入的順序在def的後面。
javabean的概念:
遵循的命名規則:
1有默認的構造函數
2字段私有
3類必須是public
4提供公有的get和set方法(屬性)
5通常實現java.IO.Serializable接口(保證數據不丟失)
做用:封裝數據,傳輸數據
javaWeb開發模型:
javabean+jsp:簡單的應用
Mvc:Model+View+Controller(模型+視圖+控制器)
model:javabean表示
view:jsp數據顯示
controller:servlet控制
mvc是表現層的架構
三層架構視圖:
在jsp中操做javabean:
使用動做元素:(內置標籤)
jsp:useBean:在指定的範圍中查找javabean,若是沒有找到,則建立新的javabean,並放到指定的javabean中,若是找到,直接取出
jsp:setProperty:
jsp:getProperty:將指定名稱的bean對象的值打印到頁面上,當屬性的值爲null,則顯示的爲null
代碼:
<jsp:useBean id="p" class="text.jsp.Person"></jsp:useBean>
<jsp:setProperty property="name" name="p" value="djw"/>
<jsp:getProperty property="name" name="p"/>
用請求參數填充javabean中的屬性:(即表單中數據提交目標爲jsp頁面,jsp直接將獲取到的數據封裝到javabean中)
<% request.setCharacterEncoding("UTF-8"); %> //有中文數據時須要使用,告知服務器用UTF-8來解碼
<jsp:useBean id="p" class="text.jsp.Person"></jsp:useBean>
<jsp:setProperty property="name" name="p" param="name"/>
<jsp:setProperty property="gender" name="p" param="gender"/>
<jsp:getProperty property="name" name="p"/>
<jsp:getProperty property="gender" name="p"/>
<jsp:setProperty property="*" name="p"/>
通配符:使用前提:表單中的屬性名和javabean中的字段名一致纔可使用,能夠這麼認爲:表單中的全部屬性都封裝到了javabean中,
只要屬性名正確,就均可以一一獲取。