亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? day03.txt

?? servlet上課內容
?? TXT
字號:
Servlet_day03   langna  2007-9-25   星期二
回顧: 
       1, 如何編寫線程安全的servlet? 唯一的,成員變量,靜態變量, 寫的時候加鎖,讀的時候不需要;
       2, 如何讀取請求中的參數? 
 作業:
       1, 計數器: 訪問此servlet的次數:
       int current=0;
        synchronized(this)
        {
          count++;
	  current=count;
        }
        out.println(current);
        
        指定字符集:告訴瀏覽器我這里有特殊字符;
        response.setContentType("text/html;charset=gbk"); 
        
       2,  getParameterMap:  key -- String 
                                        value-- String[] 
       
 一,  ServletInputStream / ServletOutputStream
      
      getReader:調了這個系統就不會再給你封裝了,getParameter就得不到了;
      getParameter:調了這個系統把參數給你封裝好了, 就不能調getReader了;
     
      xml文件:  version="2.4" ; 2.4 之前用的是dtd約束的;  2.4之后用的是Schema;
     
      虛擬路徑也叫servlet路徑;
     
     getContextPath: 應用路徑
     將serv-app  改為 servlet-app ;
     1)一個 servlet 可以部署在任何應用中; 因為虛擬路徑是從應用之后開始寫的;
     2)對于form表單中的action的路徑有影響;因為這里的路徑是從應用路徑開始寫的;
         解決的方法是在:action中改成動態的路徑;將靜態頁面變成servlet;
         將整個頁面寫到doGet()請求中;將路徑寫成動態的; 
     3)將action中的應用路徑去掉;改成相對路徑; 
        相對路徑:相對的是當前請求; serv-app/request/form.html;  虛擬路徑是: /request/parameter
                                                   action="parameter" ;
        
    ServletPath: 虛擬路徑
    *.do 通配模式;一個servlet服務多個請求
    MVC模式: 多個servlet之間通信;
    
二, 分布式:
    數據庫服務器; C/S; 
    B/S:  web browser -- web server -- DB
    java中支持分布式的技術;
        數據庫;jdbc;
        RMI; 遠程方法調用;
        兼容c++ ; corba語言; 
        IDL; 接口訪問語言;
    
    JDBC的編程步驟: (安裝驅動)
    1, 加載驅動;
    2, 建立連接;
    3,創建statement;
    4,執行sql語句;
    5,處理結果集;
    6,釋放資源;    
   
   將數據庫的去定ojdbc14.jar 放到 common/lib 包下; 這樣會在tomcat啟動的時候會找到
   這個驅動啊!
   
   init(); 配置init 參數; 不需要同步;單線程的;
   service()中只讀也不需要同步;
   
   servlet 從數據庫中讀數據封裝成html發送到客戶端;
   
   create: 創建記錄,增加
   read: 讀記錄,
   update:更新記錄
   delete:刪除記錄
   
   例子:
   
   1,建表: (依賴于數據庫的)
              create table  ln_user(
                    id  number(4) primary key,
                    name varchar2(20)  not null,
                    birthday  date,
                    gender    varchar2(6), 
                    phone      number(20)
               );
               保存為credbs.sql ; 一般都用sqlplus建表,除非用臨時表才在程序中建;
   2,建一個序列:
               create sequence  ln_seq; 
     insert  into  ln_user  values(ln_seq.nextval,'langna',sysdate-24,'femail',1376);
     to_date('2007-9-3','yyyy-mm-dd')  
   
   3, 數據庫的異常在servlet方法中捕獲并向客戶端拋出servlet異常;
       在servlet中寫jdbc代碼,訪問數據庫;
       
       做靜態原型頁面;再變成動態的;
       IO異常也應該往外拋, 不是面向最終用戶的;是被調的;
       
   4, 配初始化參數:
        <servlet>
            <servlet-name>UserServlet</servlet-name>   
            <servlet-class>com.tarena.UserServlet</servlet-class>
            
            <init-param>
                <param-name>jdbcurl</param-name>
                <param-value>jdbc:oracle:thin:@192.168.0.201:1521:tarena</param-value>
            </init-param>
            <init-param>
                <param-name>driver</param-name>
                <param-value>oracle.jdbc.driver.OracleDriver</param-value>
            </init-param>
            <init-param>
                <param-name>username</param-name>
                <param-value>xjh0704</param-value>
            </init-param>
            <init-param>
                <param-name>password</param-name>
                <param-value>xjh0704</param-value>
            </init-param>
        </servlet>
       
  5,  將不同的技術分層:  jdbc和servlet分層 ; UserService
  6,  jdbc 連接數據庫, 讀配置文件dbconfig.properties; 放到classes文件夾中;(相對于類路徑)
        
        driverClassName=oracle.jdbc.driver.OracleDriver
        dburl=jdbc:oracle:thin:@192.168.0.201:1521:tarena
        username=openlab
        password=open123
        
    用類裝載器來定位資源:  
    InputStream in = UserService.class.getClassLoader()
                                                .getResourceAsStream("config/dbconfig.properties"); //classpath--classes下
    Properties  prop=new  Properties();
    prop.load(in);
    in.close();
    prop.getProperties("dburl");
    
    對eclipse而言,項目的根是類路徑; 而不是當前路徑; 
    在命令行下,將文件的路徑追加到類路徑下; 也可以找到相關的資源;
    
    將jdbc相同的代碼抽取出來,做一個工具包; JdbcUtil { }
    將讀配置文件放到靜態代碼塊中;只讀一次就行;在靜態代碼塊中拋ExceptionInInitializerError異常;
     private static Properties config = new Properties();
     static{
           try{
                    InputStream in = ConnectionFactory.class.getClassLoader()
                                                           .getResourceAsStream("config/dbconfig.properties");
                    config.load(in);
                    in.close();
                }catch(IOException  e){
                        e.printStackTrace();
                        throw new ExceptionInInitializerError();
                }
        }
三, MVC

  1,解析請求:控制作用 C   UserActionServlet :  將showUser()去掉
  2,處理請求:業務  M       UserService / User / JDBCUtil 
  3,返回客戶端結果:視圖  V  UserListViewServlet : 將showUser的代碼放到這里的doGet方法里;
                                           (JSP)
   一個servlet怎么調另外的servlet;  上下文=應用;
   ServletContext: 全局對象,在同一個應用中只有一個,任何一個servlet都可以訪問它;
   
   在UserActionServlet轉向UserListViewServlet: 
  {
       Collection users = userServices.findUsers();
       request.setAttribute("users", users);//將要傳的數據放到請求中;
       ServletContext application = getServletContext();
       RequestDispatcher dispatcher = application
                                        .getRequestDispatcher("/user/list/view");
                                        //傳的是目標servlet的虛擬路徑(與web.xml中的一致);
       dispatcher.forward(request, response);
   }
   
   UserListViewServlet
   {
        Collection students = (Collection)request.getAttribute("users");
        
   }
   
   M: jdbc , javabeans , EJB
   V:  servlet/jsp
   C:  servlet
   
   起到了一個松耦合的作用; 

關于配置: 
 1,  oracle用的是8080,把端口占用了;   
       改tomcat的端口號: 
       apache-tomcat-5.5.20\conf\server.xml\Connector  8080-->8088/80(不需要加端口)
 2,  web.xml 加一個空格; 修改后
     context.xml  <Context  reloadable="true"> //會自動監視classes下的文件; 
 3, 寫一個腳本: 
     主目錄下,建一個bin 自動加到path下 ;   echo $path 
     vi  .bash_prifile  path=$HOME/bin:  默認有這個路徑;即這個目錄下的可執行命令可以在任何目錄下執行;
     
     工程 --  abc , src-- 源文件: HelloworldServlet.java, classes -- 類路徑
     
     在bin/servletc.sh寫上: -cp=-classpath 
     javac -d  $HOME/abc/classes  -cp  $CATALINA_HOME/common/lib/servlet-api.jar  $1(腳本運行時的第一個參數)
    
     在src目錄下直接編譯就行:
     servletc.sh   HelloworldServlet.java
     
     將tomcat 應用的類編譯時的所有內容寫到sh文件中,生成的字節碼文件放到想放的地方 : 
      javac -d  $CATALINA_HOME/webapps/abc/WEB-INF/classes   
                             -cp  $CATALINA_HOME/common/lib/*.jar    $1 
       或者:
        javac -d  $1   -cp  $CATALINA_HOME/common/lib/*.jar   $2
       $1  :  目標路徑
       $2 :   源文件
  4,  在eclipse中配置數據庫和服務器:
      
     1)  eclipse-jee-europa-win32; 
       databases--> SQL-JDBCConnection--> name: oracle20@oracle ---> 
       選擇一個驅動---> oracle9(oracle-thin)---> driver-name: oracle14-->
       jar包-- add jar-- ojdbc14.jar ---> 將屬性寫上
     2)  
       建一個 web 工程, 建的時候有一個runtime 配置,將tomcat安裝目錄導入即可;
       部署描述符: 
       dynamic web moudle -- 2.4 
       java-- 5.0
       
       content-root : 應用名
       src: 直接寫類或建一個servlet; 可以直接配置servlet的初始化參數和url
       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产欧美在线| 免费成人在线影院| 美女久久久精品| 972aa.com艺术欧美| 欧美成人官网二区| 亚洲国产裸拍裸体视频在线观看乱了| 狠狠色丁香久久婷婷综| 欧美久久高跟鞋激| 亚洲视频在线一区| 成人教育av在线| 久久久不卡网国产精品一区| 午夜国产精品一区| 色偷偷88欧美精品久久久| 国产精品麻豆视频| 国产一区二区美女| 精品剧情在线观看| 蜜乳av一区二区| 日韩欧美一区二区在线视频| 亚洲成人在线网站| 欧美视频中文一区二区三区在线观看 | 91传媒视频在线播放| 中文字幕乱码亚洲精品一区| 国产大陆精品国产| 国产人伦精品一区二区| 九九热在线视频观看这里只有精品| 欧美三级中文字幕在线观看| 亚洲一区在线视频| 欧美色涩在线第一页| 亚洲美女电影在线| 欧美色网一区二区| 亚洲电影中文字幕在线观看| 欧美日韩国产美女| 日韩成人dvd| 欧美不卡视频一区| 国产不卡高清在线观看视频| 中文字幕永久在线不卡| 色先锋资源久久综合| 国产欧美日韩久久| 99久久精品免费看国产| 亚洲免费观看高清完整版在线观看 | 亚洲人妖av一区二区| 色综合中文字幕国产 | 欧美变态口味重另类| 国产一区啦啦啦在线观看| 久久久久久免费网| 97精品久久久午夜一区二区三区 | 高清国产一区二区| 国产精品美女久久久久久久网站| 99re这里都是精品| 亚洲午夜日本在线观看| 日韩视频一区在线观看| 国产一区二区在线免费观看| 亚洲天堂av一区| 欧美日韩国产免费一区二区| 国产在线不卡视频| 国产精品国产成人国产三级| 日本韩国视频一区二区| 日韩影视精彩在线| 久久综合久久久久88| 成人激情av网| 日韩在线一区二区| 国产精品视频yy9299一区| 在线观看欧美日本| 精品在线观看免费| 亚洲三级在线播放| 日韩亚洲欧美高清| 91在线观看污| 狂野欧美性猛交blacked| 中文字幕一区二区三区不卡在线| 欧美三级在线看| 国产盗摄一区二区| 婷婷成人综合网| 国产精品高清亚洲| 精品少妇一区二区三区视频免付费 | 成+人+亚洲+综合天堂| 性久久久久久久久| 国产日韩v精品一区二区| 精品视频1区2区3区| 国产精品亚洲人在线观看| 亚洲一区二区影院| 国产精品亲子乱子伦xxxx裸| 欧美伦理视频网站| 波多野结衣91| 韩国女主播成人在线观看| 一区二区久久久久久| 中文字幕在线观看不卡| 日韩欧美国产一区在线观看| 色网站国产精品| 粉嫩绯色av一区二区在线观看| 石原莉奈一区二区三区在线观看| 久久国产福利国产秒拍| 久久久久亚洲综合| 日韩欧美视频在线| 欧美日韩国产一级| 91在线一区二区三区| 激情综合网av| 日韩在线a电影| 亚洲国产一二三| 亚洲人成精品久久久久| 国产欧美一区二区精品性色| 日韩免费观看2025年上映的电影| 欧美视频一区二区在线观看| 色系网站成人免费| 一本久久综合亚洲鲁鲁五月天| 国产xxx精品视频大全| 美国毛片一区二区| 美女一区二区视频| 日韩福利电影在线| 日韩激情视频网站| 日韩电影在线一区二区| 日日夜夜精品视频免费| 午夜精品久久久久久久| 亚洲sss视频在线视频| 亚洲国产日韩精品| 亚洲777理论| 日韩高清在线不卡| 美女高潮久久久| 国产做a爰片久久毛片| 黑人精品欧美一区二区蜜桃| 激情五月婷婷综合网| 精品在线一区二区| 国产91富婆露脸刺激对白| 高清国产一区二区三区| 成人一区二区在线观看| 99精品国产一区二区三区不卡| 国产成人欧美日韩在线电影| 成人福利视频在线| 日本高清无吗v一区| 欧美日韩一二三| 欧美一卡2卡三卡4卡5免费| 26uuu欧美日本| 日本一区二区三区四区| 亚洲精品午夜久久久| 五月天一区二区| 国内精品国产成人国产三级粉色| 国产成人在线网站| 色婷婷久久久久swag精品| 777色狠狠一区二区三区| 久久你懂得1024| 亚洲免费在线看| 日韩影院精彩在线| 成人小视频免费观看| 欧美三电影在线| 日韩一区二区三区电影在线观看| 精品日韩一区二区| 亚洲色图清纯唯美| 日本sm残虐另类| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91精品国产一区二区| 欧美精品一区二区三区蜜桃视频| 国产精品嫩草99a| 午夜国产不卡在线观看视频| 国产精品18久久久久久久久| 在线看不卡av| 久久久久久亚洲综合影院红桃 | 日韩欧美专区在线| 1区2区3区精品视频| 奇米888四色在线精品| 成人美女视频在线观看18| 欧美日韩极品在线观看一区| 国产色91在线| 日韩精品一级二级 | 亚洲 欧美综合在线网络| 激情六月婷婷久久| 欧美日韩在线电影| 国产目拍亚洲精品99久久精品| 午夜视黄欧洲亚洲| 99精品视频在线播放观看| 日韩精品一区二区三区中文不卡| 亚洲精品自拍动漫在线| 国产美女精品人人做人人爽| 欧美日韩黄视频| 亚洲女爱视频在线| 国产成a人亚洲精| 欧美成人a视频| 天天射综合影视| 欧美专区日韩专区| 亚洲欧洲日产国产综合网| 国产精选一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲丰满少妇videoshd| 色天天综合色天天久久| 中文字幕免费观看一区| 国产风韵犹存在线视精品| 精品国产一区二区亚洲人成毛片 | 一区二区在线观看免费视频播放| 国产精品一区二区在线播放| 日韩欧美成人一区二区| 日韩黄色免费网站| 欧美精品丝袜中出| 日韩影视精彩在线| 91精品视频网| 日韩精品成人一区二区三区| 欧美日韩国产一区| 青娱乐精品在线视频| 91精品国产一区二区人妖| 日本视频在线一区| 欧美日韩成人综合天天影院 | 日韩女优毛片在线| 日本美女一区二区|