
2009年9月25日
從頭開始學jsp,對它有興趣是第一要事。以下幾個案例非常的簡單,不需要用到別的知識。用來先對jsp有所感知是個不錯的注意。
案例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"));
//下面進行位移操作
intLocal_Vals=intLocal_Vals>>intLocal_Amount;
out.print("<br>位移后的值為:" +intLocal_Vals);
}else{
out.print("位移值或位移量不能為空!");
}
%>
案例1的所有操作都在一個頁面內完成,一般不會出現什么問題,主要用來認識一下jsp頁面的組成結構。
案例2 :準備工作:在d:盤建立一個名為count.txt的空文本文檔。
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>文字計數器</title>
</head>
<body bgcolor="#ffffff">
<%@page import="java.io.*" %>
<%
BufferedReader file;
//BufferedReader 對象用于讀取文件數據
String countFile="d:/count.txt";
//標示文件的地址
file=new BufferedReader(new FileReader(countFile));
//將file(BufferedRead的對象)指向文件的地址
String readStr=null;
//來存取文件的內容
int writeStr=1;
//寫入文件的變量 如果文件中訪問是0 則寫入為1
try
{
readStr=file.readLine();//讀取文件內容
}
catch(IOException e){
System.out.println("read wrong");
}
if(readStr==null) readStr="no record";
else {
writeStr=Integer.parseInt(readStr)+1;//讀取的內容+1
}
try{
PrintWriter pw;
//PrintWriter用于寫文件的一個類
pw=new PrintWriter(new FileOutputStream(countFile));
//指定文件
pw.println(writeStr);
//寫入變量writeStr的值
pw.close();
}
catch(IOException e){
out.println(e.getMessage());
}
%>
<p align="center">
<h1>文字計數器</h1>
<h3>你是本站第</h3>
<font color="ff0000" size="7">
<%=readStr%></font>
<h3>個讀者</h3>
</body>
</html>
案例2主要是和外部文件進行了簡單的通訊,用到的主要是java代碼。
案例3:準備工作:安裝mysql;將mysql的JDBC驅動器拷貝到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"); //驅動
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>學習</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里其實只是用java實現了一個數據庫連接。
案例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>請輸入用戶信息:</p>
<p>姓名 <input type="text" name="name" size="12"></p>
<p>密碼 <input type="password" name="password" size="12"></p>
<input type="submit" value="確認">
<input type="reset" value="取消">
</body>
</html>
handle.jsp
<%@page import="java.sql.*" contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>認證</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最常用的功能,實現用戶登陸的問題。
案例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 達飛Plus 閱讀(149) |
評論 (0) |
編輯 收藏
下個星期要考數據庫,現把基本知識稍做整理:
sql的概念:
SQL (Structured Query Language結構化查詢語言)是目前使用最廣的并且是標準的數據庫語言。
sql語言的構成:
SQL語言包括約30條語句,每條語句請求DBMS完成一個動作.
每條SQL語句都以一個動詞開頭,這是描述該語句功能的關鍵字.接著是一個或幾個子句.
子句指定該語句所作用的數據,或該語句行為的更詳細說明.
每個子句都以一個關鍵字開頭.有包含表名和列名,有含有附加關鍵字,常數或表達式.
sql的命名:
數據庫中的對象都有一個唯一名字標識.
SQL語句中用名字標識該語句作用的數據庫對象.
ANSI/ISO SQL標準規定的名字有表名(標識表),列名(標識列)和用戶名(標識數據庫的用戶)
許多SQL實現支持附加命名對象
sql的數據類型:
定長字符串.(CHAR(LEN),CHARACTER(LEN)
整數.(NUMBER(P,S) ,SMALLINT,INTEGER)
小數.(NUMBER(P,S) ,DECIMAL(P,S))
浮點數.(NUMBER(P,S),FLOAT(P),REAL)
可變長字符串.(VARCHAR2(N),VARCHAR(N))
金額.(NUMBER(P,S),MEONEY))
日期和時間.(DATE,DATETIME,TIMESTAMP)
長文字.(LONG,LONG VARCHAR)
無結構字節流.(RAW,LONG RAW)
sql的表達式
在SQL語言中,表達式用于計算從數據庫中檢索的值以及用于搜索數據庫的值.
ANSI/ISO SQL標準規定表達式中可用四種算術運算:+,-,*,/.還可以用括號組成更復雜的表達式.
ANSI/ISO標準還規定,在必要的時候整數可自動轉換成小數,小數可自動轉換為浮點數.
有的產品還支持日期運算表達試.
ORACLE中的字符連接運算使用‘||’ 運算符
sql的內部構造函數
大多數SQL實現都包含一組有用的內部函數.
±數值處理函數.(ABS,ROUND,TRUNC,SQRT)
±字符處理函數.(SUBSTR,TRIM,UPPER)
±日期處理函數.(ADD_MONTHS,MONTHS_BETWEEN)
±轉換函數.(CONVERT,TO_DATE,TO_CHAR)
±其它函數.(NVL,USER,USERENV,UID)
內部構造函數在SQL表達式中可用于相同數據類型的常數出現的任何地方.
sql的無數據處理(NULL值)
SQL通過空值的概念來處理數據不存在,不確定或不能用的情況.
NULL不同于一般的實際數據,而是一個表示數據不存在或未知的標志.
在許多情況下,NULL要求DBMS特殊處理.±例如在ORACLE中通過NVL內部構造函數來處理這種情況.
posted @
2009-09-25 09:02 達飛Plus 閱讀(159) |
評論 (0) |
編輯 收藏

2009年9月24日
様々な連結テーブルが作成できるが、良く使うものはビュー(create view) に
しておくと効率が良い。各種各樣的連接表中,有的對視圖也起作用。
結合は、テーブルとテーブル、ビューとビュー、テーブ
ルとビューなど複雑にできる。(テーブル連結)連接可以在數據表和數據表之間,視圖和視圖之間,數據表和視圖之間復雜的進行。
■単純結合 簡單連接
?現実的に単純結合を使う機會はないだろう。實際上簡單結合沒有什么使用的機會。
次の例では、受注m の各レコードに 品番m の全レコードが結合される。
在下面的例子中,在受注m的各種記錄里,品番m的所有記錄都被結合了。
受注m のレコード數 x 品番m のレコード數の結果が問い合わされる。
受注m的記錄數*品番m的記錄數的結果被查詢出來。
select * from sak.受注m, sak.品番m;
■等価結合 等價連接
?等価結合は、特定のキーで表を結合します。等價連接是用特定的鍵來進行表的結合的。
條件のどちらかのデータが存在しない場合、結果セットには含まれません。
如果有條件在數據表里不存在,在結果集里就沒有這一條記錄。
現実的には外部結合が一番使いやすいと思います。在實際上,外部結合是最容易使用的。
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m, sak.品番m
where 受注m.品番 = 品番m.品番 ;
?列の別名定義は、as を指定してもよい。列的別名指定,也可以用as來實現。
結合テーブルに同じ項目名が存在する場合は、どちらのテーブル項目か指定するため、テーブル名で修飾する。(受注m.品番)
在連接表中如果有相同的項目名存在,為了讓每一個項目都被指定,就用項目名來修飾。
select
受注番號,
受注m.品番 as 品番,
品番m.入庫數 as 入庫數
from sak.受注m, sak.品番m
where 受注m.品番 = 品番m.品番;
?inner join を使用して、等価結合することもできます。(インナージョイン)
使用inner join,也可以進行等價連接。
select
受注番號,
受注m.品番 as 品番,
品番m.入庫數 as 入庫數
from sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番;
?3 つ以上の結合を inner join で指定するには、次のようにする。
如果有三個以上要指定inner join 來進行連接的時候,可以像下面這樣做。
select
*
from (sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番)
inner join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD;
■非等価結合 非等價連接
?非常に時間のかかる結合ですが、必要な場面があるかもしれない。雖然很花時間,但有時候也要進行下面的檢索。
なにがしかの範囲條件で結合する場合に使います。和檢索條件的一部分進行連接。
select 受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m, sak.品番m
where 受注m.機種 like substr(品番m.機種, 1, 2);
■外部結合 外結合、行結合、行連結、テーブル結合、外部接合
外部連接 外連接,行連接,表連接,外部連接
?外部結合は、一番よく使用します。外部連接是最經常使用的。
一方の條件に対するデータが存在しなかった場合でも片方のデータを結果セ
ットに含める指定ができます。
對于一方的條件即使不存在,也可以使結果集包含一邊的數據。
次の例では、品番m にない品番の受注m レコードも結果に含まれます。
在下面的例子中,在品番m中沒有的品番受注m記錄的結果也包含了進來。
この場合、入庫數などの 品番m 項目には NULL がセットされて問い合わさ
れます。Oracle では、left join、right join を (+) で指定できます。
這時候,入庫數等的品番m項目里被設定了NULL值。在oracle里,left join,right join 可以用(+)來指定。
(左結合、右結合、複數テーブル問い合わせ、複數テーブル參照)
(複數問い合わせ、複合テーブル參照、レフトジョイン、ライトジョイン)
(左連接,右連接,多個表查詢,多個表參照,左連接,右連接)
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m, sak.品番m
where 受注m.品番 = 品番m.品番 (+);
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番;
?逆に受注m にない品番の品番m レコードを結果に含ませることもできます。
現実的には、こういう結合に意味はありませんが、逆の和もできると言うこ
とです。
?相反不在受注m里的品番m記錄也可以在結果里包含。在實際中,雖然沒有這么用的,但是(+)也可以放在=之前。
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m, sak.品番m
where 受注m.品番 (+) = 品番m.品番;
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數
from sak.受注m right join sak.品番m on 受注m.品番 = 品番m.品番;
?三つ以上の表を結合することもできます。(3 テーブル結合)
?也可以進行三個表以上的表連接。(三表連接)
次の例では、品番に対する品番m.入庫數、得意先CD に対する得意先m.得意
先名を結合しています。(left join を使用しても良い。)
在下面的例子中,對于品番的品番m.入庫數,對于得意先CD的得意先m.得意先名來進行連接。(也可以使用左連接)
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數,
受注m.得意先CD 得意先CD,
得意先m.得意先名 得意先
from sak.受注m, sak.品番m, sak.得意先m
where 受注m.品番 = 品番m.品番 (+)
and 受注m.得意先CD = 得意先m.得意先CD (+);
select
受注番號,
受注m.品番 品番,
品番m.入庫數 入庫數,
受注m.得意先CD 得意先CD,
得意先m.得意先名 得意先
from (sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番)
left join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD;
?複數の表を結合すると修飾が難解になりがちなので、テーブル別名を使うと
良いです。
如果多個表進行連接,修飾會變得很復雜,也可以使用表別名。
select
受注番號,
a.品番 品番,
b.入庫數 入庫數,
a.得意先CD 得意先CD,
c.得意先名 得意先
from sak.受注m a, sak.品番m b, sak.得意先m c
where a.品番 = b.品番 (+)
and a.得意先CD = c.得意先CD (+);
** 外部結合を明示するために 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)
■再帰結合(內部結合) 回歸連接(內部結合)
?再帰結合は、同じテーブルをテーブル別名を使用して結合します。
?回歸連接是相同的表來用別名來進行連接的。
次の例では、得意先m に親得意先CD があるとして、その得意先名を自分自
身と結合しています。(自己結合)
在下面的例子中,以得意先作為父得意先,然后用這個名字來進行自身連接。
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 達飛Plus 閱讀(150) |
評論 (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開発基盤(Java/Strus)
帳票:PDF操作(CoReports for java)
EXCEL操作(Microsoft Office 2007)
?。模楼旦`バ:Oracle 11g/R1 (11.0.x)
HP-UX 11iv3
--------------------------------------------------------------
posted @
2009-09-24 14:30 達飛Plus 閱讀(144) |
評論 (0) |
編輯 收藏