程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 第十天3月3日之JSP

第十天3月3日之JSP

編輯:關於JSP



1.不管浏覽器有沒有禁用cookie,第一次訪問時服務器都會就進行URL重寫。
但是,第二次以後訪問時,如果用戶沒有禁用cookie,服務器不會進行URL
重寫。如果禁用了才進行URL重寫。這就是response.encodeURL(url);方法
的原理。它內部也就是做了這樣的事。

2.如果使用的是response.setHeader("Refresh","2,url=.....");
則會對重寫後的URL的地址的jsessionid參數去掉。所以不要使用這個。
使用response.sendRridirect();方式


3.session會超時,銀行是5分鐘。5分鐘後會是失效。再次訪問時,會重新建立一個session

4.session內部是一個大Map,存放的數據
(類,屬性)
要存在硬盤上,必須實現序列化,否則回報異常。
接口。可以實驗查看。鈍化、活化;擱置、激活

5.cookie是不能存中文的,要進行base64編碼。記住用戶名案例,記住用戶名

6.base64原理和編碼和解碼。有API在jdk中,包為sun.....
不能導入包,就網上查資料。案例:防止表單提交

base64 可以把任何東西變成字符。

base64編碼就是把3個字節變成4個字節,3個字節是24位,24除以4等於6,不足的前面補0,就變成了4個字節。
最小0000 0000
最大0011 1111
區間是64個數。


7.md5算法(jdk的API中有)不能逆回去(在數學思想上,網上有一個字典可以查,表面上可以破解,其實不可以),
MD5會編碼成字節,就要用base64編碼變回字符即逆回去

struts2中防止表單提交,也是生成一個令牌。


8.JSP九大內置對象是規范定義的。不管
JSP就是Servlet。
JSP基本語法開發實際工作中不用,會面試。但是要學。

tomcat翻譯JSP。

JSP中的Java代碼直接拿到Servlet中,JSP中的body內容就是service方法
輸出的內容在Servlet中的out對象輸出的。


JSP聲明不用(在service方法外部定義
,是全局的,不能使用request和response等對象),
有線程安全問題。看Servlet代碼即可

演講:servlet是運行在服務器端 的小程序。他的生命周期?

Dom解析:node、element、attribute


9.JSP被翻譯後的Java文件,可以再tomcat的服務器中的work目錄中
找到,一層一層找就是。


10.開發中首選靜態包含

11.JSP常用動作標簽:內部不能寫注釋。

12.iserroepage=FALSE,默認是FALSE,是否產生exception對象。
打印錯誤信息,我們還是要解決。

13.autoFlush自動刷新,默認大小事8kb,我們不管。

14.所有的東西都要先保存到response緩存,再由response響應給浏覽器。

JSP的out對象也有緩存,JSPwriter。

15.關閉浏覽器,默認一次回話結束。
再開一個浏覽器,是重新開啟一個新的回話。

但是,現在的浏覽器再打開,也是同一次回話。以上面為准。


16.JSP中的page對象和pagecontext所表示的page范圍
(一般不用,所表示范圍太小)區分開來,
不是一個概念。

17.JSP中的request對象和response,只有結合轉發才有用。

18、JSP中的session對象,只要是同一次回話,就可以在不同頁面使用。
像查詢結果這樣的功能就不能存放在session。如果我們第一次看到了,
4條記錄。如果服務器更新了數據,添加了數據,我們再次看到的還是
4條記錄。用request就不會有這樣的問題,請求完了,request就沒了,
會重新發送請求。





老師筆記:

一、HttpSession
1、客戶端禁用了cookie,如何保持會話數據
http://localhost:8080/day10_00_session/servlet/ShowCartServlet

http://localhost:8080/day10_00_session/servlet/ShowCartServlet;JSESSIONID=111111 URL重寫。需要對本應用中的所有url地址都得重寫。


String newURL = esponse.encodeUrl(String url);
偷懶的:主頁---為了更好浏覽我們的網站,請不要禁用您的cookie
2、HttpSession對象的狀態轉換
2.1配置session對象的超時時間。
修改web.xml

1


getMaxInactiveInterval
public int getMaxInactiveInterval()
Returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses. After this interval, the servlet container will invalidate the session. The maximum time interval can be set with the setMaxInactiveInterval method. A negative time indicates the session should never timeout.
Returns:
an integer specifying the number of seconds this session remains open between client requests
See Also:
setMaxInactiveInterval(int)

