1. 程式人生 > >JavaWeb複習小知識點(一)

JavaWeb複習小知識點(一)

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實現資料共享

    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:值。