servlet&jsp知識點

1. 符合j2ee標準的web-app的目錄結構

n WEB-INF 

u classes 

u web.xml 

u lib

2. servlet開發過程

n 從httpservlet繼承重寫doget / doPost方法

n 部署web.xml 

3. servlet聲明週期

n 只有一個對象

n 第一次請求的時候被初始化,只一遍

n 初始化後先調用init方法,只一遍

n 每個請求,調用一遍serviceàserviceàdoGet/doPost。以多線程的方式運行

不要在servlet中設計成員變量。

n 卸載前調用destroy方法

4. 爲什麼有2init方法

5. /的含義

n form

u form提交中action的路徑可以爲虛擬路徑,

u 也可以爲絕對路徑,/代表http://127.0.0.1/

n web.xml

u web.xmlurl-patternwebapplication根路徑,/代表http://127.0.0.1/Test/

6. 亂碼

場合:頁面本身有中文的時候

解決辦法:servletresp.setContentType("text/html;charset=gbk");

Jsp: <%@ page contentType="text/html;charset=gb2312"%>

注意:一定要寫在PrintWriter out = resp.getWriter();之前

場合:解決get方式亂碼問題:

解決辦法:修改server.xml àURIEncoding="GBK"

場合:解決post方式提交內容的亂碼

解決辦法:request.setCharacterEncoding("GBK");

注意:一定要寫在存取第一個參數之前

不要調用response.setCharacterEncoding("GBK");

場合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文參數

解決辦法:<%request.setCharacterEncoding("GBK");%>

注意:

7. Cookie session的區別

注意cookie有時候禁不掉

Cookie

session

存儲在客戶端

存儲在服務器端

兩種類型

l 有聲明週期,活在ie窗口內存中

l 無聲明週期

兩種實現方式

l 依賴於cookie

l url重寫

父路徑不能訪問子路徑的cookie

同一個session的窗口共享一個session

典型應用:

l 3個月不用再登陸

l 購物車(http://www.china-pub.com/)

典型應用:

l 用戶登陸

l 購物車也可以用session實現。·

不可靠

可靠

8. application (ServletContext)的概念

9. jsp初學者容易犯的錯誤

n WEB-INF子目錄下面不能放置html jsp 等文件

n 不能直接打開

10. jsp/servlet連接數據庫時要注意的事項

拷貝數據庫驅動的jar包到apache-tomcat-6.0.14\webapps\Test\WEB-INF\lib文件夾

確認數據庫已經啓動

用戶名、密碼應該正確

11. <%! <%區別

12. 如何解決ie緩存問題

13. TestErr.jsp / ErrPage.jsp 

l 不太穩定,有的時候不好使:

n 先不寫這句話:<%@page errorPage="ErrPage.jsp"%>

n Ie不行,firefox

14. <%@includejsp:include的區別

<%@ include file="date.jsp" %>

Directive(編譯指令)相當於在編譯期間的命令 page include taglib

<jsp:include page="date.jsp" flush="true"/>

Action(動作指令)在運行期間的命令

以標籤的形式存在 jsp:useBean jsp:include

Jsp:forward jsp::plugin

include編譯指令是在JSP程序的轉換時期就將file屬性所指定的程序內容嵌入,然後再編譯執行;

編譯之前在jsp轉換成servlet的時候就已經把它包含進來了,包含的時機是在轉換的時候

include指令在轉換時期是不會被編譯的,只有在客戶端請求時期如果被執行到纔會被動態的編譯載入

不是說一訪問包含它的頁面就會被轉換和編譯,只有執行到它的時候才把它轉換成servlet並編譯

當前文件和被包含的jsp生成的是一個統一的servlet,被編成一個統一的字節碼文件,只生成一個class文件

多個

Include不能帶參數,編譯之前傳參數無意義

<jsp:include>可以

包含頁面和被包含頁面訪問的是同一個request對象,兩者contentType必須設置的一樣。

雖然是不同的request對象,但被包含頁面的request可以取得包含它的頁面的參數,並添加了自己的參數

常用

不常用

15. forwardsendredirect的區別

Sendredirect  response.sendredirect 

Forward  <jsp:forward page="..jsp"/>

是不同的request,相當於在地址欄敲點內容又回了一下車,跟原來的request一點關係沒有

雖然是不同的對象,但是,可以取到上一個頁面的內容

send後的語句會繼續執行,除非return

forward後的語句不會繼續發送給客戶端

速度慢

速度快

需要到客戶端的往返,可以轉到任何頁面,

不只侷限於應用服務器的內部一些個servletjsp,其它的路徑都沒問題。往客戶端發了一條指令,相當於命令一下瀏覽器把地址改一下再點提交。前一個頁面的參數全都丟失了,相當於你直接在地址欄敲了新的地址。

服務器內部轉換,只侷限在應用服務器的內部。

地址欄有變化

地址欄沒有變化

可以傳參數,直接寫在url後面

可以傳參數

/代表的是http://127.0.0.1/  

代表的域名的根路徑,而不是webapp的根路徑

<%response.sendRedirect("/test/ServletToJSP");%>

<form action="/test/ServletToJSP">

<a href="/test/ServletToJSP">test</a>

/代表的是http://127.0.0.1/test

this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
.forward(req, resp);

並且只能以/開頭

常用

常用

16. <jsp:useBean scope = page|request|session|application>

17. jsp內置對象: out request response session application exception

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章