随笔-4  评论-0  文章-0  trackbacks-0
  2009年9月24日

      从头开始学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 阅读(145) | 评论 (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 阅读(155) | 评论 (0)编辑 收藏
様々な連結テーブルが作成できるが、良く使うものはビュー(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 阅读(143) | 评论 (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)

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

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


posted @ 2009-09-24 14:30 达飞Plus 阅读(140) | 评论 (0)编辑 收藏