JavaWeb複習小知識點(一)
阿新 • • 發佈:2019-01-01
1.在JAVAWEB開發中,經常使用絕對路徑訪問js/css檔案:
訪問絕對路徑的方法為:${pageContext.request.ContextPath}/ <%=request.getContextPath()%>
2.在Servlet對映到的URL中也可以使用*萬用字元,但是隻能有兩種固定的格式:一種格式是"*.副檔名",另一種格式 是以正斜槓(/)開頭並以"/*"結尾
3.如果某個Servlet的對映路徑僅僅為一個正斜槓(/),那麼這個Servlet就成為當前Web應用程式的預設Servlet。 凡是在web.xml檔案中找不到匹配的<servlet-mapping>元素的URL,它們的訪問請求都將交給預設Servlet處理, 也就是說,預設Servlet用於處理所有其他Servlet都不處理的訪問請求
4.當多個客戶端併發訪問同一個Servlet時,web伺服器會為每一個客戶端的訪問請求建立一個執行緒,並在這個執行緒上 呼叫Servlet的service方法,因此service方法內如果訪問了同一個資源的話,就有可能引發執行緒安全問題。
若資源為區域性變數,則不會引起安全問題,若為全域性問題,則會引發安全問題。使用同步鎖可以解決安全問題,但 是同步鎖會導致不放棄鎖,所有的其他資源都在等待鎖。還可以使用SingleThreadModel介面。但是在Servlet API 2.4中,已經將SingleThreadModel標記為Deprecated(過時的)
5.在Servlet的配置檔案的web.xml中,可以使用一個或多個<init-param>標籤為servlet配置一些初始化引數:
<init-param>
<param-name>name</param-name>
<param-value>gacl</param-value>
</init-param>
獲取引數:ServletConfig的類的例項物件呼叫getInitParameter();(getInitParameterName()獲取所有初始化 引數)
Enumeration<String> e = config.getInitParameterNames();
while(e.hasMoreElements()){
String name = e.nextElement();
String value = config.getInitParameter(name);
response.getWriter().print(name + "=" + value + "<br/>");
}
6.ServletContext物件:web啟動的時候,會為每一個web應用程式建立一個ServletContext物件 獲取: this.getServletConfig()/(this).getServletContext())
應用: 1.多個Servlet實現資料共享
7./的訪問區別:
1)代表web工程:a.ServletContext.getRealPath(String path)獲取資源的絕對路徑
Get請求:url後面帶的引數():超連結、重定向
String name = request.getPara...("name");
String strName = new String(name.getByte("iso-8859-1"),"GBK");
post請求:最開始處將請求的資料設定為“UTF-8”就行了,輸入如下語句: request.setCharacterEncoding(“UTF-8”);
9.Cookie:在程式程式碼中並沒有使用setMaxAge方法設定cookie的有效期,
所以當關閉瀏覽器之後,cookie就失效了,要想在關閉了瀏覽器之後,cookie依然有效,
那麼在建立cookie時,就要為cookie設定一個有效期。(將cookie存貯到硬碟上) 將cookie的有效期設定為0,命令 瀏覽器刪除該cookie
要想在cookie中儲存中文,那麼必須使用URLEncoder類裡面的encode(String s, String enc)方法進行中文轉碼, 例如:
Cookie cookie = new Cookie("userName", URLEncoder.encode("孤傲蒼狼", "UTF-8"));
在獲取cookie中的中文資料時,再使用URLDecoder類裡面的decode(String s, String enc)進行解碼,例如:
URLDecoder.decode(cookies[i].getValue(), "UTF-8")
11.註釋:在JSP中,註釋有:
顯式註釋:直接使用HTML風格的註釋:<!- - 註釋內容- ->
隱式註釋:直接使用JAVA的註釋://、/*……*/
JSP自己的註釋:<%- - 註釋內容- -%>
區別:HTML的註釋在瀏覽器中檢視原始檔的時候是可以看得到的,而JAVA註釋和JSP註釋在瀏覽器中檢視 原始檔時是看不到註釋的內容的
12.JavaBean是一個遵循特定寫法的Java類,它通常具有如下特點:
這個Java類必須具有一個無參的建構函式
屬性必須私有化。
私有化的屬性必須通過public型別的方法暴露給其它程式,並且方法的命名也必須遵守一定的命名規範。
13.<jsp:setProperty>標籤用於設定和訪問JavaBean物件的屬性。
name:javaBean物件名
property:物件的例項名
param:作為傳參時的引數名
value:值。
訪問絕對路徑的方法為:${pageContext.request.ContextPath}/ <%=request.getContextPath()%>
2.在Servlet對映到的URL中也可以使用*萬用字元,但是隻能有兩種固定的格式:一種格式是"*.副檔名",另一種格式 是以正斜槓(/)開頭並以"/*"結尾
3.如果某個Servlet的對映路徑僅僅為一個正斜槓(/),那麼這個Servlet就成為當前Web應用程式的預設Servlet。 凡是在web.xml檔案中找不到匹配的<servlet-mapping>元素的URL,它們的訪問請求都將交給預設Servlet處理, 也就是說,預設Servlet用於處理所有其他Servlet都不處理的訪問請求
4.當多個客戶端併發訪問同一個Servlet時,web伺服器會為每一個客戶端的訪問請求建立一個執行緒,並在這個執行緒上 呼叫Servlet的service方法,因此service方法內如果訪問了同一個資源的話,就有可能引發執行緒安全問題。
若資源為區域性變數,則不會引起安全問題,若為全域性問題,則會引發安全問題。使用同步鎖可以解決安全問題,但 是同步鎖會導致不放棄鎖,所有的其他資源都在等待鎖。還可以使用SingleThreadModel介面。但是在Servlet API 2.4中,已經將SingleThreadModel標記為Deprecated(過時的)
5.在Servlet的配置檔案的web.xml中,可以使用一個或多個<init-param>標籤為servlet配置一些初始化引數:
<init-param>
<param-name>name</param-name>
<param-value>gacl</param-value>
</init-param>
獲取引數:ServletConfig的類的例項物件呼叫getInitParameter();(getInitParameterName()獲取所有初始化 引數)
Enumeration<String> e = config.getInitParameterNames();
while(e.hasMoreElements()){
String name = e.nextElement();
String value = config.getInitParameter(name);
response.getWriter().print(name + "=" + value + "<br/>");
}
6.ServletContext物件:web啟動的時候,會為每一個web應用程式建立一個ServletContext物件 獲取: this.getServletConfig()/(this).getServletContext())
應用: 1.多個Servlet實現資料共享
2. 獲取web.xml配置的初始化引數
3.實現請求轉發
4.讀取資原始檔:7./的訪問區別:
1)代表web工程:a.ServletContext.getRealPath(String path)獲取資源的絕對路徑
b. 在伺服器端forward到其他頁面
c. 使用include指令或者<jsp:include>標籤引入頁面
2)代表webapps目錄(瀏覽器用):sendRediret()請求重定向,超連結跳轉,From表單,js指令碼和css引用
8.亂碼問題:Get請求:url後面帶的引數():超連結、重定向
String name = request.getPara...("name");
String strName = new String(name.getByte("iso-8859-1"),"GBK");
post請求:最開始處將請求的資料設定為“UTF-8”就行了,輸入如下語句: request.setCharacterEncoding(“UTF-8”);
9.Cookie:在程式程式碼中並沒有使用setMaxAge方法設定cookie的有效期,
所以當關閉瀏覽器之後,cookie就失效了,要想在關閉了瀏覽器之後,cookie依然有效,
那麼在建立cookie時,就要為cookie設定一個有效期。(將cookie存貯到硬碟上) 將cookie的有效期設定為0,命令 瀏覽器刪除該cookie
要想在cookie中儲存中文,那麼必須使用URLEncoder類裡面的encode(String s, String enc)方法進行中文轉碼, 例如:
Cookie cookie = new Cookie("userName", URLEncoder.encode("孤傲蒼狼", "UTF-8"));
在獲取cookie中的中文資料時,再使用URLDecoder類裡面的decode(String s, String enc)進行解碼,例如:
URLDecoder.decode(cookies[i].getValue(), "UTF-8")
10.表單重複提交的三種場景:
1)重複點選提交按鈕,解決:JavaScript判斷設定標誌只提交一次/點選提交按鈕之後按鈕不可點選。
2)重新整理之後提交按鈕,點選後退提交 解決:session設定令牌機制11.註釋:在JSP中,註釋有:
顯式註釋:直接使用HTML風格的註釋:<!- - 註釋內容- ->
隱式註釋:直接使用JAVA的註釋://、/*……*/
JSP自己的註釋:<%- - 註釋內容- -%>
區別:HTML的註釋在瀏覽器中檢視原始檔的時候是可以看得到的,而JAVA註釋和JSP註釋在瀏覽器中檢視 原始檔時是看不到註釋的內容的
12.JavaBean是一個遵循特定寫法的Java類,它通常具有如下特點:
這個Java類必須具有一個無參的建構函式
屬性必須私有化。
私有化的屬性必須通過public型別的方法暴露給其它程式,並且方法的命名也必須遵守一定的命名規範。
13.<jsp:setProperty>標籤用於設定和訪問JavaBean物件的屬性。
name:javaBean物件名
property:物件的例項名
param:作為傳參時的引數名
value:值。