3、IE浏覽器何時會開啟一次新的會話
IE不同的版本:開啟一個新的浏覽器進程,是不是屬於同一次會話,不定的。
4、Base64編碼:(很重要)
把3字節變為4字節:
10011100 01010011 10101111
00100111 00000101 00001110 00101111
每個字節做小數00000000 ~ 00111111 64個整數,每一個整數對應著一個可見字符。
Base64可以把任何的字節變為可見的字符
二、JSP概述:
JSP=HTML+Java
Servlet:控制業務邏輯
JSP:顯示
動態資源生成靜態資源的,用戶看到的永遠都是靜態資源,即看到的都是動態資源生成的結果。
學好JSP的關鍵:在寫JSP的某部分內容時,一定要知道他在Servlet中的位置。
三、JSP的基本語法
1、JSP模版元素:就是JSP中的HTML的內容。界面展示。(美工)建議先把模板弄好。
2、JSP腳本表達式 :
作用:把某個變量的值輸出到頁面上。(等同於out.write())
語法:<%=表達式%>
3、JSP的腳本片段:
作用:書寫java邏輯
語法:<%
語句1;
語句2;
%>
4、JSP聲明
作用:定義JSP對應的Servlet的成員變量或方法
語法:
<%!
private int age = 100;
public void m(){
}
static{}
%>
5、 JSP注釋
語法:<%--這是注釋--%>
結果:被注釋的代碼,服務器根本不翻譯。
實際開發中:除了下面要講的指令。JSP中不能出現一行<%%>
四、JSP的指令:
作用:給服務器用的。
語法:<%@ page|taglib|include 屬性1="值1" ...%>
1、page:
language:指定JSP中使用的腳本的語言。默認值java,目前只支持java。
*import:導入jsp中使用的類或包。作用和java中的import完全一樣。
import="java.io.InputStream,java.util.Date"
*session:指示是否創建HttpSession對象。默認是true,創建。
buffer:指示輸出字符流的緩存大小。默認是8kb。
*errorPage:指定出錯時,轉發到哪裡去。取值就是一個uri地址。如果以"/"開頭,它就代表當前應用。
配置全局錯誤提示頁面:(不是轉發)
web.xml

java.lang.Exception
/error.jsp



404
/404.jsp

*isErrorPage:指示是否產生exception對象。true是產生。默認值是false
*contentType:通知HttpServletResponse輸出時響應正文的MIME類型和編碼。
作用和response.setContextType="text/html;charset=UTF-8"一樣
*pageEncoding:指示從磁盤上讀取jsp文件時查的碼表。
1、指示服務器讀磁盤上的文件用的編碼
2、同時制定contentType使用的編碼
*isELIgnored:默認是false。指示是否忽略EL表達式。
2、taglib:引入外部定義的標簽(重點)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3、include:實現包含(靜態包含)
靜態包含:2個頁面對應一個Servlet
動態包含:2個頁面分別對應一個Servlet。
五、JSP常用動作元素(jsp內置的標簽)
jsp:include:動態包含
jsp:forward
jsp:param
六、JSP中的9個隱式對象(JSP對應的service中生成的那些局部變量)
JSP隱式對象名稱 類型
request javax.servlet.http.HttpServletRequest(域對象)
response javax.servlet.http.HttpServletResponse
session javax.servlet.HttpSession(域對象)
application javax.servlet.ServletContext(域對象)
config javax.servlet.ServletConfig
page 當前JSP對應的Servlet的實例
exception java.lang.Throwable

out javax.servlet.jsp.JspWriter(和response.getWriter()作用完全一樣)
pageContext javax.servlet.jsp.PageContext(用JSP時很重要)

三大作用:
1、本身是一個域對象,還能操作其他三個域對象中的數據
本身是一個域對象:范圍是當前頁面。
void setAttribute(String key,Object value)
void removeAttribute(String key)
Object getAttribute(String key)
操作其他三個域對象中的數據:scope是一個常量:PAGE_SCOPE(頁面范圍PageContext)|REQUEST_SCOPE(請求范圍ServletRequest)|SESSION_SCOPE(會話范圍HttpSession)|APPLICATION_SCOPE(應用范圍ServletContext)
void setAttribute(String key,Object value,int scope)
void removeAttribute(String key,int scope)
Object getAttribute(String key,int scope)

查找方法:
Object findAttribute(String key):依次從PageContext\ServletRequest\HttpSession\ServletContext中查找,找到為止。
2、獲取其他八個隱式對象:用在普通類中。

3、提供了轉發和包含的簡易方法
pageContext.forward("/scope/2.jsp");
pageContext.include("");

七、四大域對象總結
表示的范圍 Map在哪個類中 PageContext中的常量 備注
page PageContext:Map PAGE_SCOPE 開發幾乎不用:練習時用一下
request ServletRequest:Map REQUEST_SCOPE 開發中常用:僅限轉發(A處理數據----轉發B顯示數據)。向該范圍中放的數據,顯示完畢後就沒有用了,比如查詢結果數據。
session HttpSession:Map SESSION_SCOPE 開發中常用:向該范圍中存放的數據,僅供自己多次使用。比如購物車,登陸信息等。
application ServletContext:Map APPLICATION_SCOPE 開發中用得少:要做好同步處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved