隨筆-4  評(píng)論-0  文章-0  trackbacks-0
            2009年9月24日

                從頭開(kāi)始學(xué)jsp,對(duì)它有興趣是第一要事。以下幾個(gè)案例非常的簡(jiǎn)單,不需要用到別的知識(shí)。用來(lái)先對(duì)jsp有所感知是個(gè)不錯(cuò)的注意。
          案例1 :displace.jsp
          <%@   page   contentType="text/html;   charset=GB2312"   %>  
            <form   name="form1"   action="displace.jsp"   method="post">  
            <br><br>  
            <input   type="text"   name="Vals"><input   type="text"   name="Amount">  
            <input   type="submit"   name="Submit"   value="Submit">  
            </form>  
            <%  
            int   intLocal_Vals,   intLocal_Amount;  
            if(request.getParameter("Vals")!=null   &&   request.getParameter("Amount")!=null)  
            {  
                intLocal_Vals   =   Integer.parseInt(request.getParameter("Vals"));  
                intLocal_Amount   =   Integer.parseInt(request.getParameter("Amount"));  
                //下面進(jìn)行位移操作  
              intLocal_Vals=intLocal_Vals>>intLocal_Amount;  
                out.print("<br>位移后的值為:"   +intLocal_Vals);  
            }else{  
                out.print("位移值或位移量不能為空!");  
            }  
            %>
          案例1的所有操作都在一個(gè)頁(yè)面內(nèi)完成,一般不會(huì)出現(xiàn)什么問(wèn)題,主要用來(lái)認(rèn)識(shí)一下jsp頁(yè)面的組成結(jié)構(gòu)。
          案例2 :準(zhǔn)備工作:在d:盤建立一個(gè)名為count.txt的空文本文檔。
          <%@ page language="java" contentType="text/html; charset=gb2312"%>

          <html>
          <head>

          <title>文字計(jì)數(shù)器</title>
          </head>
          <body bgcolor="#ffffff">
          <%@page import="java.io.*" %>
          <%
          BufferedReader file;
          //BufferedReader 對(duì)象用于讀取文件數(shù)據(jù)
          String countFile="d:/count.txt";
          //標(biāo)示文件的地址
          file=new BufferedReader(new FileReader(countFile));
          //將file(BufferedRead的對(duì)象)指向文件的地址
          String readStr=null;
          //來(lái)存取文件的內(nèi)容
          int writeStr=1;
          //寫入文件的變量 如果文件中訪問(wèn)是0 則寫入為1
          try
          {
              readStr=file.readLine();//讀取文件內(nèi)容
              }
          catch(IOException e){
              System.out.println("read wrong");
              }
          if(readStr==null) readStr="no record";
          else {
              writeStr=Integer.parseInt(readStr)+1;//讀取的內(nèi)容+1
              }
          try{
              PrintWriter pw;
              //PrintWriter用于寫文件的一個(gè)類
              pw=new PrintWriter(new FileOutputStream(countFile));
              //指定文件
              pw.println(writeStr);
              //寫入變量writeStr的值
              pw.close();
          }
          catch(IOException e){
              out.println(e.getMessage());
          }
          %>
          <p align="center">
          <h1>文字計(jì)數(shù)器</h1>
          <h3>你是本站第</h3>
          <font color="ff0000" size="7">
          <%=readStr%></font>
          <h3>個(gè)讀者</h3>
          </body>
          </html>
          案例2主要是和外部文件進(jìn)行了簡(jiǎn)單的通訊,用到的主要是java代碼。

          案例3:準(zhǔn)備工作:安裝mysql;將mysql的JDBC驅(qū)動(dòng)器拷貝到Tomcat\common\lib和Tomcat\shared\lib 下。
          <%@ page contentType="text/html;charset=GB2312" %>
          <%@ page language="java" import="java.sql.*"%>
          <%
          Connection conn = null; //連接
          Class.forName("org.gjt.mm.mysql.Driver"); //驅(qū)動(dòng)
          conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","8"); //建立連接
          if(conn==null){
          out.println("get Conn Error");
          }
          Statement stmt=conn.createStatement();
          ResultSet RS_result=null;
          %>
          <html>
          <head>
          <title>學(xué)習(xí)</title></head>
          <body>
          <%
          RS_result=stmt.executeQuery("select * from user");
          String Name,Password;
          while(RS_result.next())
          {
          Name=RS_result.getString("name");
          Password=RS_result.getString("password");
          %>
          <P><%=Name%>
          <%=Password%></p>
          <%
          }

          stmt.close();
          conn.close();
          %>
          </body>
          </html>
          案例3里其實(shí)只是用java實(shí)現(xiàn)了一個(gè)數(shù)據(jù)庫(kù)連接。
          案例4:
          login.jsp
          <%@   page   contentType="text/html;   charset=GB2312"   %>
          <html>
            <head>
             <title>login</title>
            </head>
           
            <body>
              <form name="Sayhi" method="post" action="Jsp2.jsp">
              <p>請(qǐng)輸入用戶信息:</p>
             <p>姓名 <input type="text" name="name" size="12"></p>
             <p>密碼 <input type="password" name="password" size="12"></p>
              <input type="submit" value="確認(rèn)">
              <input type="reset" value="取消">
          </body>
          </html>
          handle.jsp
          <%@page import="java.sql.*" contentType="text/html;charset=gb2312"   %>  
            <html>  
            <head>
            <title>認(rèn)證</title>  
            </head>  
            <body>  
            <%
            String   Name=request.getParameter("name");  
                  String   Password=request.getParameter("password");  
                  Class.forName("org.gjt.mm.mysql.Driver").newInstance();  
                  String   url="jdbc:mysql://localhost:3306/db";  
                  String   user="root";  
                  String   password="8";  
                  Connection   conn=DriverManager.getConnection(url,user,password);  
                  Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
                  String   sql="select * from   user   where   name='"+Name+"'   and   password='"+Password+"'";  
                  ResultSet   rs=stmt.executeQuery(sql);  
                  if(rs.next()){  
                  out.print("恭喜你,登陸成功!");  
                  }  
                  else{  
                  out.print("抱歉!登陸不成功!");  
                  }  
                  rs.close();  
                  stmt.close();  
                  conn.close();  
                  %>  
            </body>  
            </html>
          案例4是jsp最常用的功能,實(shí)現(xiàn)用戶登陸的問(wèn)題。
          案例5:
          CountTest.java
          package Test;

          public class CountTest {
           private static int count = 0;
            
              public CountTest() {
           }
           
              public static int getCount() {
           count++;
           return count;
           }

            public static void setCount(int a) {
          count =a;
           }
          }
          counter.jsp
          <%@page import="Test.*"%>

          <HTML>
          <HEAD>
          <TITLE>
          counter
          </TITLE>
          </HEAD>
          <BODY>
          <H1>
          JBuilder Generated JSP
          </H1>
          <jsp:useBean id="bean0" scope="application" class="Test.CountTest" />
          <%
          out.println("The Counter is : " + bean0.getCount() + "<BR>");
          %>
          </BODY>
          </HTML>
          案例5是在java完成處理,在jsp里完成顯示的例子。

          posted @ 2009-09-25 09:07 達(dá)飛Plus 閱讀(150) | 評(píng)論 (0)編輯 收藏
          下個(gè)星期要考數(shù)據(jù)庫(kù),現(xiàn)把基本知識(shí)稍做整理:
          sql的概念:
          SQL (Structured Query Language結(jié)構(gòu)化查詢語(yǔ)言)是目前使用最廣的并且是標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)語(yǔ)言。

          sql語(yǔ)言的構(gòu)成:
           SQL語(yǔ)言包括約30條語(yǔ)句,每條語(yǔ)句請(qǐng)求DBMS完成一個(gè)動(dòng)作.
          每條SQL語(yǔ)句都以一個(gè)動(dòng)詞開(kāi)頭,這是描述該語(yǔ)句功能的關(guān)鍵字.接著是一個(gè)或幾個(gè)子句.
          子句指定該語(yǔ)句所作用的數(shù)據(jù),或該語(yǔ)句行為的更詳細(xì)說(shuō)明.
          每個(gè)子句都以一個(gè)關(guān)鍵字開(kāi)頭.有包含表名和列名,有含有附加關(guān)鍵字,常數(shù)或表達(dá)式.

          sql的命名:
          數(shù)據(jù)庫(kù)中的對(duì)象都有一個(gè)唯一名字標(biāo)識(shí)
          SQL語(yǔ)句中用名字標(biāo)識(shí)該語(yǔ)句作用的數(shù)據(jù)庫(kù)對(duì)象.
          ANSI/ISO SQL標(biāo)準(zhǔn)規(guī)定的名字有表名(標(biāo)識(shí)表),列名(標(biāo)識(shí)列)和用戶名(標(biāo)識(shí)數(shù)據(jù)庫(kù)的用戶)
          許多SQL實(shí)現(xiàn)支持附加命名對(duì)象
            sql的數(shù)據(jù)類型:
            定長(zhǎng)字符串.(CHAR(LEN),CHARACTER(LEN)
          整數(shù).(NUMBER(P,S) ,SMALLINT,INTEGER)
          小數(shù).(NUMBER(P,S) ,DECIMAL(P,S))
          浮點(diǎn)數(shù).(NUMBER(P,S),FLOAT(P),REAL)
          可變長(zhǎng)字符串.(VARCHAR2(N),VARCHAR(N))
          金額.(NUMBER(P,S),MEONEY))
          日期和時(shí)間.(DATE,DATETIME,TIMESTAMP)
          長(zhǎng)文字.(LONG,LONG VARCHAR)
          無(wú)結(jié)構(gòu)字節(jié)流.(RAW,LONG RAW)
            sql的表達(dá)式
          SQL語(yǔ)言中,表達(dá)式用于計(jì)算從數(shù)據(jù)庫(kù)中檢索的值以及用于搜索數(shù)據(jù)庫(kù)的值.
          ANSI/ISO SQL標(biāo)準(zhǔn)規(guī)定表達(dá)式中可用四種算術(shù)運(yùn)算:+,-,*,/.還可以用括號(hào)組成更復(fù)雜的表達(dá)式.
          ANSI/ISO標(biāo)準(zhǔn)還規(guī)定,在必要的時(shí)候整數(shù)可自動(dòng)轉(zhuǎn)換成小數(shù),小數(shù)可自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù).
          有的產(chǎn)品還支持日期運(yùn)算表達(dá)試.
          ORACLE中的字符連接運(yùn)算使用|| 運(yùn)算符
             sql的內(nèi)部構(gòu)造函數(shù)
          大多數(shù)SQL實(shí)現(xiàn)都包含一組有用的內(nèi)部函數(shù).
          ±數(shù)值處理函數(shù).(ABS,ROUND,TRUNC,SQRT)
          ±字符處理函數(shù).(SUBSTR,TRIM,UPPER)
          ±日期處理函數(shù).(ADD_MONTHS,MONTHS_BETWEEN)
          ±轉(zhuǎn)換函數(shù).(CONVERT,TO_DATE,TO_CHAR)
          ±其它函數(shù).(NVL,USER,USERENV,UID)
          內(nèi)部構(gòu)造函數(shù)在SQL表達(dá)式中可用于相同數(shù)據(jù)類型的常數(shù)出現(xiàn)的任何地方.
            sql的無(wú)數(shù)據(jù)處理(NULL)
          SQL通過(guò)空值的概念來(lái)處理數(shù)據(jù)不存在,不確定或不能用的情.
          NULL不同于一般的實(shí)際數(shù)據(jù),而是一個(gè)表示數(shù)據(jù)不存在或未知的標(biāo)志.
          在許多情況下,NULL要求DBMS特殊處理.±例如在ORACLE中通過(guò)NVL內(nèi)部構(gòu)造函數(shù)來(lái)處理這種情況.
          posted @ 2009-09-25 09:02 達(dá)飛Plus 閱讀(161) | 評(píng)論 (0)編輯 收藏
          様々な連結(jié)テーブルが作成できるが、良く使うものはビュー(create view) に
          しておくと効率が良い。各種各樣的連接表中,有的對(duì)視圖也起作用。
          結(jié)合は、テーブルとテーブル、ビューとビュー、テーブ ルとビューなど複雑にできる。(テーブル連結(jié))連接可以在數(shù)據(jù)表和數(shù)據(jù)表之間,視圖和視圖之間,數(shù)據(jù)表和視圖之間復(fù)雜的進(jìn)行。
          ■単純結(jié)合 簡(jiǎn)單連接
          ?現(xiàn)実的に単純結(jié)合を使う機(jī)會(huì)はないだろう。實(shí)際上簡(jiǎn)單結(jié)合沒(méi)有什么使用的機(jī)會(huì)。
          次の例では、受注m の各レコードに 品番m の全レコードが結(jié)合される。
          在下面的例子中,在受注m的各種記錄里,品番m的所有記錄都被結(jié)合了。
          受注m のレコード數(shù) x 品番m のレコード數(shù)の結(jié)果が問(wèn)い合わされる。
            受注m的記錄數(shù)*品番m的記錄數(shù)的結(jié)果被查詢出來(lái)。 select * from sak.受注m, sak.品番m; ■等価結(jié)合 等價(jià)連接 ?等価結(jié)合は、特定のキーで表を結(jié)合します。等價(jià)連接是用特定的鍵來(lái)進(jìn)行表的結(jié)合的。
          條件のどちらかのデータが存在しない場(chǎng)合、結(jié)果セットには含まれません。
          如果有條件在數(shù)據(jù)表里不存在,在結(jié)果集里就沒(méi)有這一條記錄。
          現(xiàn)実的には外部結(jié)合が一番使いやすいと思います。在實(shí)際上,外部結(jié)合是最容易使用的。
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 ; ?列の別名定義は、as を指定してもよい。列的別名指定,也可以用as來(lái)實(shí)現(xiàn)。
          結(jié)合テーブルに同じ項(xiàng)目名が存在する場(chǎng)合は、どちらのテーブル項(xiàng)目か指定するため、テーブル名で修飾する。(受注m.品番)
          在連接表中如果有相同的項(xiàng)目名存在,為了讓每一個(gè)項(xiàng)目都被指定,就用項(xiàng)目名來(lái)修飾。
          select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番; ?inner join を使用して、等価結(jié)合することもできます。(インナージョイン)
          使用inner join,也可以進(jìn)行等價(jià)連接。
          select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番; ?3 つ以上の結(jié)合を inner join で指定するには、次のようにする。
          如果有三個(gè)以上要指定inner join 來(lái)進(jìn)行連接的時(shí)候,可以像下面這樣做。
          select * from (sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番) inner join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ■非等価結(jié)合 非等價(jià)連接 ?非常に時(shí)間のかかる結(jié)合ですが、必要な場(chǎng)面があるかもしれない。雖然很花時(shí)間,但有時(shí)候也要進(jìn)行下面的檢索。
          なにがしかの範(fàn)囲條件で結(jié)合する場(chǎng)合に使います。和檢索條件的一部分進(jìn)行連接。
          select
          受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.機(jī)種 like substr(品番m.機(jī)種, 1, 2);
          ■外部結(jié)合 外結(jié)合、行結(jié)合、行連結(jié)、テーブル結(jié)合、外部接合
          外部連接 外連接,行連接,表連接,外部連接
          ?外部結(jié)合は、一番よく使用します。外部連接是最經(jīng)常使用的。
          一方の條件に対するデータが存在しなかった場(chǎng)合でも片方のデータを結(jié)果セ ットに含める指定ができます。
          對(duì)于一方的條件即使不存在,也可以使結(jié)果集包含一邊的數(shù)據(jù)。
          次の例では、品番m にない品番の受注m レコードも結(jié)果に含まれます。
          在下面的例子中,在品番m中沒(méi)有的品番受注m記錄的結(jié)果也包含了進(jìn)來(lái)。
          この場(chǎng)合、入庫(kù)數(shù)などの 品番m 項(xiàng)目には NULL がセットされて問(wèn)い合わさ れます。Oracle では、left join、right join を (+) で指定できます。
          這時(shí)候,入庫(kù)數(shù)等的品番m項(xiàng)目里被設(shè)定了NULL值。在oracle里,left join,right join 可以用(+)來(lái)指定。
          (左結(jié)合、右結(jié)合、複數(shù)テーブル問(wèn)い合わせ、複數(shù)テーブル?yún)⒄? (複數(shù)問(wèn)い合わせ、複合テーブル?yún)⒄铡ⅴ欹榨去弗绁ぅ蟆ⅴ楗ぅ去弗绁ぅ?
          (左連接,右連接,多個(gè)表查詢,多個(gè)表參照,左連接,右連接)
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番; ?逆に受注m にない品番の品番m レコードを結(jié)果に含ませることもできます。 現(xiàn)実的には、こういう結(jié)合に意味はありませんが、逆の和もできると言うこ とです。
          ?相反不在受注m里的品番m記錄也可以在結(jié)果里包含。在實(shí)際中,雖然沒(méi)有這么用的,但是(+)也可以放在=之前。
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 (+) = 品番m.品番; select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m right join sak.品番m on 受注m.品番 = 品番m.品番; ?三つ以上の表を結(jié)合することもできます。(3 テーブル結(jié)合)
          ?也可以進(jìn)行三個(gè)表以上的表連接。(三表連接)
          次の例では、品番に対する品番m.入庫(kù)數(shù)、得意先CD に対する得意先m.得意 先名を結(jié)合しています。(left join を使用しても良い。)
          在下面的例子中,對(duì)于品番的品番m.入庫(kù)數(shù),對(duì)于得意先CD的得意先m.得意先名來(lái)進(jìn)行連接。(也可以使用左連接)
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from sak.受注m, sak.品番m, sak.得意先m where 受注m.品番 = 品番m.品番 (+) and 受注m.得意先CD = 得意先m.得意先CD (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from (sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番) left join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ?複數(shù)の表を結(jié)合すると修飾が難解になりがちなので、テーブル別名を使うと 良いです。
          如果多個(gè)表進(jìn)行連接,修飾會(huì)變得很復(fù)雜,也可以使用表別名。
          select 受注番號(hào), a.品番 品番, b.入庫(kù)數(shù) 入庫(kù)數(shù), a.得意先CD 得意先CD, c.得意先名 得意先 from sak.受注m a, sak.品番m b, sak.得意先m c where a.品番 = b.品番 (+) and a.得意先CD = c.得意先CD (+); ** 外部結(jié)合を明示するために left join を left outer join、right join を right outer join と書くこともできる。
          ** 為了明確外部連接,也可以把left join 寫成 left outer join, right join寫成right outer join。
          (アウタージョイン、レフトアウタージョイン、ライトアウタージョイン)
          (outer join, left outer join, right outer join)
          ■再帰結(jié)合(內(nèi)部結(jié)合) 回歸連接(內(nèi)部結(jié)合) ?再帰結(jié)合は、同じテーブルをテーブル別名を使用して結(jié)合します。
          ?回歸連接是相同的表來(lái)用別名來(lái)進(jìn)行連接的。
          次の例では、得意先m に親得意先CD があるとして、その得意先名を自分自 身と結(jié)合しています。(自己結(jié)合)
          在下面的例子中,以得意先作為父得意先,然后用這個(gè)名字來(lái)進(jìn)行自身連接。
          select a.得意先CD 得意先CD, a.得意先名 得意先, a.親得意先CD 親得意先CD, b.得意先名 得意先 from sak.得意先m a, sak.得意先m b where a.得意先CD = b.親得意先CD (+);
          posted @ 2009-09-24 14:42 達(dá)飛Plus 閱讀(150) | 評(píng)論 (0)編輯 收藏
          ****システム

            単體テスト迄ですので、OSなどは厳密に合わせる必要は
            ありませんので、その辺りは參考にして下さい。


           --------------------------------------------------------------

            APサーバ:WebOTX Application Server Web Edition V8.1
                  Apache HTTP Server 2.0.x
                  Tomcat 6.0.x、J2SE 5.0.x
                  Windows Server 2008 Standard (EMT64)

            フレームワーク:R21開(kāi)発基盤(Java/Strus)

            帳票:PDF操作(CoReports for java)
               EXCEL操作(Microsoft Office 2007)

            DBサーバ:Oracle 11g/R1 (11.0.x)
                 HP-UX 11iv3

           --------------------------------------------------------------


          posted @ 2009-09-24 14:30 達(dá)飛Plus 閱讀(145) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 苏州市| 中牟县| 四会市| 伊春市| 元谋县| 大同县| 绵阳市| 治县。| 大悟县| 乐安县| 阳原县| 邛崃市| 巴彦县| 苗栗县| 綦江县| 山阴县| 遵义县| 平阳县| 九寨沟县| 福州市| 云阳县| 馆陶县| 宿松县| 彭州市| 洪雅县| 武威市| 普陀区| 清流县| 长汀县| 洪湖市| 枣庄市| 万宁市| 东安县| 宁远县| 威海市| 孙吴县| 长武县| 连平县| 池州市| 大化| 象州县|