**總體回顧_重要知識點 [web基礎day24] *
阿新 • • 發佈:2019-01-02
總體回顧:
Servlet – 實際應用很多,很重要。
* jsp本質是一個servlet,所以它不是前臺的,而是後端的內容。 * 展示給使用者的最好是html介面,效率高,完成的效果好,jsp可以用來公司管理系統,方便獲取 * web四大域物件: * ServletContext:生命週期是在伺服器啟動建立,關閉銷燬(正常關閉) * Session:瀏覽器第一次訪問伺服器servlet,如果servlet呼叫getSession則建立。 * 關閉方式: 1.預設時間 30分鐘 2.seesion.invilidata() 3.伺服器正常關閉 * HttpServletRequest:響應瀏覽器訪問web伺服器。(它是一個一次請求,瀏覽器觸發,伺服器接收。) * PageContext:在jsp頁面的一個類似於ServletContext的域物件,在html頁面不使用 * Servlet * 介面Servlet * 生命週期方法: 1.init //只執行一次 2.service //每次訪問都會被執行 3.destory //只執行一次 * 繼承結構體系: Servlet-> GenericService->HttpServlet(分發在httpservlet中,將七種方法進行判斷) * http請求: 七種 get/post/put/delete * Servlet配置方式: 1.xml /WEB-INF/WEB.xml * <servlet> * <servlet-name>demo</servlet-name> (標識名) * <servlet-class>com.itheima.itcast.Servlet</servlet-class> (全路徑) * </servlet> * <servlet-mapping> * <servlet-name>demo</servlet-name> * <url-patter>/demo</url-pattern> (虛擬路徑) * </servlet-mapping> 2.註解 @WebServlet("/a") 3.url-pattern路徑配置 * /a * /user/a * /user/* * *.do !! * /*.do(不能這麼操作)
Request:
1.獲取請求引數 * getParameter("引數名") * getParameterMap("引數名") * getParameterValues("引數名") 2.獲取ServletContext * getServletContext() 3.作為域物件進行存取資料 * setAttribute("鍵",值) * getAttribute("鍵") * removeAttribute("鍵") 4.能請求進行轉發 * request.getRequestDispatcher("/服務端絕對訪問路徑").forward(request,response) 5.獲取請求行: * getRequestUri() * getRequestUrl() * getMethod() * getCOntextPath() 6.獲取請求頭 * getHeader("請求頭") * 路徑問題: * 相對路徑(不以/開頭) * ./ 當前目錄 * ../上一級目錄 * 絕對路徑(用於請求轉發) * 服務端絕對路徑(請求轉發) * /訪問資源路徑 * 瀏覽器端絕對路徑 * /虛擬目錄/訪問資源路徑 * response(響應) * 設定響應行: * setStatus(狀態碼) 1.200:連線正常 2.404:客戶端異常 3.500:伺服器端異常 4.其他的還有:302,304... * 設定響應頭 setHeader("響應頭","頭的內容") setContentType("text/html;charset=utf-8") * 設定響應內容 getWriter().Writer("") getOutputStream().write("".getBytes()) * 重定向 sendRedirect("/瀏覽器端絕對路徑") * 重定向和請求轉發的區別: 1.路徑不一樣 2.位址列(轉發不會發生改變,重定向會發生改變) 3.請求次數 4.共享資料 * 域物件/url重寫 --將url地址拼接攜帶資料,參照response課程中重點圖
會話技術 :1.多次請求和響應 – 面試經常考,很重要。
1.Cookie: * cookie來自伺服器,儲存在瀏覽器端。 * Cookie相關api: * 傳送: Cooke c=new Cookie("名字","值") -- 建立cookie c.setMaxAge(10); //單位是秒 -- 設定存活時間 c.setPath("/虛擬目錄") -- 這個的意思是cookie的作用範圍。 * 如果要設定cookie的有效訪問路徑,必須以虛擬目錄開頭。 response.addCookie(cookie物件) 傳送cookie * 接收: Cookie[] cookies=request.getCookies(); cookie.getName() cookie.getValue() * cookie原理: 請求頭: Cookie 響應頭: Set-Cookie 2.Session 基於伺服器會話技術 * session依賴於cookie(set-cookie/請求頭cookie) * session建立 HttpSession session=request.getSession (一旦第一次執行該方法,會建立一個Session,Session物件會提供一個id,該id會以cookie的形式回寫到瀏覽器JSESSIONID) 格式: Set-Cookie:JSESSIONID=2C23FF5CF6ABF728... * 面試題:訪問a.html/a.jsp/a.servlet 誰會在第一次訪問的時候就會建立Session。 * 答:html不會建立Session。Servlet不會建立Session。jsp第一次訪問一定會建立Session * 域物件: * setAttribute("鍵",值) * getAttribute("鍵") * removeAttribute("鍵") * Seesion的持久化: * 鈍化活化 * 通過JSESSIONID=2C23FF5CF6AB...的cookie來進行持久化,setMaxAge() * session的銷燬: * 預設銷燬時間 30分鐘 * 伺服器正常關閉 * sessioninvilidate()
ServletContext
1.域物件:
* setAttribute("鍵",值)
* getAttribute("鍵")
* removeAttribute("鍵")
2.獲取檔案的mime型別
* getMimeType("檔名.字尾名")
3.獲取檔案的絕對磁碟路徑
* getRealPath("檔名稱")
* 檔名稱
* web目錄
getRealPath("1.txt")
* web-inf
getRealPath("/web-inf/1.txt")
* src
getRealPath("/web-inf/classes/1.txt")
jsp/el/jstl指令碼
1. jsp:
* 常用標籤:
* <% %>
* <%=%>
* <%!%>
* jsp指令:
* page
* taglib
* include
* jsp註釋:
* <%-- 內容 --%>
* jsp 9大內建物件
* application
* session
* request
* pageContext
* config
* response
* page
* out
* exception
2.el表示式:
* ${pageContext.request.contextPath}
* jstl:taglib/jar
* <c:if>
-- test
* <c:foreach>
-- 普通for迴圈
* var
* begin
* end
* step
* varStatus
-- 增強for迴圈
* var
* items
* varStatus
動態代理:
1.建立:
* Proxy.new ProxyInstance(類載入器,實現介面,new invocationHander(){
* @Override
* public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
* //具體增強
* //增強前執行功能
* Object result=method.invoke(外部的物件,args);
* //方法執行後的增強
* return result;
* }
* })
案例
* 通過ajax去傳送非同步請求
* 獲取要提交的表單的引數:
* var params=$("#表單").serialize();
* 在查詢資料庫的時候,如果查不到指定物件的內容則會直接報錯,可以手動抓取。
* 先關閉掉tomcat再clean,不然關不掉,因為tomcat檔案在target中,如果tomcat一直在執行則無法clean;
* tomcat很多版本,tomcat在預設處理編碼集的時候預設utf-8,而tomcat7 的在處理的時候處理的編碼集是iso-8859-1(拉丁文編碼)
* String encodeName=URLEncoder.encode(name,"iso-8859-1") -- 將name編碼為%E5%BC%E4...
* String encodeName=U
* domain中的user類和資料庫中的user表必須一致。不能少。