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

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

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

    posts - 5,  comments - 0,  trackbacks - 0
     

    復(fù)習(xí)提綱

    Servletweb服務(wù)器相關(guān)概念(了解)

    tomcat配置(能熟練操作)

    Servlet基礎(chǔ)(重點,必須熟記于心)

    a.Servlet的調(diào)用過程

    b.Servlet接口

    c.servlet的生命周期

    d.MVC框架

      e.Servlet的控制流轉(zhuǎn)

      f.Servleturl-pattern

    Session(會話)和Cookie(熟記于心)

       Servlet過濾器和監(jiān)聽器(熟練使用)

       五數(shù)據(jù)庫連接池(了解)

    一、Servletweb服務(wù)器相關(guān)概念

    Servlet,服務(wù)器端的小程序,它是相對于Applet而言的,Applet是客戶端小程序。

    Servlet,能接受來自網(wǎng)絡(luò)的請求(form表單,以及其他的請求),并對不同請求作出不同的響應(yīng)

    servlet是運行在web容器中, web容器可以控制Servlet對象的生命周期,控制請求由Servlet對象處理。

     

    web服務(wù)器,這里的服務(wù)器不是硬件概念,而是軟件,常用的web服務(wù)器有 TomcatJboss等,我們所用到的Tomcat是一個開源的服務(wù)器,Tomcat是一個用java語言編寫的web服務(wù)器,所以需要有相應(yīng)的java運行環(huán)境,也就是JVM,還要配置tomcat的具體路徑。

     

    Tomcat的配置

     

    JAVA_HOME=/XXX/XXX/JDK路徑,bin的上一層目錄)

    CATALINA_HOME=/XXXX/XXX

    tomcat的絕對路徑 windows X:\xxx\xxx  linux /home/tarena/tomcat5

     

    Tomcat啟動:$ CATALINA_HOME/bin/startup.sh startup.bat

    Tomcat關(guān)閉:$ CATALINA_HOME/bin/shutdown.sh shutdown.bat

    Tomcat測試啟動是否成功:http://localhost:8080/http://127.0.0.1:8080/可以訪問到tomcat的主頁就是啟動成功了。(這里建議使用127.0.0.1

     

    tomcat可以識別的資源只有在webapps文件夾下,webapps也就是web應(yīng)用文件夾,webapps下的文件夾這些文件夾中存放的就是web應(yīng)用,web應(yīng)用是有格式規(guī)范的:

    XXX應(yīng)用

           |- *.jsp *.html *.js *.css *.jpg

           |- WEB-INF (受保護(hù)資源)

                  |- classes *.class

                  |- lib *.jar

                  |- web.xml

     

     

    tomcat服務(wù)器中,訪問應(yīng)用下的資源可以在端口號后加上web應(yīng)用文件夾的名字就可以看到資源

    http://localhost:8080/xxx應(yīng)用/xxxx.html,靜態(tài)頁面只能放在web應(yīng)用的文件夾下,不能夠放在WEB-INF文件夾下,WEB-INF文件夾中的資源是受保護(hù)的,不能夠通過網(wǎng)絡(luò)訪問到。

     

    Servlet基礎(chǔ)

     

    Servlet,可以實現(xiàn)動態(tài)的輸出頁面,可以針對不同的請求作出不同的響應(yīng),可以實現(xiàn)頁面的跳轉(zhuǎn),Servlet可以充當(dāng)MVC模式中的控制層,而且servlet的優(yōu)點也在于此。

     

    web服務(wù)器會在web應(yīng)用/WEB-INF/classes文件夾搜索要加載的class文件,所以我們寫的class文件要放在web應(yīng)用/WEB-IN/classes文件夾下。

     

    設(shè)置servlet的類和訪問的方式

     

    web.xml文件的配置,一個web.xml中可以配置多個Servlet

    <!DOCTYPE web-app

        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

        "http://java.sun.com/dtd/web-app_2_3.dtd">

     

    <web-app>

    <servlet>

    <servlet-name>servlet的名字</servlet-name>

    <servlet-class>servlet包名類名</servlet-class>

    </servlet>

    <servlet-mapping>

    <servlet-name>servlet的名字(要和servlet標(biāo)簽中的相同)</servlet-name>

    <url-pattern>指定servlet相對于應(yīng)用目錄的路徑</url-pattern>

    </servlet-mapping>

    </web-app>

     

    catalina.sh run 帶控制臺啟動tomcat服務(wù)器。

     

    a.Servlet的調(diào)用過程

     

    1,用戶通過瀏覽器向web服務(wù)器發(fā)送請求

       http://serverip:port/apppath

    2,服務(wù)器為用戶定位資源

       靜態(tài)資源:/a.html  /a/b.html (這里的路徑是針對web應(yīng)用文件夾目錄)讀文件并把內(nèi)容發(fā)送到客戶端

       動態(tài)資源:解析web.xml定位Servlet類的名字

                 裝載類(WEB-INF/classes|WEB-INF/lib/*.jar

                 創(chuàng)建該對象的實例

                 Servlet ser=(Servlet)(Class.forName("servle的類名")).newInstance();

                //我們寫的Servlet一定要實現(xiàn)Servlet接口或者繼承實現(xiàn)了Servlet接口的類

                ser.service(request,response);

     

    <servlet-mapping>

    <servlet-name>servlet的名字(要和servlet標(biāo)簽中的相同)</servlet-name>

    <url-pattern>指定servlet相對于應(yīng)用目錄的路徑</url-pattern>

    </servlet-mapping>

    url-parttern的配置,這個url就是Servlet的虛擬路徑,可以使用相對路徑或者是絕對路徑。

    /xxx/xxx(絕對路徑) ,xxx(相對路徑),盡量使用絕對路徑

    訪問servlet的方法

    http://serverip:port/應(yīng)用文件夾名/url-pattern

     

    http的請求

    get請求,post請求。

    get請求在發(fā)出請求時會把參數(shù)寫在地址欄上,而post請求不會把要發(fā)送的參數(shù)顯示在地址欄上。

     

    <form method="get" action="/應(yīng)用名/url-pattern">

    ......

    </form>

     

     

    b.Servlet接口

     

    servlet接口的實現(xiàn)類中的service()方法,在繼承HttpServlet類時,如果沒有覆蓋父類的service()方法,那么父類的service()方法會根據(jù)請求類型不同的會分別調(diào)用覆蓋的doGet()doPost()方法,如果響應(yīng)兩種請求的動作相同,那么可以直接覆蓋service()方法。如果覆蓋了

    doGet()doPost()方法之一,那么就會只對一種請求作出響應(yīng)。在瀏覽器的地址欄操作按回車鍵,或者是熱連接,都是get請求,formmethod屬性如果不指定,默認(rèn)為get請求。

     

    我們可以通過ServletRequest對象或HttpServletRequest對象的方法來獲取請求中傳送的參數(shù)。

    getParameter(String name)方法,可以獲得form表單中指定名字的參數(shù),多參數(shù)同名時,只取一個。

    getParameterNames(),可以獲得一個迭代器Enumeration,通過這個迭代器,來獲得form表單中參數(shù)的名字。

    getParameterValues(String name)獲得指定的所有同名參數(shù)的值。

     

    get請求,會將參數(shù)顯示在瀏覽器的地址欄上,其顯示格式,在地址之后會以問號開始,以'&'分隔參數(shù),可以通過HttpServletRequest對象的getQueryString()方法來獲得get請求的參數(shù)值。

     

    ServletRequest對象的getInputStream()方法可以獲得一個由Socket得來的輸入流,可以使用這個流來實現(xiàn)文件的上傳。getReader()方法可以直接獲取post請求的參數(shù)。

     

    ServletContext對象是Servlet的上下文對象,這個對象是在服務(wù)器啟動時創(chuàng)建的,他可以看作是

    一個應(yīng)用的對象,他可以看作是包含Servlet,管理Servlet的對象。

     

    c.servlet的生命周期

    遵守servlet規(guī)范的類,就可以通過服務(wù)器產(chǎn)生對象(反射機(jī)制),并處理請求。

     

    servlet接口中的方法

    實現(xiàn)Servlet接口

    public class TestServlet implements Servlet {

           ServletConfig config;

           public void init(ServletConfig config) throws ServletException {

                  this.config=config;

                  //這個ServletConfig對象是由服務(wù)器生成,也就是由系統(tǒng)提供的,

         通過他可以獲得啟動信息。ServletConfig對象和Servlet是一一對應(yīng)的。

                  //這個方法是在Servlet創(chuàng)建后調(diào)用的。如果要是用到ServletConfig對象是一              定要為對象賦值。

           }

     

           public ServletConfig getServletConfig() {

                  return this.config;

           }

     

           public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

                  ...;//這個方法是用來處理請求的核心方法

           }

     

           public String getServletInfo() {

                  return "....";//這個是用來寫Servlet信息的,用來寫作者,以及版本信息

           }

     

           public void destroy() {

                  ...;//這個方法是用來銷毀Servlet對象的

           }

     

    }

     

    HttpServletGenericServlet都實現(xiàn)了Servlet接口。

    HttpServlet中的service(HttpServletRequest requestHttpServletResponse response)方法是通過service(ServletRequest request,ServletResponse response)方法的調(diào)用來實現(xiàn)對請求的處理。

     

    HttpServletRequest對象中的方法setAttribute(String name,Object o),可以使用HttpServletRequest對象來攜帶信息,并且可以通過getAttribute(String name)方法來獲得攜帶的信息,這兩個方法類似于map中的存取方法,setAttribute方法給數(shù)據(jù)加上標(biāo)識,getAttribute方法則是通過這個標(biāo)識來獲取數(shù)據(jù),可以使用這一對方法的前提就是要保證是同一個請求對象(HttpServletRequest

     

    HttpServletResponse

    HttpServletResponse是用來回應(yīng)用戶的操作的,它可以實現(xiàn)頁面的重定向。

    sendRedirect(String location),是用這個方法指定要訪問的servlet,其參數(shù)是Servleturl-pattern

    如果使用了重定向,就不會保留原有的request對象。

     

     

    Servlet的生命周期分為四個階段

    1,創(chuàng)建Servlet對象,通過服務(wù)器反射機(jī)制創(chuàng)建Servlet對象,第一次請求時才會創(chuàng)建。(默認(rèn))

    2,調(diào)用Servlet對象的init()方法,初始化Servlet的信息,init()方法只會在創(chuàng)建后被調(diào)用一次

    3,響應(yīng)請求,調(diào)用service()或者是doGet()doPost()方法來處理請求,這些方法是運行的在多線程狀態(tài)下的。

    4,在長時間沒有被調(diào)用或者是服務(wù)器關(guān)閉時,會調(diào)用destroy()方法來銷毀Servlet對象。

     

    可以通過web.xml文件可以配置Servlet對象的創(chuàng)建時間,

    <load-on-startup>數(shù)字</load-on-startup>,表示服務(wù)器啟動時創(chuàng)建,并依照數(shù)字大小按順序創(chuàng)建,只有重要的Servlet才會是用這個設(shè)置。

     

    可以通過<init-param>標(biāo)簽來配置初始化參數(shù),可以用ServletConfig對象的

    getInitParameter(String name)方法來得到參數(shù)。

     

    <init-param>

    <param-name>...</param-name>

    <param-value>...</param-value>

    </init-param>

     

    多線程下所操作的變量,如果操作的是一個變量,且兼有讀寫操作,就要考慮加上同步,但同步不能亂加,否則會造成死鎖問題。

     

    init()destroy()方法都是運行在單線程下的。

     

    GenericServlet類中的有參和無參的init方法。

      public void init(ServletConfig config)throws ServletException

        {

            this.config = config;

            init();

        }

     

        public void init()throws ServletException

        {

           .....;//覆蓋了的無參的init()方法,會在Servlet創(chuàng)建時調(diào)用有參的init方法時

                  也會被調(diào)用。

        }

     

    HttpServlet類中參數(shù)不同的service方法的調(diào)用關(guān)系。

    public void service(HttpServletRequest req,HttpServletResponse res){

           .......;

           .......;

    }

    public void service(ServletRequest req, ServletResponse res)

            throws ServletException, IOException

        {

            HttpServletRequest request;

            HttpServletResponse response;

            try

            {

                request = (HttpServletRequest)req;

                response = (HttpServletResponse)res;

            }

            catch(ClassCastException e)

            {

                throw new ServletException("non-HTTP request or response");

            }

            service(request, response);

    }

     

    Servlet的資源訪問

     

    如果在Servlet中要使用到其他的資源,例如連接數(shù)據(jù)庫的驅(qū)動,可以放在tomcat服務(wù)器的文件夾下的common/lib下,這個目錄中存放的是一些在服務(wù)器啟動時就會加載的公共資源,一般在需要在應(yīng)用中使用特定的資源,也就是jar文件,那么不要放在common/lib下,如果common/lib下的jar文件過多會導(dǎo)致服務(wù)器啟動緩慢,應(yīng)用中使用到的jar文件要放在WEB-INF/lib下,就可以被服務(wù)器找到了。

     

    如果要在Servlet中是用Hibernate的訪問數(shù)據(jù)庫的方法,那么就需要把hibernate需要的jar文件,放到WEB-INF/lib下就可以了,Xxxxxx.hbm.xml還是和實體類放在一起。hibernate.cgf.xml文件,要放在WEB-INF/classes下就可以了。

     

    d.MVC框架

     

    Model,模型層,這一層一般是進(jìn)行數(shù)據(jù)庫訪問,并且封裝對象,這一層中也存放對業(yè)務(wù)處理的代碼(業(yè)務(wù)層) 與數(shù)據(jù)庫交互的代碼(DAO)和實體類的信息,可以使用JavaBean來完成業(yè)務(wù)層,使用JDBC Hibernatejpa完成DAO層的功能。

     

    Ctrl,控制層,用來處理請求和調(diào)用模型層中相應(yīng)的方法,這一層是用來控制請求的響應(yīng)的,現(xiàn)在我們是使用Servlet來實現(xiàn)這一層,不過一般是會用開源的MVC框架來實現(xiàn)這層,例如strutswebwork或者是SpringMVC框架。

     

    View,表現(xiàn)層,他只用來顯示數(shù)據(jù)和收集必要數(shù)據(jù),收集數(shù)據(jù)的一般是form表單,不過要保證數(shù)據(jù)的正確性要是用JavaScript做前臺驗證,而且后臺驗證也是必不可少的,html JSP就是用來表現(xiàn)、顯示數(shù)據(jù)的。

     

     

     

    e.Servlet的控制流轉(zhuǎn)

     

    ServletContextServlet上下文對象,在每個Servlet中都會有一個ServletContext的引用,這個ServletContext是一個全局的對象,每個應(yīng)用中只有一個ServletContext對象。

     

    HttpServlet中的getServletContext()方法,獲得ServletContext對象。

     

    ServletContext類的getRequestDispatcher(String path)方法獲得一個RequestDispatcher對象,并且跳轉(zhuǎn)到指定的ServletgetRequestDispatcher(String path)方法中的參數(shù)就是path,就是指定跳轉(zhuǎn)的Servleturl-pattern

     

    RequestDispatcher類的forward(ServletRequest request, ServletResponse response) 方法,可以把請求對象轉(zhuǎn)發(fā)給其他的Servlet

     

     

     

     

    f.Servleturl-pattern

     

    url-pattern可以使用以下三種方式

    1,確切路徑匹配,也就是給出確定的路徑 xxx/xxxx

    2,模糊路徑匹配,也就是指給出一部分路徑,xxxx/*,他會匹配確定路徑,也就是xxxx/a 或者是xxxx/b都是可以匹配的

    3,擴(kuò)展名匹配,也就是會匹配擴(kuò)展名,只要是擴(kuò)展名相同就匹配,xxx.xxx *.xx

     

    注意:擴(kuò)展名匹配和確切路徑匹配不能放在一起使用,也就是不能寫成 xxxx/xxxx/xxx.xx,但是可以用

    *.xxx

     

    ServletRequest對象的三個返回路徑的方法

    getContextPath()獲得應(yīng)用的路徑,用動態(tài)獲取應(yīng)用路徑

    getServletPath()獲得Servlet路徑,也就是form中的action,如果使用確切路徑那么就會是這個Servlet配置的url-pattern

    getPathInfo()使用模糊路徑匹配時會返回匹配模糊部分。

     

    注意:在htmlform表單的action中,如果使用了擴(kuò)展名匹配,一定要寫明/xxxxx/xxx.xx,不要寫成/xxxx/*.xx,在formaction中要盡量使用絕對路徑,也就是要用 應(yīng)用名/xxx.xx或者應(yīng)用名/xxx

     

     

    三、Session(會話)和Cookie

     

    Session對象用來解決客戶端發(fā)送多個請求時用戶請求信息的存儲問題,但是他和ServletRequest對象是不同的,他會在有需要時創(chuàng)建,但是他的生命周期會比請求對象要長。Session對象的生命周期也是有限制的,如果長時間的沒有訪問,就會銷毀掉Session對象,可以通過Session對象的

    setAttribute(String name, Object o) getAttribute(String name)來存取數(shù)據(jù)信息。Session是用戶級的對象。

     

    public void service(ServletRequest request,ServletResponse response){

     

           String user = request.getParameter("user");

            String pass = request.getParameter("pass");

           HttpSession session = request.getSession(true);//使用請求對象來創(chuàng)建Session

            session.setAttribute("username", user);

            session.setAttribute("passwd", pass);

    }

     

     

    getSession(true)就表示如果Session不存在就創(chuàng)建一個新的Session,并把Session的標(biāo)識SessionID寫到Cookie中,如果存在就是用這個SessiongetSession(false)就是在Session不存在時不會創(chuàng)建新Session而是返回null。如果使用getSession()方法,就等同于getSession(true)

     

    注意:ServletRequest對象適用于傳輸大量的數(shù)據(jù),因為其生命周期比較短,可以有效的節(jié)省內(nèi)存資源。

    大數(shù)據(jù)量的傳輸或保存不適合使用Session空間。

     

    Cookie,是記錄用戶的Session信息,也可以記錄用戶的請求信息,也就是SessionID,來分辨哪一個用戶是否登陸過。在每次登陸時,還會將Cookie發(fā)送回服務(wù)器端,Cookie是用來跟蹤Session的。

     

    public void service(ServletRequest requestServletResponse response){

     

           String user = request.getParameter("user");

            String pass = request.getParameter("pass");

           Cookie userCookie = new Cookie("user", user);

            userCookie.setMaxAge(60 * 60 * 24 * 365);//設(shè)置Cookie的最大有效期,秒為單位

            Cookie passCookie = new Cookie("pass", pass);

            passCookie.setMaxAge(60 * 60 * 24 * 365);

            response.addCookie(userCookie);

            response.addCookie(passCookie);

     

    }

     

    面試題:描述CookieSession的作用,區(qū)別和各自的應(yīng)用范圍,Session工作原理。

           cookie機(jī)制采用的是在客戶端保持狀態(tài)的方案

           session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案。

          

           失效不同:

                  session

                         A.程序調(diào)用HttpSession.invalidate()

                         B.距離上一次收到客戶端發(fā)送的sessionid時間間隔超過了session的最大有效時間

                         C.服務(wù)器進(jìn)程被停止

                  Cookie 會一直存放在客戶端機(jī)器上,除非超出Cookie 的生命期限。

     

           Session是由應(yīng)用服務(wù)器維持的一個服務(wù)器端的存儲空間,用戶在連接服務(wù)器時,會由服務(wù)器生成一個唯一的SessionID,用該SessionID 為標(biāo)識符來存取服務(wù)器端的Session存儲空間。而SessionID這一數(shù)據(jù)則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一 SessionID提交到服務(wù)器端,來存取Session數(shù)據(jù)。這一過程,是不用開發(fā)人員干預(yù)的。所以一旦客戶端禁用Cookie,那么Session也會失效。

     

     

    四、Servlet過濾器和監(jiān)聽器

     

    Servlet過濾器(Filter

     

    過濾器是用于過濾Servlet的請求和響應(yīng),過濾器是存在于請求和被請求資源之間的。

    過濾器就像當(dāng)于一個中間件,請求要經(jīng)過過濾器,然后過濾器才去掉用ServletServlet的響應(yīng)也會被過濾器截獲并作相應(yīng)的處理。

     

    Filter是一個接口,要寫一個自己的Filter就只能實現(xiàn)Filter接口。

    Filter也有自己的生命周期,他的生命周期和Servlet比較相似,也是會先調(diào)用init()方法,然后再調(diào)用核心的處理過濾的方法doFilter(),這個方法中可定義了過濾規(guī)則,然后是destory()方法銷毀Filter對象。

     

    dofilter(ServletRequest request,ServletResponse response,FilterChain chain)

    這個是過濾的核心方法,FilterChain的方法doFilter(ServletRequest request, ServletResponse response)也就是用過濾后的請求調(diào)用資源的方法,如果不寫這個方法,也就算不會去調(diào)用相應(yīng)的資源。

     

    Filter的配置

     

    Filter的配置和Servlet相似。

           <filter>

                  <filter-name>SessionFilter</filter-name>

                  <filter-class>alan.filter.SessionFilter</filter-class>

           </filter>

           <filter-mapping>

                  <filter-name>SessionFilter</filter-name>

                  <url-pattern>/protected/*</url-pattern>

                  <!--這里的url-pattern就是要過濾的Servleturl-pattern-->

                  <dispatcher>request</dispatcher>

                  <dispatcher>forward</dispatcher>

                  <dispatcher>include</dispatcher>

                  <!--上面的三個是過濾的范圍-->

           </filter-mapping>

     

    Servlet監(jiān)聽器

    以下是3Listener接口。

    ServletRequestListener

    HttpSessionListener

    ServletContextListener

    這三個監(jiān)聽器接口,分別監(jiān)聽Servlet3種比較重要的對象的創(chuàng)建和銷毀。這三個接口中分別有監(jiān)聽該對象創(chuàng)建和銷毀事件的方法,服務(wù)器本身就是事件源。

     

    listener的配置

    <listener>

           <listener-class>alan.servlet.listener.AlanContextListener</listener-class>

            <!--listener-class也就是實現(xiàn)Listener接口的類-->

    </listener>

     

    Servlet中的重要對象(只針對應(yīng)用)

     

     

                         數(shù)量                生命周期             是否線程安全

    ServletContext        1                   全局的                不安全

                                       只有在應(yīng)用關(guān)閉時才銷毀     需要加同步訪問

     

    HttpSession        和用戶的                局部的                不安全

                       數(shù)量相同         只在有效時間內(nèi)存在         需要加同步訪問

     

    ServletRequest       多個                   局部的               線程安全

    (HttpServletRequest)                 只在service()doGet()

                                          doPost()中存在

     

    五、數(shù)據(jù)庫連接池(了解)

    數(shù)據(jù)庫連接池,也就是在沒有程序取連接時,可以事先創(chuàng)建好連接,連接池是一個運行在多線程環(huán)境下,提供數(shù)據(jù)庫連接的程序,在程序使用完數(shù)據(jù)庫連接后關(guān)閉數(shù)據(jù)庫連接的動作不再是關(guān)閉連接的操作,而是把數(shù)據(jù)庫連接放回連接池,也就是這個數(shù)據(jù)庫連接已經(jīng)是空閑狀態(tài),就可以供其他的程序取用了。

     

     

    配置Tomcat服務(wù)器的數(shù)據(jù)源

     

    tomcat下的conf目錄中的tomcat-users.xml文件中配置的是tomcat的用戶

    <?xml version='1.0' encoding='utf-8'?>

    <tomcat-users>

      <role rolename="manager" description=""/>

      <role rolename="admin"/><!--配置管理員-->

      <user username="manager" password="123" fullName="" roles="manager"/>

      <user username="admin" password="123" roles="admin"/>

      <!--配置管理員的用戶名和密碼,并且標(biāo)明是管理員roles="admin"-->

    </tomcat-users>

       <Resource

          name="jdbc/oracle" 配置JDNI的名字

          type="javax.sql.DataSource" 綁定資源的類型

          password="sd0605"

          driverClassName="oracle.jdbc.driver.OracleDriver" 驅(qū)動名

          maxIdle="1"最大連接數(shù)

          maxWait="-1"等待時間,配置為-1就是無限等待,只到有空閑連接為止

          username="sd0605"

          url="jdbc:oracle:thin:@192.168.0.39:1521:TARENADB"

          maxActive="3" 最大活動連接數(shù)/>

     

    以下的就是從連接池去取數(shù)據(jù)庫連接的代碼

     

    public static Connection getConnection(String JNDIName)

           {

                  Connection conn = null;

                  try

                  {

                         Context initCtx = new InitialContext();

                         Context envCtx = (Context) initCtx.lookup("java:comp/env");

                         //這個是在tomcat下默認(rèn)綁定ContextJNDIname

                         DataSource ds = (DataSource) envCtx.lookup(JNDIName);

                         conn = ds.getConnection();

                  } catch (NamingException ne)

                  {

                         ne.printStackTrace();

                  } catch (SQLException se)

                  {

                         se.printStackTrace();

                  }

                  return conn;

           }

     

    posted on 2009-03-31 19:42 faye 閱讀(572) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 色网站在线免费观看| 无码久久精品国产亚洲Av影片| 在线免费视频一区| 99热在线精品免费全部my| 18pao国产成视频永久免费| 久久99热精品免费观看动漫| 美女视频黄的免费视频网页 | 中文字幕亚洲日本岛国片| 亚洲精品无码你懂的网站| 亚洲精品NV久久久久久久久久| 亚洲性久久久影院| 国产亚洲成av人片在线观看| 久热综合在线亚洲精品| 久久亚洲精品无码aⅴ大香| 亚洲手机中文字幕| 亚洲激情视频图片| 亚洲精品国产精品| 黄色免费在线观看网址| 男女一边摸一边做爽的免费视频| 国产精品网站在线观看免费传媒| 精品国产污污免费网站| 91精品全国免费观看含羞草| 999久久久免费精品国产| 四虎成人免费网站在线| 免费人成视频在线观看视频 | 18国产精品白浆在线观看免费| 妞干网免费视频观看| 免费成人午夜视频| 亚洲精品无码成人AAA片| 久久久国产精品亚洲一区| 亚洲91精品麻豆国产系列在线| 精品久久久久久久久亚洲偷窥女厕| 日韩大片在线永久免费观看网站| japanese色国产在线看免费| 久久一本岛在免费线观看2020| 成人免费无码大片A毛片抽搐| 免费在线观看a级毛片| 国产亚洲精品自在久久| 亚洲国产成人精品激情| 色屁屁在线观看视频免费| 无码国产精品一区二区免费3p|