<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I want to fly higher
    programming Explorer
    posts - 114,comments - 263,trackbacks - 0

        因為太長時間沒有做java web開發了,所以寫這邊隨筆用來簡單回顧一下jsp/java web的相關知識

    1.tomcat中server.xml,<Context>表示一個web應用上下文路徑;
     docBase:指明一個Web應用所在的物理文件夾名
      path:定義Web應用的上下文路徑名,上下文路徑第1個字符一般為“/”。
     reloadable:此屬性取值為“true”時,表示讓Catalina監控Web應用中WEB-INF\classes文件夾和WEB-INF\lib文件夾下文件的變化
    2.tomcat默認的虛擬主機是localhost,它默認的Web應用發布文件夾是webapps。在此文件夾下發布的Web應用通過URL即可直接訪問,不需要在<Context>中進行配置
    3.Servlet將java代碼與網頁設計混合寫在一起,不利于維護。JSP網頁版面的設計與維護,比Servlet要直觀和容易。JSP頁面最終會被JSP服務器編譯成一個Servlet程序來運行。
    4.JSP采用“先編譯后執行”的工作方式。一個JSP網頁首次被訪問時,Web服務器執行編譯操作.(多線程運行)
    5.<% 符合Java語言的Java語句 %>
    6.jsp執行過程:
             servlet
    request->*.jsp->jsp parser->*.java->jsdk(servlet分析器)->*.class->執行->response
    7.html注釋<!-- --> jsp注釋<%-- --%>
     jsp聲明<%!...%>,聲明后的變量,方法或類都是jsp編譯后的Servlet的類內成員
    8.Tomcat把<%  %>標記內的Java代碼段放在Servlet實現類 _jspService()方法的try{}內,所以在<%%>內定義的變量屬于局部變量,并且作用范圍僅限于try{}內。如果有多個<%  %>標記,則按出現的先后順序轉譯到try{}內。
    9.jsp表達式<%= expression %>,編譯后Servlet為:out.println(expression);
    10.jsp指令元素<%@ 指令元素  屬性="值"  %>,主要包括三個:include、page和taglib;主要供JSP容器使用,為JSP容器提供相關的頁面屬性信息,用于指示JSP容器如何正確地翻譯代碼,或者執行特定的操作
     include:文件包含,是在JSP容器把JSP網頁翻譯成Servlet程序時,將指定文本文件的內容嵌入Servlet程序中,替換include指令
       <%@ include file="" %> 靜態綁定
     page:用于設置當前JSP頁面的屬性
      默認情況下已經被加入到當前JSP頁面的類,包括java.lang.*;、java.servlet.*;、java.servlet.jsp.*; java.servlet.http.*;
      isThreadSafe,表示生成的servlet是否是線程安全的;如果true的話,表示線程安全,JSP容器會以多線程方式運行JSP頁面
    11.jsp動作組件:JSP動作組件是一些XML語法格式的標記,被用來控制Web容器的行為
     <jsp:include>動態包含
     <jsp:forward>使程序從當前頁面跳轉到另一個目標頁面運行,瀏覽器地址欄不會發生任何變化;forward動作語句后的代碼不能執
     行(已經帶著request請求跳轉到其他頁面了)
     <jsp:param>,用來用于傳遞參數信息
     <jsp:plugin>,插入一個applet或Bean
     < jsp:setProperty>:設置JavaBean的屬性
     < jsp:getProperty>:輸出某個JavaBean的屬性
     < jsp:useBean>:尋找或者實例化一個JavaBean
    12 jsp隱含對象
     簡化程序設計,JSP規范定義了常用的8個隱含對象(implicit objects),這些隱含對象不需要在JSP頁面中用new關鍵字來創建,而是
     由Servlet容器來創建與管理,并傳遞給JSP頁面的Servlet實現類使用。
     out(JspWriter),requeset(HttpServletRequest),response(HttpServletResponse),session(HttpSession),application(ServletContext),
     exception(Throwable),config(ServletConfig),page(Object),pageContext(PageContext)

     out.print()/out.println();out.write()?PrintWriter?

     request.getParameter()/getParameterNames()/getParameterValues()/
     兩個JSP/Servlet程序間要交換數據時,可通過request作用范圍變量來實現(getAttribute/setAttribute)
     [forward方式跳轉,會傳遞request,超鏈接與在瀏覽器地址欄輸入該頁面地址的訪問方式一樣,都是重新發送一個請求到鏈接頁面]
     getRequestDispatcher("''),轉發器,獲得目標資源的轉發器,通過轉發器將當前Servlet程序的request和response對象轉發給目標資源,并跳轉至目標資源上運行程序,這樣,目標資源就可通過request對象讀取上一資源傳遞給它的request屬性
     removeAttribute()/setCharacterEncoding()/getProtocol/getRemoteAddr()/

     response.flushBuffer()/setBufferSize()/getWriter(PrintWriter)/setContentType()/setCharacterEncoding()/sendError()/setHeader()/sendRedirect("")/
     response通過文件輸出流實現下載

     application對象被同一個上下文(同一個web應用)中的所有jsp/servlet程序共享,tomcat服務器開啟的時候即被創建;
     application訪問web.xml中配置的<Context-param>/getInitParameter("")/attribute相關方法/log()/

     config常用于給一個Servlet程序傳送初始化參數

     exception,JSP頁面在運行時發生異常,系統會生成一個異常對象

     page對象表示“當前”Servlet程序對象,類似于Java中的“this”關鍵字

     pageContext獲取其他隱含對象/轉發跳轉或包含
    13 會話跟蹤-
     Cookie/response.addCookie()/request.getCookies()/
     URL重寫實現參數傳遞/隱藏表單域實現參數傳遞/

     HTTP協議是一種無狀態的協議,客戶端每次打開一個Web 頁面,它就會與服務器建立一個新的連接,發送一個新的請求到服務器,服務器處理客戶端的請求,返回響應到客戶端,并關閉與客戶端建立的連接。當客戶端發起新的請求,那么它重新與服務器建立連接,因此服務器并不記錄關于客戶的任何信息。

     session-session會話,通常把從登錄進入系統到注銷退出系統之間所經歷的時間,稱為一次session通信周期;jsp中的Session會話:一次會話由客戶打開一個瀏覽器開始到關閉瀏覽器或退出會話結束,用戶重新打開1個瀏覽器并重新輸入url,或訪問2個web應用都是開啟不同的會話;session隱含對象由Web服務器創建,并存儲在服務器端;一次會話會創建一個session對象,在一次會話期 間,web應用內的所有程序共享一個session對象
     attribute相關方法/isNew()/getId()/invalidate()/setMaxInactiveInterval()/
    14 Servlet/ServletConfig/->GenericServlet->HttpServlet
     servlet工作流程-(1)客戶機將請求發送到服務器。
        (2)服務器上的Web容器實例化Servlet。
        (3)Web容器將請求信息發送到 Servlet。
        (4)Servlet 創建一個響應,并將其返回到Web容器。
        (5)Web容器將響應發回客戶機。
        (6)服務器關閉或Servlet空閑時間超過一定限度時,調用destory()方法退出。
      生命周期-創建實例->init()->service()->destroy()
      init()-兩種方式init()/init(ServletConfig config){super.init(config)}
      sevice(HttpServletRequest req,HttpServletResponse resp)

      Servlet體系結構是建立在Java多線程機制之上的,當兩個或多個線程同時訪問同一個Servlet時,可能會發生多個線程同時訪問同一資源的情況,數據可能會變得不一致。對于Servet中成員變量,并發訪問時需要采取線程同步的措施確保線程安全

      destroy()-服務器刪除servlet實例調用,程序員可以覆寫它完成,關閉數據庫連接等清理工作
    15.Servlet API-javax.servlet和javax.servlet.http
     javax.servlet.GenericServlet--獨立于協議
     javax.servlet.HttpServlet,--嵌入了對Http協議的支持

     把數據傳遞給客戶端
      在Servlet中,可以通過直接向輸出流寫入數據來生成HTML頁面;使用PrintWriter把數據發送回客戶端
      PrinteWriter out=response.getWriter();out.println(“<HTML>Inside HTML</HTML>”);
      在開始進行任何輸出之前,必須使用setContentType()方法指定MIME類型
      response.setContentType(“text/html,charset=gb2312”);
    16.訪問servlet,需要在web.xml進行配置

    1<servlet>
    2   <servlet-name>First</servlet-name>
    3  <servlet-class>com.servlet.FirstServlet</servlet-class>
    4 </servlet>
    5 <servlet-mapping>
    6   <servlet-name>First</servlet-name>
    7  <url-pattern>/first</url-pattern>
    8 </servlet-mapping>
    9


     17.WEB-INF\classes目錄存放Servlet類文件
     WEB-INF\lib目錄存放Web應用程序所使用的Java庫文件(JAR文件)
    18.web.xml中<servlet>定義的<init-param>可以通過servlet的getInitParameter()方法或者getServletConfig().getInitParameter()方法
    19.過濾器Filter鏈式
     request->filter1->filter2....->目標資源
     response <-   ..filter<-

     javax.servlet.Filte接口
      init()

    1doFilter(ServletRequest request, ServletResponse response,FilterChain chain)過濾器的業務邏輯代碼在doFilter()方法內實現 
    2  {     程序段1
    3   chain.doFilter(request, response);
    4   程序段2
    5  }


      destroy()
     javax.servlet.FilterConfig接口
     javax.servlet. FilterChain接口
     
     web.xml配置

     1<filter>
     2  <filter-name>
     3  <filter-class>
     4  <init-param>
     5 </filter>
     6 <filter-mapping>
     7  <filter-name>
     8  <url-pattern>//需要過濾的url
     9  <dispatcher>//過濾請求類型
    10 </filter-mapping>

     

     過濾器的過濾執行次序與他在web.xml中定義的次序一致
    20 偵聽器主要偵聽Servlet容器中的事件,所偵聽的事件發生后,容器激活偵聽器,執行預定的操作。偵聽器偵聽的事件主要是JSP
    隱含對象application、session、request對象上發生的事件,主要有隱含對象的創建與銷毀事件,相關作用范圍變量的創建、修改和銷
    毀事件。
     web.xml:

    1<listener>
    2  <listener-class>
    3 </listener>

     

     javax.servlet.ServletRequestListener接口,主要偵聽request隱含對象的創建與銷毀事件
     ServletRequestAttributeListener接口,偵聽request屬性的變化
     javax.servlet.http.HttpSessionListener接口,偵聽上下文中session對象的創建與銷毀事件
     javax.servlet.http. HttpSessionAttributeListener接口,偵聽session屬性的變化
     javax.servlet.ServletContextListener接口,偵聽Web應用Sevlet上下文的初始化事件和銷毀事件
     javax.servlet.ServletContextAttributeListener接口 ,偵聽application屬性事件
    21.JavaBean
     javabean即pojo類,plain old java objects,簡單的java對象
     jsp中使用JavaBean
      1.<% %>內new
      2.jsp動作<jsp:useBean><jsp:setProperty><jsp:getProperty>
       注意userBean中class(找不到則創建新的)和type的區別,還有scope
     利用外部的javabean,文件上傳,email,poi等
    22.數據庫訪問-jdbc
     tomcat\conf\context.xml中配置數據庫連接池<Context>
     javax.sql.DataSource

    1java.sql.Blob blob = rs.getBlob("");
    2 byte[] bytes = blob.getBytes(,);


    23.MVC
     struts1.x
      controller-ActionServlet/Action
      struts-config.xml
      ActionServlet讀取Struts-config.xml中的ActionMapping對象,每個ActionMapping對象實現了一個請求到一個Action對象之間的映
      射。Action對象會調用javabean完成業務操作.
     流程:login.jsp->submit->login.do->web.xml->servlet(ActionServlet,struts自帶)->讀取struts-config.xml->action/actionform
     (表單bean)->execute()
    24.EL與JSTL
     EL表達式引入EL表達式語言目的之一是為JSP頁面計算;訪問和打印數據提供方便,盡可能減少JSP頁面中的Java代碼,使JSP頁
     面更簡潔、更易于開發和維護

     EL表達式語言的基本語法為: ${表達式}
     EL表達式通過“.”算符訪問JavaBean中的屬性,${JavaBean名.屬性名}

     JSTL的全稱是JSP標準標記庫(JSP Standard Tag Library,JSTL),它是SUN公司為簡化JSP頁面設計而提出的一種技術規范;

     *.properties文件稱為資源文件,在資源文件中,以“key=value”的形式存儲一個變量及它的值,一行寫一對“key=value”;方便消息的集中存儲和管理 ;方便消息的國際化

    posted on 2011-12-26 23:20 landon 閱讀(2727) 評論(4)  編輯  收藏 所屬分類: Program

    FeedBack:
    # re: jsp/java web基礎知識回顧
    2011-12-27 11:46 | lishl
    好,總結的很細。謝謝  回復  更多評論
      
    # re: jsp/java web基礎知識回顧
    2011-12-28 17:23 | landon
    皮毛而已,共同學習。@lishl
      回復  更多評論
      
    # re: jsp/java web基礎知識回顧
    2011-12-29 17:19 | 阿童沐
    很不錯的,有很多細節我竟然都不太清楚...轉了...  回復  更多評論
      
    # re: jsp/java web基礎知識回顧
    2012-01-10 16:17 | 開啟
    學習了 不錯的總結  回復  更多評論
      
    主站蜘蛛池模板: 毛片视频免费观看| 欧美日韩亚洲精品| 国产va免费精品| 在线观看免费宅男视频| 久久久久亚洲AV无码永不| 亚洲国产成人VA在线观看 | a视频在线观看免费| 四虎国产精品永久免费网址 | 啦啦啦高清视频在线观看免费 | 亚洲国产精品乱码一区二区| 黄色三级三级免费看| 亚洲成人免费网站| 国产国拍精品亚洲AV片| 青青青视频免费观看| 亚洲欧洲久久久精品| 日产久久强奸免费的看| 亚洲精品乱码久久久久久按摩 | 亚洲粉嫩美白在线| 国产人成免费视频| 中文字幕免费观看视频| 亚洲日韩区在线电影| 最近最新中文字幕完整版免费高清 | 天堂在线免费观看中文版| 亚洲av无码片vr一区二区三区| 国产精品冒白浆免费视频| 免费的黄色网页在线免费观看| 国产亚洲AV无码AV男人的天堂 | 免费看又爽又黄禁片视频1000| 免费无码婬片aaa直播表情| 亚洲精品乱码久久久久久自慰 | 国产精品午夜免费观看网站| 亚洲AV无码久久精品色欲| 欧美a级在线现免费观看| 一级毛片免费不卡直观看| 久久精品国产亚洲AV电影 | 国产成人A亚洲精V品无码 | 免费人人潮人人爽一区二区| 亚洲成人在线电影| 国产精品久久香蕉免费播放| 免费播放在线日本感人片| 亚洲中文字幕一区精品自拍|