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

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

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

    J2EE,Documentum,GWT,EJB學習路程

    為了所愛的,和愛我的人努力

     

    J2EE總結--Servlet技術 我的所有隨筆屬于個人總結,有不足之處請回復指出

     

    Servlet技術:

    1.       什么是servlet

    Servlet是一個java類,是一個提供基于協議請求和響應的java類;

    2.       它的生命周期

          1.       啟動服務器時就會實例化并加載servlet實例;

          2.       進行初始化:自動調用initServletConfig servletConfig)方法;

          3.       Servlet就緒:調用serviceHttpServletRequest requestHttpServletResponse response)方法(其   中     service   就是dopost()或doget()方法),這是客戶提交時,自動調用的;

          4.       Servlet銷毀:自動調用調用distory()

       注意:在實例化并加載servlet后,步驟二和四只調用一次,而步驟三,是在每次客戶端發出請求時都調用;

    3.       怎樣部署一個servlet

    Servlet類是必須在web.xml中注冊才能使用的,例如,我有一個MyServlet類:

    必須在web.xml中注冊:

    <web-app>

    //-----------------------Servlet聲明----------------------

               <servlet>

                     <servlet-name>myServlet</servlet-name>

                     <servlet-class>servletPakage.MyServlet</servlet-class>

          </servlet>

    //------------------------Servlet注冊(鏡像)---------------

               <servlet-mapping>

                     <servlet-name>myServlet</servlet-name>

                     <url-pattern>myServletURL</ url-pattern >

          </servlet-mapping>

    </web-app>

    這樣你在提交時的Url地址就是/myServletURL了;

    4.       什么是serviceHttpServletRequest requestHttpServletResponse response)方法?

    其中serviceHttpServletRequest requestHttpServletResponse response)方法包括兩種:

          1.       dogetHttpServletRequest requestHttpServletResponse response)方法:

          這種方法被稱為顯式提交方法,主要原因是它的得到的參數放在url中,可以被看到,所以稱為顯示提      交;

          例如:有個表單:

          <form action=”/myServletURL?name=todd” method=”get”>

          </form>

          這種方法其request獲得的參數就是你看到的name=todd

          例如:String s=request.getParameter(“name”);

                其結果s=”todd”;

          2.       dopostHttpServletRequest requestHttpServletResponse response)方法:

             這種方法被稱為隱式提交方法,它的參數不會在url里得到,而是在請求數據體得到參數;

             例如:有個表單:

                <form action=”/myServletURL” method=”post”>

                         <input type=”text” name=”name” value=”todd”>

             </form>

          這種方法其request獲得的參數就是表單體的name=todd

                例如:String s=request.getParameter(“name”);

                其結果s=”todd”;

    5.       什么是ServletContext?

             ServletContext是一個接口,是WebApplication的視圖,它的作用域時Application,它能訪問Application中的初始化參數和屬性,它不局限域一個Servlet,它屬于整個Application

    ServletContext的初始化參數:

    web.xml中:

    <web-app>

        <context-param>

    <param-name>myBlog</param-name>

    <param-value>www.tkk7.com/todd841026</param-value>

    </context-param>

    </web-app>

     這樣在application中任意一個Servlet中可以得到這個參數,

    例如:ServletContext sc = getServletContext ();

              String s = sc.getInitParameter(“myBlog”);

    那么結果s就是”www.tkk7.com/todd841026”

    6.       什么是ServletConfig

    是單獨的Servlet初始化配置;

    例如:在web.xml

    <web-app>

                <servlet>

                     <servlet-name>myServlet</servlet-name>

                     <servlet-class>servletPakage.MyServlet</servlet-class>

          </servlet>

          <init-param>

                <param-name>cache</param-name>

                <param-value>off</param-value>

    </init-param>

    </web-app>

    在這個Servlet中:ServletConfig sc = getServletConfig();

                                String s = sc.getInitParameter(“cache”);

    那么結果s就是off”;

    7.       Servlet怎樣處理多線程

    在默認的情況下,單個Servlet實例是可以處理多個并發請求的,所以要考慮到多線程的共享同一對象的問題,例如:

    //做個Servlet中產生了多少個object對象一個變量的例子

    Private int count = 0 ;

    Public void dopost(HttpServletRequest request,HttpServletResponse response){

               Object object = new Object() ;

               count++ ;

               System.out.println(“count = ” + count) ;

    }

    當有5個用戶提交數據時,因為Servlet是處理多線程的,所以可能出現,第四個用戶的程序已經執行了count++,而第五個用戶剛執行完Object object = new Object() ,就會出現數據不一致性,因為當前有5object對象,但是count卻是4

    解決方案一:

    Private boolean flag = false

    Private int count = 0 ;

    Public void dopost(HttpServletRequest request,HttpServletResponse response){

               synchronized(flag){

                        Object object = new Object() ;

                        count++ ;

    }                

               System.out.println(“count = ” + count) ;

    }

    用同步程序塊解決多線程的問題,這樣在同一時刻就只能有一個訪問該程序塊了;

    解決方案二:

    Private int count = 0 ;

    Public void dopost(HttpServletRequest request,HttpServletResponse response)

    Implements SingleThreadModel{

               Object object = new Object() ;

               count++ ;

               System.out.println(“count = ” + count) ;

    }

    實現SingleThreadModel接口,可以解決多線程問題;

    8.       什么是servlet過濾器?

    也是一個java類,只是它實現了Filter這個接口;

    9.       servlet過濾器的生命周期;

    初始化:自動調用init(FilterConfig config)方法

    執行:自動調用doFilter()方法;

    銷毀:自動調用destory()方法;

    10.   servlet過濾器有什么用途?

          個人認為目前自己用到的Servlet過濾器的主要用途:是安全性檢查

             當然過濾器在Servlet之前也可以修改請求,要是在Servlet之后,也可以修改響應; 

    11.   servlet過濾器怎樣部署?

    web.xml中:

    <web-app>

        <filter>

          <filter-name>myFilter</filter-name>

          <filter-class>filterPage.MyFilter</filter-class>

    </filter>

    <filter-mapping>

          <filter-name>myFilter</filter-name>

          <url-pattern>/Todd/*</url-pattern>

    </filter-mapping>

    </web-app>

    這樣就是說要訪問WEB-INF下的Todd包下的jspServlet的話,就必須要先通過myFilter這個類;

    posted on 2007-04-08 13:31 田亮 閱讀(4449) 評論(6)  編輯  收藏 所屬分類: J2EE總結

    評論

    # re: J2EE總結--Servlet技術 2007-04-08 15:38 山風小子

    好久沒有復習基礎知識了,借此溫故而知新,謝啦:)  回復  更多評論   

    # re: J2EE總結--Servlet技術 2007-04-08 17:51 good

    非常好,寫出自己見解!  回復  更多評論   

    # re: J2EE總結--Servlet技術 我的所有隨筆屬于個人總結,有不足之處請回復指出 2007-04-09 10:39 BeanSoft

    不錯, 高手就是一步步學出來的!  回復  更多評論   

    # re: J2EE總結--Servlet技術 我的所有隨筆屬于個人總結,有不足之處請回復指出 2007-04-13 17:35 fox

    寫得非常好呀  回復  更多評論   

    # re: J2EE總結--Servlet技術 我的所有隨筆屬于個人總結,有不足之處請回復指出 2007-04-18 11:23 sunnt

    寫得很詳細呀,嘻嘻!  回復  更多評論   

    # re: J2EE總結--Servlet技術 我的所有隨筆屬于個人總結,有不足之處請回復指出 2007-09-02 22:40 dsfdf

    大哥,你寫錯拉一個地方啊。
    <url-pattern>myServletURL</ url-pattern >應為:
    <url-pattern>/myServletURL</ url-pattern >
    你少了一個“/”

      回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    MyHome

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲精午夜久久久久久| 成人免费福利电影| 久久久久一级精品亚洲国产成人综合AV区 | 在线观看免费a∨网站| 亚洲资源最新版在线观看| 亚洲免费人成视频观看| 亚洲男人的天堂在线| 国产卡二卡三卡四卡免费网址| avtt天堂网手机版亚洲| 成人性生交大片免费看无遮挡 | 久久综合图区亚洲综合图区| 免费视频精品一区二区三区| 中文字幕亚洲精品| 日韩免费a级毛片无码a∨| 亚洲码和欧洲码一码二码三码 | 亚洲av无码av制服另类专区| 99久久人妻精品免费一区| 久久精品国产亚洲AV忘忧草18 | 亚洲色成人网站WWW永久| 日本在线免费观看| 亚洲国产模特在线播放| 香蕉高清免费永久在线视频 | 亚洲免费电影网站| 老牛精品亚洲成av人片| 亚洲人妻av伦理| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 妇女自拍偷自拍亚洲精品| 久久久久亚洲AV无码专区网站| 免费91麻豆精品国产自产在线观看| 亚洲网址在线观看| 国产精品无码一二区免费| 久青草视频97国内免费影视| 亚洲成电影在线观看青青| 免费在线观看黄网| 日本免费人成视频在线观看| 亚洲av日韩专区在线观看| 亚洲AV一宅男色影视| 毛片基地免费视频a| 久久久久免费视频| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲无人区午夜福利码高清完整版 |