??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品久久无码av片俺去也,国产亚洲精品VA片在线播放,亚洲人成77777在线播放网站http://www.tkk7.com/kobe09/爪吐奕奕征?/description>zh-cnMon, 12 May 2025 00:48:07 GMTMon, 12 May 2025 00:48:07 GMT60几则JSP入门知识ȝhttp://www.tkk7.com/kobe09/archive/2006/06/14/52757.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:19:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52757.htmlhttp://www.tkk7.com/kobe09/comments/52757.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52757.html#Feedback0http://www.tkk7.com/kobe09/comments/commentRss/52757.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52757.html 1.传递表单参敎ͼ
String name = new String(request.getParameter("name"));

2.数据库连接:
~~MYSQL
//讄数据库的URL
String url = "jdbc:mysql://localhost:3306/jspsky";
try
//加蝲驱动E序
Class.forname("org.gjt.mm.mysql.Driver").newInstance();
//建立q接
java.sql.Connection connection = java.sql.DriverManager.getConnection(url);
java.sql.Statement statement = connection.createStatement();
//SQL语句
String sqlStringi ="insert into commu(name,tel,mobile,oicq,email)values(?+name+"',?+tel+"',?+mobile+"',?+oicq+"',?+email+"')";
//q行SQL语句Qƈ建立l果?
java.sql.ResultSet rsi = statement.executeQuery(sqlStringi);
//在屏q上输出库中的内?
while(rss.next())
{
String a_name = rss.getString(1);
out.println(a_name);
{}
//关闭q接
connection.close();
}

//捕捉异常
catch(java.sql.SQLException e)

out.println(e.getMessage());
{}
catch(ClassNotFoundException e)

out.println(e.getMessage());
{}


~~DB2
//定义数据库的URL
String url = "jdbc:db2:portal";
try

//加蝲驱动E序
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
//建立q接Q?
java.sql.Connection connection = java.sql.DriverManager.getConnection(url,"user","password");
java.sql.Statement statement = connection.createStatement();
//SQL语句
String sqlString = "select * from client";
//执行SQL语句
java.sql.ResultSet rs = statement.executeQuery(sqlString);
//在屏q上昄所q表中的内容
while(rs.next())
{
String name = rs.getString(1);
out.println(name);
{}
//关闭q接
connection.close();
}
//捕捉异常
catch(java.sql.SQLException e)

out.println(e.getMessage());
{}
catch(ClassNotFoundException e)

out.println(e.getMessage());
{}


3.文g操作

~~一个字W串写到一个指定的文g中,如果该文件不存在Q则新徏一个文Ӟq完成写入;如果存在Q则用此字符串覆盖原文g的所有内?
import java.io.*;
String str = "print me 雪峰!";
//定义好打印的目标文g?

//取得当前L存放WEB面的绝对\?
String hostdir = System.getProperty("user.dir");
//取得当前L所采用的\径分隔符
String fileBar = System.getProperty("file.separator");
//书写完整的目标文件存放\?
String nameOfFile=hostdir+fileBar+"test.html";

try
//实例化一个文件输出流对象
FileOutputStream afile = new FileOutputStream(nameOfFile);
//文件输出流Q创Z个打印输出流对象
PrintWriter pw = new PrintWriter(afile);
pw.println(str);
//clean up
pw.close();
{}
catch(IOException e)
out.println(e.getMessage());
{}

~~列出指定目录下的文g列表
import java.io.*;
String cdur = System.getProperty("user.dir");
String fileBar = System.getProperty("file.separator");
String mydir =cdur+fileBar+"doc"+fileBar+"jspsky";
File my = new File(mydir);
String d[] = my.list();
int i;
int l=d.length;
for(i=0;i out.print(d);
{}


4.计数?
Integer count = null;
synchronized (application)
count =(Integer) application.getAttribute("d");
if (count ==null)
count =new Integer("0");
count = new Integer(count.intValue()+1);
application.setAttribute("d",count);
{}
out.println(count);
// 首先定义一个整形对象,q初始化为:NULLQ?
// 取回APPLICATION对像的属性D的|q强制{化ؓ整Ş对象Q赋lCOUNT
// 判断COUNT是否为空QؓI时Q将O赋给COUNT对象Q?
// 否则Q通过COUNT。INTVALUEQ)ҎQ实现COUNT对象?Qƈ赋值给COUNT
// 最后,COUNT对象保存在APPLICATION对象的D变量中?/font>

氧气中毒 2006-06-14 15:19 发表评论
]]>
Eclipse ?Java Web 开发环境的搭徏 -------------- 安装配置说明http://www.tkk7.com/kobe09/archive/2006/06/14/52756.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:19:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52756.htmlhttp://www.tkk7.com/kobe09/comments/52756.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52756.html#Feedback0http://www.tkk7.com/kobe09/comments/commentRss/52756.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52756.html

一、所需要准备的相关软g如下Q?/span>

1 ?/span> java 2 SDK Q?/span> java 开发工具包Q—?/span> JDK

*                    q里使用的是 jdk1.5 Q推荐?/span> JDK1.4 及以上版本)下蝲地址 : http://java.sun.com/javase/downloads/index.html ,

*                    Java SE 6 Beta

*                    J2SE 5.0

*                    J2SE 1.4.2

*                    J2SE 1.3.1

 

从以上列表中选择你需要的版本q行下蝲 .

2 ?/span> tomcat
我这里用的?/span> tomcat 5.5 的, ( 推荐使用 5.0 以上版本 ), 下蝲地址Q?/span> http://tomcat.apache.org/

Servlet/JSP Spec

Apache Tomcat version

2.4/2.0

5.5.17

2.3/1.2

4.1.31

2.2/1.1

3.3.2

从以上列表中选择你需要的版本q行下蝲 .

3 ?/span> eclipse 及语a?/span>

见我的另外一?/span> ?/span> Eclipse 3.1.x 汉化q程?/span>
4
?/span> tomcat 插g
我这里用的是与 eclipse3.1 对应?/span> tomcat 插g tomcatPluginV3.1.zip( 下蝲之前需要查看插件是否适合 eclipse 的版?/span> ), 下蝲地址 : http://www.sysdeo.com/sysdeo/eclipse/tomcatplugin

Version

File

Date

Comment

3.1 final

tomcatPluginV31.zip

15 September 2005

releaseNotesV31.txt

Works with Eclipse 3.0 and Eclipse 3.1 (fix a problem with Eclipse 3.1M6)

3.0

tomcatPluginV3.zip

27 July 2004

releaseNotesV3.txt

Works with Eclipse 3.0 and Eclipse 2.1

2.1.1 beta

tomcatPluginV211beta.zip

1er August 2003

releaseNotesV211beta.txt

Works with Eclipse 2.1 and Eclipse 3.0 M2

 

 

5 ?/span> lomboz 插g或?/span> myeclipse 插g

?/span> eclipse3.0 以前可以使用 Easy Struts 插g , 但是 eclipse3.0 不再支持 Easy Struts 插g , 所以?/span> eclipse3.0 以上版本的话 , 我们可以选择 lomboz 插g或?/span> myeclipse 插g .

Ҏ自己的喜?/span> , 选择 lomboz 或?/span> myeclipse 都可?/span> , 个h推荐使用 myeclipse.

不过 ,myeclipse 不是免费的插?/span> , ?/span> 30 天的试用?/span> , 我们可以先?/span> free 版的 , 如果支持 myeclipse 的活 , 最好还是用正版的 . 下面来分别简单阐qC?/span> lomboz 插g?/span> myeclipse 插g?/span>

 

?/span> lomboz 插g

 

 

以前?/span> lomboz 插g是需要下载两个部分,一个是 emf 环境Q另一个是 lomboz 插g .

 

下蝲地址 : http://download.forge.objectweb.org/lomboz/    

 

现在只需要下载一?/span> : lomboz-eclipse-emf-gef-jem 可以了 , 它把 emf 环境?/span> lomboz 插g都扉K里面M , 大概?/span> 140M 左右 , 我这里用的是 : lomboz-eclipse-emf-gef-jem-3.1RC2.zip

 

 

?/span> Myeclipse 插g

安装 Myeclipse4.1 (myeclipse 不是免费的,它有 30 天的使用期,所以我们先下蝲一个试用版 )

下蝲版本Q?/span> MyEclipse Enterprise Workbench 4.1.1 GA for Windows 98/2000/XP (03/02/2006)
地址: http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-10.html

 

二?/span> 软g安装

1 ?/span> java 安装

q行可执行文?/span> j2sdk-1_5_2_07-windows-i586-p.exe Q安装结束后需配置环境变量Q在我的电脑 -> 属?/span> -> -> 环境变量 -> pȝ变量中添加以下环境变?/span>
CLASSPATH
Q?/span> JAVA_HOME: Q?/span> PATH

2 ?/span> tomcat 安装

解压版的直接解压可以了Q然后配|环境变?/span> TOMCAT_HOME Q安装版的要注意的两点,一个是安装完之?/span> tomcat 的服务就能够启动的了Q但是还是要配置 TOMCAT_HOME Q第二个是需要查看一下安装程序是不是?/span> tomcat 服务注册成ؓ windows 的启动服务,需要到 ?/span> 服务 ?/span> 里查看,如果有这个选项把它设|ؓ手动启动Qƈ且先停止q个服务?/span> [ ] Q?/span> startup.bat 命oQ服务正常启动之后, ie 览器里输入

http://localhost:8080/ 如果出现正常的小猫页面,那就应该没有问题?/span>

3 ?/span> eclipse 安装

eclipse 的安装很单,只要解压Q然后把 eclipse 目录复制C惛_装的盘符下就可以了,启动的时候,pȝ会自动寻?/span> JVM ?/span>

具体的安装和汉化q程见我的另一:?/span> Eclipse 3.1.x 汉化q程 ?/span>

4 ?/span> tomcat 插g安装

tomcatPluginV3.1zip 解压后将文g?/span> com.sysdeo.eclipse.tomcat_3.1 拯C?/span> eclipse\plugins 目录下就可以?/span> .

5 ?/span> lomboz 或?/span> myeclipse 的安?/span>

?/span> lomboz 的安?/span>

首先?/span> eclipse 的安装目录下新徏一个名?/span> lomboz 的文件夹

把?/span> lomboz-eclipse-emf-gef-jem-3.1RC2?/span>解压?/span> lomboz 的文件夹下,看一下我的:
lomboz.jpg

 


然后使用
links 方式来安?/span> lomboz 插g : ?/span> links 文g夹下新徏一?/span> lomboz.start( 后缀名Q?/span> ) ?br />

lombozlinks.jpg 




?/span> Myeclipse 的安?br />


见我的另外一:?/span> [原创]My eclipse 4.1(eclipse3.1X插g eclipse企业U工作^?/span>) ?/span>myeclipse插g安装说明 ?/span>

 

三?/span> eclipse 配置
1
?/span> Installed JREs 配置
打开配置界面

如果q几个插件安装成功,左边的列表里应该?/span> lomboz ?/span> tomcat 的选项。如果没有,查上面的步骤是不是正。点?/span> java->Installed JREs Q然后显C如下,如果是初始安装的Q只有显C第一?/span> JRE Q那是系l默认的安装?/span> C 盘的 jre Q如果系l当中安装了多个 jdk Q那么最好还是新Z个,点击 add Q然后选择你需要用的 jdk 的位|,然后它会自动L其他的参敎ͼ点击 ok 。返回界面之后,不要忘记炚w刚刚添加的 jdk Q要不然是没有用的。然后点?/span> ok 关闭q个H口?/span>

2 ?/span> tomcat 配置Q具体见Q?/span> 我的另外一:?/span> [原创]My eclipse 4.1(eclipse3.1X插g eclipse企业U工作^?/span>) ?/span>myeclipse插g安装说明 Q?/span>

q里主要是配|?/span> tomcat 的参敎ͼҎ你安装的 tomcat 的版本,选择 tomcat version Q然后找到该 tomcat 的主目录Q输入在 tomcat home Q下面的参数会自动配|,点击 apply ?/span> 然后在左辚w择 advanced Q同h tomcat 的主目录复制?/span> tomcat base Q点?/span> apply 。最后在左边选择 JVM setting Q选择刚刚加入?/span> jre Q点?/span> apply Q点?/span> ok 。这样就可以了。如果在启动 eclipse 的时候出C个小猫图标,׃?/span> tomcat 配置成功了。见下图

 

 启动界面.jpg

 

 

 

3 ?/span> lomboz/myeclipse 配置

 

基本上不用什么配|,如果在启?/span> eclipse 的时候,在“文件?/span> -> “新建?/span> ->?/span> 其它 ? 列表中多Z :J2EE,EJB, Web Services,Xml {?/span> , 说明 lomboz 安装成功 . 见下?/span> (lomboz 安装成功标志 ) :

?/span> myclipse 只要安装正确 , 在启?/span> eclipse 时?/span> , 只要在菜单栏中多Z ”myeclipse?/span> ?/span> , 则说?/span> myeclipse 安装成功?/span> .
启动界面.jpg
myeclipse安装成功

 

lomboz安装成功标志.BMP

  
?/span> (lomboz 安装成功标志-列表中多Z:J2EE,EJB, Web Services,Xml{?/span> )

xQ?/span> Java Web 开发环境已l配|搭建完毕?/span>



氧气中毒 2006-06-14 15:19 发表评论
]]>
XML配置文g的读取处?http://www.tkk7.com/kobe09/archive/2006/06/14/52754.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:17:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52754.htmlhttp://www.tkk7.com/kobe09/comments/52754.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52754.html#Feedback0http://www.tkk7.com/kobe09/comments/commentRss/52754.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52754.html阅读全文

氧气中毒 2006-06-14 15:17 发表评论
]]>
J2EE体系l构设计Q?Q?/title><link>http://www.tkk7.com/kobe09/archive/2006/06/14/52753.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:15:00 GMT</pubDate><guid>http://www.tkk7.com/kobe09/archive/2006/06/14/52753.html</guid><wfw:comment>http://www.tkk7.com/kobe09/comments/52753.html</wfw:comment><comments>http://www.tkk7.com/kobe09/archive/2006/06/14/52753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kobe09/comments/commentRss/52753.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kobe09/services/trackbacks/52753.html</trackback:ping><description><![CDATA[  目前大多C业采用J2EE技术的l构设计与解x案。对于我们学习和研究J2EE体系l构来说Q了解与掌握J2EE体系l构的设计方法及一些常用模式是必须的;模型-视图-控制(model-view-controlQ简UMVC)l构是目前最常见的J2EE应用所Z的体pȝ构,MVC主要适用于交互式的Web应用Q尤其是存在大量面及多ơ客戯问及数据昄Q相比较而言Q一个工作流体系l构更多应用于过E控制和较少交互的情况下Q除了体pȝ构外QJ2EE的设计模式对我们解决应用pȝ的设计也有很大的帮助?br />  <br />  <b>一、J2EE的模?视图-控制QMVCQ体pȝ?/b><br />  模型-视图-控制l构是交互式应用E序q泛使用的一U体pȝ构。它有效地在存储和展C数据的对象中区分功能模块以降低它们之间的连接度Q这U体pȝ构将传统的输入、处理和输入模型转化为图形显C的用户交互模型Q或者换一U说法,是多层次的Web商业应用QMVC体系l构h三个层面Q模型(ModelQ、视?View)和控?Controller)Q每个层面有其各自的功能作用QMVC体系l构如下Q?br />   <center> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://java.chinaitlab.com/imgfiles/2004.11.17.14.3.10.1.jpg" onload="return imgzoom(this,550)" /></center><br />   <center>? MVC 体系l构</center><br />  <br />  模型层负责表辑֒讉K商业数据Q执行商业逻辑和操作。也是_q一层就是现实生zM功能的Y件模拟;在模型层变化的时候,它将通知视图层ƈ提供后者访问自w状态的能力Q同时控制层也可以访问其功能函数以完成相关的d?br />  <br />  视图层负责显C模型层的内宏V它从模型层取得数据q指定这些数据如何被昄出来。在模型层变化的时候,它将自动更新。另外视囑ֱ也会用L输入传送给控制器?br />  <br />  控制层负责定义应用程序的行ؓ。它可以分派用户的请求ƈ选择恰当的视图以用于昄Q同时它也可以解释用L输入q将它们映射为模型层可执行的操作Q在一个图形界面中Q常见的用户输入包括点击按钮和菜单选择。在Web应用中,它包括对Web层的HTTP GET和POST的请求;控制层可以基于用L交互和模型层的操作结果来选择下一个可以显C的视图Q一个应用程序通常会基于一l相兛_能设定一个控制层的模块,甚至一些应用程序会Ҏ不同的用L型具有不同的控制层设定,q主要是׃不同用户的视图交互和选择也是不同的?br />  <br />  在模型层、视囑ֱ和控制层之间划分责Q可以减少代码的重复度Qƈ使应用程序维护v来更单。同时由于数据和商务逻辑的分开Q在新的数据源加入和数据昄变化的时候,数据处理也会变得更简单?br />  <br />  <b>二、J2EE设计模式</b><br />  一个设计模式描qC对于特定设计问题被验证的解决ҎQ它l合了所有开发者对q个问题所在领域的知识和见解;同时也是对于常见问题的可重用ҎQ它们一般适用于单个问题,但是l织在一起就可以提供整个企业pȝ的解x案。下面我们列丑օU常用于J2EEq_的设计模式,q对每种模式作简单的介绍Q便于大家学习、理解与灉|应用?br />  <br />  1、前控制?br />  <br />  前控制器(front controller)主要提供一U可以集中式理h的控制器Q一个前控制器可以接受所有的客户hQ将每个h递交l相应的h句柄Qƈ适当地响应用戗?br />  <br />  前控制器也是表示层的设计模式Q它的出C要是׃表示层通常需要控制和协调来自不同用户的多个请求,而这U控制机制又Ҏ不同的需要,可能会集中式控制或分散式控制。换句话_是应用pȝ需要对于表C层的请求提供一个集中式控制模块Q以提供各种pȝ服务Q包括内Ҏ取、视囄理和览Q如果系l中没有q种集中式控制模块或控制机制Q每个不同的pȝ服务都需要进行单独的视图处理Q这样代码的重复性就会提高,致ɾpȝ开发代h高;同时Q如果没有一个固定模块管理视图之间的览机制Q致使其览功能下放于每个不同的视图中,最l必得系l的可维护性受到破坏;本文中我们主要讨论的是集中式控制模块Q而不是分散式控制Q因为前者更适合于大型的应用pȝ?br />  <br />  Z上面所说的问题Q研Ih员提Z前控制器的设计模式。在q种模式中,控制器提供一个处理不同请求的控制点,q里的处理工作包括安全事务、视N择、错误处理和响应内容的生成;通过这些处理工作集中在一点进行,大大地减低了Java代码量,同时q种Ҏ也可以减在视图模块的程序逻辑Q保证了在不同请求之间可以重用大量的逻辑代码。通常Q控制器都是和一个分z件联合工作的Q分z件主要是用于视图理和浏览,也就是ؓ用户选择下一个应该显C的视图Qƈ同时提供对于相关昄资源的控制。分z件可以包含在控制器之内,或是在另外一个单独的lg中;虽然前控制器模式推荐对于全部的请求用统一处理Q但是它也没有限制在一个系l中只能h一个控制器Q在pȝ中的每个层次都可以具有多个控制器Qƈ且映至不同的系l服务,下图2昄了前控制器的cd?br />   <center> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://java.chinaitlab.com/imgfiles/2004.11.17.14.3.19.2.jpg" onload="return imgzoom(this,550)" /></center><br />   <center>? 前控制器的类?/center><br />  <br />  ?昄了前控制器的序列图,表示一个控制器如何处理相关的请求?br />   <center> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://java.chinaitlab.com/imgfiles/2004.11.17.14.3.29.3.jpg" onload="return imgzoom(this,550)" /></center><br />   <center>?前控制器序列?/center><br />  <br />  下面我们来讨Z下图3的各个组件?br />  <br />  2、控制器<br />  <br />  控制?controller)是负责处理各U客戯求的控制点,q可以将一定的职能(如用戯证等)下放l帮助类?br />  <br />  (1)分派lg(Dispatcher)。一个分z件主要是用于视图的管理和览Qؓ用户选择下一个可以显C的视图Qƈ理相关的显C源;分派lg可以在一个控制器内运行,或者作Z个单独的lg与控制器协同工作Q开发h员可以在分派lg中实现静态的视图分派技术,或是复杂的动态分z?br />  <br />  (2)帮助c?Helper)。帮助类负责帮助一个视图或控制器来完成其处理工作,因此Q帮助类h多项职责Q包括收集数据、存储中间数据模型等Q另外,帮助cM可以在保证数据完整性和准确性的情况下,Z同显C需求修Ҏ据模型;也就是说Q根据用LhQ帮助类可以向视图提供未l处理的原始数据Q或是已l格式化后的Web内容Q一个视囑֐时可以和多个帮助cd同工作,而后者通常是由JavaBeans和标{?tag)实现的?br />  <br />  3、视?br />  <br />  视图(view)负责向用hCZ息,而帮助类则负责支持视囄工作Q即打包和徏立相应的数据模型Q下面我们介l几U可以实现控制器的方法?br />  <br />  1Q基于Servlet前控制器<br />  <br />  q种Ҏ使用servlet来实C个控制器Q尽在语法上相差无几,但是它比使用JSP来实现要优越一些;因ؓ控制器所q行的请求处理,多数都是与程序运行和控制动相关的,q些处理工作虽然与显C模式相养I但是实际上是逻辑独立的,所以它们更适合在servlet中实玎ͼ而不是JSP技术中Q用这U方法也存在一些弱点,比如说servlet无法使用JSPq行环境的资源,如请求参数等Q但是这个弱点也不是不能解决的,我们可以在servlet中徏立相关的句柄来访问同L资源Q当然其代码会变得繁琐一炏V?br />  <br />  2Q基于JSP的前控制?br />  <br />  q种Ҏ使用JSP面实现控制器,管语法上相同,但是ServletҎ要比其优一些;因ؓ控制器所处理的逻辑一般都不是有关昄模式的,所以在JSP面中实现控制器g有点风马牛不相及Q用这U方法也不利于开发团队的角色和职责的分配Q即软g开发h员需要在负责昄逻辑的JSP面中修改请求处理的代码Q通常Q这U工作都是相当复杂的Q尤其考虑整个JSP面的编E、编译、测试和调试错误?br />  <br />  3Q控制器之中的分z?br />  <br />  如果分派lg没有较多功能Q开发h员可以在控制器实现该lg?br />  <br />  4Q基前端<br />  <br />  Z使用servlet实现前控制器Q这U方案徏议实C个控制器作ؓ基础c,q样其他的控制器可以在其之上扩展Q这个基cd以包含一些通用的逻辑实现Q它的子cd会重载这些实C码,q种Ҏ也有一定的~陷Q当有许多子cȝ承这个基c,q大量地重用代码Ӟ那么有可能出现一个类的改变会影响到所有子cȝ情况?br />  <br />  5Q用qo器实现前控制?br />  <br />  qo器提供了与用戯求的中心处理相类似的功能Q也是_控制器的一些功能可以由qo器来实现Q这U方案的qo器主要负责处理请求的截取和解释,而不是请求的处理和响应的生成Q通常可以为应用系l提供一个核心控制点Q以处理所有的pȝ服务和程序逻辑Q核心控制也p明了所有的h都可以简单地被跟t和记录Q从而方便各U服务功能的实施Q当Ӟ它也存在一些缺点,一个核心控制点的小问题可能会引发系l的崩溃Q但在应用系l的实际开发中Q这q不是个问题Q因为通常我们都会在同一个层面上实现多个控制器,从而避免了q个~陷Q在控制器中Q开发h员可以很方便地实C个检查安全机制的lgQ从而可以在最外层屏蔽对系l的恶意讉KQ另外用控制器也会提高pȝ模块的可重用性,其在控制器同时使用帮助cȝ时候?br />  <br />  4、视囑ָ?br />  <br />  视图帮助(View helper)是属于表C层的设计模式,一个视囑ָ助可以包含相兌图中的数据访问和内容昄的逻辑Qƈ可以_化视图;昄逻辑主要是关于如何格式化面上的数据Q而访问逻辑则是关于如何取出数据Q视囑ָ助通常用来昄数据的JSP标记(tag)或是d数据的JavaBean?br />  <br />  q种设计模式的出C要是׃目前的应用系l通常需要实时地开发显C内容,q且能处理动态的E序数据。如果这些程序数据的讉K逻辑和显C逻辑的关p过于紧密,则系l的表示层就会经帔R要改动,从而系l的灉|性、重用性会大大地受到破坏;同时在相同的模块中实现访问逻辑和显C逻辑会影响pȝ的模块化<img src ="http://www.tkk7.com/kobe09/aggbug/52753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:15 <a href="http://www.tkk7.com/kobe09/archive/2006/06/14/52753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA学习之\Q不走弯路,是捷径(? http://www.tkk7.com/kobe09/archive/2006/06/14/52752.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:15:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52752.htmlhttp://www.tkk7.com/kobe09/comments/52752.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52752.html#Feedback1http://www.tkk7.com/kobe09/comments/commentRss/52752.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52752.htmlJAVA学习之\---学习路线及要?br />
2QY件开发学习\U?/b>

两千多年的儒家思想孔孟之道Q中庸的思想透入骨髓Q既不冒q也不保守ƈ非中怹道,而是扑֯学习软g开发的正确路线与规律?br />
从Y件开发h员的生规划来讲Q我们可以大致分Z个阶D,软g工程师→软g设计师→架构设计师或目理师。不惛_元帅的士兵不是好士兵Q不惛_架构设计师或目理师的E序员也不是好的E序员。我们应该努力往上走。让我们先整理一下开发应用Y仉要学习的主要技术?br />
AQ基理论知识Q如操作pȝ、编译原理、数据结构与法、计机原理{,它们q不重要。如不想成ؓ计算机科学家的话Q可以采?用到的时候再来学"的原则?br />
BQ一门编E语aQ现在基本上都是面向对象的语aQJAVA/C++/C#{等。如果做WEB开发的话还要学习HTML/JavaScript{等?br />
CQ一U方法学或者说思想Q现在基本都是面向对象思想QOOA/OOD/设计模式Q。由此而衍生的Zlg开发CBD/面向斚w~程AOP{等?br />
DQ一U关pd数据库,ORACLE/SqlServer/DB2/MySQL{等

EQ一U提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET{?br />
FQ一UUML建模工具Q用ROSE/VISIO/钢笔q行建模?br />
GQ一UY件过E,RUP/XP/CMM{等Q通过软gq程来组lY件开发的众多zdQ开发流E专业化规范化。当然还有其他的一些Y件工E知识?br />
HQ项目管理、体pȝ构、框架知识?br />
正确的\U应该是QB→C→E→F→G→H?br />
q需要补充几点:

1Q.对于A与C要补充的是,我们应该在实践中逐步领悟~程理论与编E思想。新技术虽然不断涌玎ͼ更新速度令hD燎ؕN看花Q但万变不离其宗Q编E理Z~程思想的变化却很慢。掌握了~程理论与编E思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一Q在上面需要多投入旉Q给你的回报也会让你惊喜?br />
2Q.对于数据库来说是独立学习的,q个时机q你来军_吧?br />
3Q.~程语言作ؓ学习软g开发的ȝQ而其余的作ؓ辅线?br />
4Q.软g工程师着重于B、C、E?DQY件设计师着重于B、C、E?D、FQ架构设计师着重于C、F、H?br />
3Q如何学习JAVA?

3.1 JAVA学习路线

3.1.1 基础语法及JAVA原理

基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上徏摩天大厦Q是相当危险的。学习JAVA也是如此Q必要有扎实的基础Q你才能在J2EE、J2ME领域游刃有余。参加SCJPQSUN公司认证的JAVAE序员)考试不失Z个好ҎQ原因之一是ؓ了对得v你交?200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基打得很牢靠,它要求你跟JDK一L悉JAVA基础知识Q但是你千万不要认ؓ考过了SCJP有多了不vQ就能够获得软g公司的青睐,p够获取高薪,q样的想法也是很危险的。获?真正"的SCJP只能证明你的基础q过得去Q但d际开发还有很长的一D\要走?br />
3.1.2 OO思想的领?br />
掌握了基语法和JAVAE序q行原理后,我们可以用JAVA语言实现面向对象的思想了。面向对象,是一U方法学;是独立于语言…?br />…?br />…?br />3.2.5 不局限于JAVA

很不q,很幸q,要学习的东西q有很多。不q的是因学的东西太多且多变,没时间陪老婆家h或女朋友Q导致n心疲惫,严重者甚臛_致抑郁症。幸q的是别抢你饭碗l非易事Q他们或她们需要付出很多才能达成心ѝ?br />
JAVA不要孤立地去学习Q需要综合学习数据结构、OOP、Y件工E、UML、网l编E、数据库技术等知识Q用横向U向的比较联想的方式d习会更有效。如学习JAVA集合的时候找数据l构的书看看Q学JDBC的时候复习数据库技术;采取的依然是"需要的时候再?的原则?br />
4Q结束语

需要强调的是,学习软g开发确实有一定的隑ֺQ也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在JAVA殿之外的朋友有所帮助的话Q笔者也ƣ慰了。哈哈,怎么听v来老气横秋呀Q没办法Q在电脑的长期辐之下,都快变成老头了。最后奉劝各位程序员其是MME序员,完成工作后赶快远ȝ脑,据《胡播ؕ报》报道,电脑辐射会在白皙的皮肤上面点~一些小黑点Q看h鲜艳无比…?img src ="http://www.tkk7.com/kobe09/aggbug/52752.html" width = "1" height = "1" />

氧气中毒 2006-06-14 15:15 发表评论
]]>
JAVA学习之\Q不走弯路,是捷径(一) http://www.tkk7.com/kobe09/archive/2006/06/14/52751.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:14:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52751.htmlhttp://www.tkk7.com/kobe09/comments/52751.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52751.html#Feedback0http://www.tkk7.com/kobe09/comments/commentRss/52751.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52751.html0Q引a

在ChinaITLAB导师制辅gQ笔者发现问得最多的问题莫过?如何学习~程QJAVA该如何学习?"。类似的问题回答多了Q难免会感觉厌烦Q就萌生了写下本文的x。到时候再有h问vcM的问题,我可以告诉他Q她Q,请你ȝ看《JAVA学习之\》。拜读过****蔡学镛先生的《JAVA夜未眠》,有些文章如《JAVA学习之道》等让我们确实有共鸣Q本文题目也由此而来?br />
软g开发之路是充满荆棘与挑战之?也是充满希望之\。JAVA学习也是如此Q没有捷径可走。梦惛_《天龙八部》中虚竹一栯无崖子醍醐灌而轻松获得一甲子功力Q是很不现实的。每天Ԓ天大?天神啊,误l我一本葵花宝典吧"Q殊不知即你获得了葵花宝典Q除了受自宫其n之苦外,你也不一定成得了"东方不|"Q倒是?西方p|"的几率高一炏V?br />
"不走弯\Q就是捷?Q佛l说的不无道理?br />
1Q如何学习程序设计?

JAVA是一U^収ͼ也是一U程序设计语aQ如何学好程序设计不仅仅适用于JAVAQ对C++{其他程序设计语a也一L用。有~程高手认ؓQJAVA也好C也好没什么分别,拿来q。ؓ什么他们能辑ֈ如此境界Q我x因ؓ~程语言之间有共通之处,领会了编E的_NQ自然能够做C通百通。如何学习程序设计理所当然也有许多共通的地方?br />
1.1 培养兴趣

兴趣是能够让你坚持下ȝ动力。如果只是把写程序作生的手段的话Q你会活的很累,也太对不赯׃。多兛_一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但h要是没有了梦惻I你觉得有味道吗?可能像许多深x地农民一P打打dQ喝喝功夫茶Q拜拜胦爷Q每个月有几万十几万甚x多的q帐Q凭I多Z"食利阶层"。你认ؓQ这h味道吗?有空多到一些程序员论坛转{Q你会发玎ͼ他们其实很乐观幽默,时不时会冒出智慧的火花?br />
1.2 慎选程序设计语a

h入错行Q女怕嫁错郎。初学者选择E序设计语言需要}慎对待。Y件开发不仅仅是掌握一门编E语a了事Q它q需要其他很多方面的背景知识。Y件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落?br />
如果你对g比较感兴,你可以学习C语言/汇编语言Q进入硬件开发领域。如果你对电信的行业知识及网l比较熟悉,你可以在C/C++{之上多花时_以期q入电信软g开发领域。如果你Ҏ作系l比较熟悉,你可以学习C/Linux{等,为Linux内核开?驱动E序开?嵌入式开发打基础。如果你想介入到应用范围最q泛的应用Y件开发(包括电子商务电子政务pȝQ的话,你可以选择J2EE?NETQ甚至LAMPl合。每个领域要求的背景知识不一栗做应用软g需要对数据库等很熟悉。MQ你需要根据自q特点来选择合适你的编E语a?br />
1.3 要脚t实?快餐式的学习不可?/b>

先分享一个故事?br />
有一个小朋友Q他很喜Ƣ研I生物学Q很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞?有一ơ,他走到草原上面看见一个蛹Q便取了回家Q然后看着Q过了几天以后,q个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,x破蛹壳飞出来?q个q程达数时之久Q蝴蝶在蛚w面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,想不如让我帮帮它吧Q便随手拿v剪刀在蛹上剪开Q蝴蝶破蛹而出?但蝴蝶出来以后,因ؓ膀不够力,变得很臃肿,飞不h?br />
q个故事l我们的启示是:Ʋ速则不达?br />
躁是现代h最普遍的心态,能怪谁Q也许是贫穷落后了这么多q的~故Q就像当q的大跃q一P都想大步跨入****MC会。现在的软g公司、客戗?***、学校、培训机构等{到处I漫着躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧,居然有的打广告宣U?参加培训Q?00%׃"Q居然报名的学生不少Q简直是藐视天下E序员。社会环境如是,我们不能改变Q只能改变自?闹市中的安宁QI珍c许多初学者C++/JAVA没开始学Q立马用VC/JBuilder,会用VC/JBuilder开发一个Hello WorldE序Q就忙不q的向世界宣告,"我会软g开发了"Q简历上也大a不惭地写?_NVC/JAVA"。结果到软g公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧v《C++~程思想》《JAVA~程思想》仔l钻研,早知如此何必当初呀?br />
"你现在讲I简单方便,你以后的路就长了"Q好象也是佛l中的劝戒?br />
1.4 多实?快实?/b>

彭端淑的《ؓ学一首示子侄》中有穷和尚与富和尚的故事?br />
从前Q四川边境有两个和尚Q一个IP一个有钱。一天,I和对富和说Q?我打去南v朝圣Q你看怎么P"富和说Q?q里dh几千里远Q你靠什么去呢?"I和说Q?我只要一个水钵,一个饭就够了?富和ؓ隑֜_"几年前我打买条船dP可至今没LQ你q是别去吧!" 一q以后,富和还在ؓU赁船只{wQ穷和尚却已l从南v朝圣回来了?br />
q个故事可解MؓQQ何事情,一旦考虑好了Q就要马上上路,不要{到准备周全之后Q再d事情。假如事情准备考虑周全了再上\的话Q别人恐怕捷_M。Y件开发是一门工E学U,注重的就是实践,"君子动口不动?对Y件开发h员来讲根本就是错误的Q他们提?动手至上"Q但别害怕,他们大多温文雅Q没有暴力們֐Q虽然有时候蓬头垢面的一?比尔盖茨"栗有前辈高h认ؓQ学习编E的U诀是:~程、编E、再~程Q笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要{到你完全理解了才动手敲代码Q而是应该在看书的同时敲代码,E序q行的各U情况可以让你更快更牢固的掌握知识点?br />
1.5 多参考程序代?/b>
…?br />…?br />…?br />

1.9 使用合适的工具

工欲善其事必先利其器。Y件开发包含各U各LzdQ需求收集分析、徏立用例模型、徏立分析设计模型、编E实现、调试程序、自动化试、持l集成等{,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使Y件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤h的境界就很高了,无招胜有招,手中无剑心中有剑q样的境界几乎不可企及。在W者另外一文章中会专门阐q如何选择合适的工具Q该文章也可作ؓ本文的姊妹篇Q?br />

氧气中毒 2006-06-14 15:14 发表评论
]]>
Eclipse q_入门 http://www.tkk7.com/kobe09/archive/2006/06/14/52750.html氧气中毒氧气中毒Wed, 14 Jun 2006 07:13:00 GMThttp://www.tkk7.com/kobe09/archive/2006/06/14/52750.htmlhttp://www.tkk7.com/kobe09/comments/52750.htmlhttp://www.tkk7.com/kobe09/archive/2006/06/14/52750.html#Feedback0http://www.tkk7.com/kobe09/comments/commentRss/52750.htmlhttp://www.tkk7.com/kobe09/services/trackbacks/52750.html  本文为您提供关于 Eclipse q_的概qͼ包括其v源和体系l构。本文首先简要讨?Eclipse 的开放源代码性质及其对多U编E语a的支持,然后通过一个简单的E序例子展示 Java 开发环境。本文还考查以插件扩展Ş式可用的一些Y件开发工Pq展CZ个用?UML 建模的插件扩展?

  Eclipse 是什么?

  Eclipse 是一个开放源代码的、基?Java 的可扩展开发^台。就其本w而言Q它只是一个框架和一l服务,用于通过插glg构徏开发环境。幸q的是,Eclipse 附带了一个标准的插g集,包括 Java 开发工PJava Development ToolsQJDTQ?/p>

  虽然大多数用户很乐于?Eclipse 当作 Java IDE 来用,?Eclipse 的目标不仅限于此。Eclipse q包括插件开发环境(Plug-in Development EnvironmentQPDEQ,q个lg主要针对希望扩展 Eclipse 的Y件开发h员,因ؓ它允总们构Z Eclipse 环境无缝集成的工兗由?Eclipse 中的每样东西都是插gQ对于给 Eclipse 提供插gQ以及给用户提供一致和l一的集成开发环境而言Q所有工具开发h员都h同等的发挥场所?/p>

  q种q等和一致性ƈ不仅限于 Java 开发工兗尽?Eclipse 是?Java 语言开发的Q但它的用途ƈ不限?Java 语言Q例如,支持诸如 C/C++、COBOL ?Eiffel {编E语a的插件已l可用,或预计会推出。Eclipse 框架q可用来作ؓ与Y件开发无关的其他应用E序cd的基Q比如内容管理系l?/p>

  Z Eclipse 的应用程序的H出例子?IBM ?WebSphere Studio WorkbenchQ它构成?IBM Java 开发工L列的基础。例如,WebSphere Studio Application Developer d了对 JSP、servlet、EJB、XML、Web 服务和数据库讉K的支持?/p>

  Eclipse 是开放源代码的Y?/strong>

  开放源代码软g是这样一UYӞ它们在发布时附带了旨在确保将某些权利授予用户的许可证。当Ӟ最明显的权利就是源代码必须可用Q以便用戯自由C改和再分发该软g。这U用h利的保护是通过一U称?copyleft 的策略来完成的:软g许可证主张版权保护,除非明确授予用户q样的权利,否则用户不得分发该Y件。copyleft q要求同一许可证涵盖Q何被再分发的软g。这实际上倒置了版权的目的——用版权来授予用户权利Q而不是ؓ软g的开发者保留版权——copyleft l常被描qCؓ“保留所有版权”?/p>

  曄四处蔓g的对开放源代码软g的许多恐惧、担忧和疑虑Q都与某?copyleft 许可证的所谓“病毒”性质有关——如果用开放源代码软g作ؓ您开发的E序的一部分Q您失去自q知识产权Q因许可证将“传染”您开发的专有部分。换句话_该许可证可能要求与开放源代码软g一h包的所有YӞ都必d相同的许可证之下发布。虽然这Ҏ著名?copyleft 许可证(?GNU 通用公共许可证,例如 Linux 是在该许可证之下发布的Q来说可能是事实Q当时还有其他许可证在商业化和社虑之间提供了较好的q?/p>

  开放源代码计划QOpen Software InitiativeQ是一安营利机构Q它明确定义了开放源代码的含义及满其标准的认证许可证。Eclipse 是在 OSI 认可的通用公共许可证(CPLQ?.0 版之下被授予许可证的QCPL“旨在促q程序的商业化用……”(Ʋ获得指向通用公共许可?1.0 版完整文本的链接Q请参阅本文E后?参考资料)?/p>

  ?Eclipse 创徏插g或将 Eclipse 用作软g开发应用程序基的开发h员,需要发布他们在 CPL 下用或修改的Q?Eclipse 代码Q但是他们可以自由决定自己添加的代码的许可证授予方式。与 Eclipse 的Y件一h包的专有代码不需要作为开放源代码来授予许可证Q该源代码也不需要提供给用户?/p>

  管大多数开发h员不会?Eclipse 来开发插Ӟ或创建基?Eclipse 的新产品Q但?Eclipse 的开放源代码性质所意味的,q不只是它?Eclipse 免费可用Q尽便于商业化的许可证意味着插g可能要花钱)。开放源代码鼓励创新QƈȀ励开发h员(甚至是商业开发h员)为公共开放源代码库A献代码。对此存在许多原因,不过最本质的原因或许是个项目作贡献的开发h员越多,q个目׃变得Ҏ个h都越宝贵。随着q个目变得更加有用Q更多的开发h员将会用它Qƈ围绕它Ş成一个社区,像那些围绕 Apache ?Linux 形成的社Z栗?/p>

  Eclipse 是什么机构?

  Eclipse.org 协会理和指?Eclipse 正在q行中的开发。在据说 IBM ׃ 4000 万美元开?EclipseQƈ把它作ؓ一个开放源代码目发布之后QEclipse.org 协会吸收了许多Y件工h供商Q包?Borland、Merant、Rational、RedHat、SuSE、TogetherSoft ?QNX。从那以后还有其他公司相l加入,包括 Hewlett Packard、Fujitsu、Sybase。这些公司分别向理事会派了一名代表,q个理事会负责确?Eclipse 目的方向和范围?/p>

  在最高层Q项目管理委员会QProject Management CommitteeQPMCQ管理着 Eclipse 目。这个项目被划分为多个子目Q每个子目都有一名负责h。大型子目又被划分为组Q每个组也有一名负责h。目前,q其中的大多数管理角色都由最初开?Eclipse ?IBM 子公?Object Technology International (OTI)的h担QQ但是作Z个开放源代码的项目,它欢qQ何h的参与。Q何特定部门的职责是通过该部门对目的A献来争取的?/p>

  现在我们已经考察?Eclipse 背后的一些理论、历史和理Q下面让我们考察该品本w?/p>

  Eclipse 工作?/strong>

  在第一ơ打开 Eclipse Ӟ首先看到的是下面的欢q屏q:


?1. Eclipse 工作?/p>

  Eclipse 工作台由几个UCؓ 视图QviewQ?的窗格组成,比如左上角的 Navigator 视图。窗格的集合UCؓ 透视图(perspectiveQ。默认的透视图是 Resource 透视图,它是一个基本的通用视图集,用于理目以及查看和编辑项目中的文件?/p>

  Navigator 视图 允许您创建、选择和删除项目。Navigator 右侧的窗格是 ~辑器区?/strong>。取决于 Navigator 中选定的文档类型,一个适当的编辑器H口在q里打开。如?Eclipse 没有注册用于某特定文档类型(例如QWindows pȝ上的 .doc 文gQ的适当~辑器,Eclipse 设法用外部编辑器来打开该文档?/p>

  Navigator 下面?Outline 视图 在编辑器中显C文档的大纲Q这个大U的准确性取决于~辑器和文档的类型;对于 Java 源文Ӟ该大U将昄所有已声明的类、属性和Ҏ?/p>

  Tasks 视图 攉关于您正在操作的目的信息;q可以是 Eclipse 生成的信息,比如~译错误Q也可以是您手动d的Q务?/p>

  该工作台的大多数其他Ҏ,比如菜单和工hQ都应该和其他那些熟悉的应用E序cM。一个便利的Ҏ就是不同透视囄快捷方式工具栏,它显C在屏幕的左端;q些Ҏ随上下文和历史的不同而有显著差别。Eclipse q附带了一个健壮的帮助pȝQ其中包?Eclipse 工作C及所包括的插Ӟ比如 Java 开发工P的用h南。至浏览一遍这个帮助系l是值得的,q样可以看到有哪些可用的选项Q同时也可更好地理解 Eclipse 的工作流E?/p>

  为l这个短暂的 Eclipse 之旅Q我们将?Navigator 中创Z个项目。右键单?Navigator 视图Q然后选择 New=>Project。当 New Project 对话框出现时Q选择左面?Java。标?Eclipse 只有一U?Java 目cdQ名为“Java Project”。如果安装了插g来提?JSP ?servlet 支持Q我们会从这里看C个用?Web 应用E序的附加选项。眼下,请选择 Java ProjectQ在提示目名称时输入“Hello”,然后?Finish?/p>

  接下来,我们检查一?Java 透视图。取决于您喜Ƣ的屏幕理方式Q您可以通过选择 Window=>Open Perspective=>Java 来改变当前窗口中的透视图,也可以通过选择 Window=>New WindowQ然后再选择q个新的透视图,从而打开一个新的窗口?/p>

  正如您可能预期的那样QJava 透视囑֌含一l更适合?Java 开发的视图。其中之一是左上角的视图Q它是一个包含各U?Java 包、类、jar 和其他文件的层次l构。这个视囄?Package Explorer。还要注意主菜单已经展开了——ƈ且出C两个新的菜单:Source ?Refactor?/p>

  Java 开发环境(JDEQ?/strong>

  验一?Java 开发环境,我们创建ƈq行一个“Hello, world”应用程序。?Java 透视图,右键单击“Hello”项目,选择 New=>ClassQ如?2 所C。在随后出现的对话框中,键入“Hello”作为类名称。在“Which method stubs would you like to create?”下面,选中“public static void main(String[] args)”复选框Q然后按 Finish?/p>


?2. ?Java 透视图中创徏新类

  q样在~辑器区域创Z个包?Hello cdI的 main() Ҏ?.java 文gQ如?3 所C。然后向该方法添加如下代码(注意其中 i 的声明是有意省略了的Q:


?3. Java ~辑器中?Hello c?/p>

  您会在键入时注意?Eclipse ~辑器的一些特性,包括语法查和代码自动完成。在 2.1 版(我曾下蝲 M2 版来试用q)中,当您键入开括号或双引号ӞEclipse 会自动提供配对的W号Qƈ光标置于符号对之内?

  在其他情况下Q您可以通过?Ctrl-Space 来调用代码自动完成功能。代码自动完成提供了上下文敏感的列表Q您可通过键盘或鼠标来从列表中选择。这些徏议可以是针对某个特定对象的方法列表,也可以是Z不同的关键字Q比?for ?whileQ来展开的代码片断?/p>

  语法查依赖增量编译。每当您保存代码Q它在后台接受~译和语法检查。默认情况下Q语法错误将以红色下划线昄Q一个带?“X?的红点将出现在左Ҏ。其他错误在~辑器的左边沉K过灯状的图标来指C;q些是~辑器或许能为您修复的问题——即所谓的Quick FixQ快速修复)Ҏ?/p>

  上面的代码例子在 for 语句后面有一个灯泡状图标Q因?i 的声明被省略了。双击该图标调出徏议的修复列表。在此例中,它将提供创徏一个类字段 i、一个局部变?i 或一个方法参?i 的徏议;单击其中的每一个徏议都会显C将要生成的代码。图 4 昄了该列表和徏议创Z个局部变量之后生成的代码?/p>


?4. Quick Fix

  双击该徏议就会把代码插入C码中的恰当位|?

  一旦代码无错误地编译完成,您就能够?Eclipse 菜单上选择 Run 来执行该E序Q注意这里不存在单独的编译步骤,因ؓ~译是在您保存代码时q行的。如果代码没有语法错误,它就可以q行了)。这时会出现一个具有适当默认讄?Launch Configurations 对话框;h右上角的 Run 按钮。一个新的选项卡式H格出现在下面的窗|控制収ͼ中,其中昄了程序的输出Q如?5 所C?/p>


?5. E序的输?/p>

  也可以在 Java 调试器中q行E序。首先双ȝ辑器视图左端的灰色边沿,从而在调用 System.out.println() 之后?main() System.out.println() 中设|一个断炏V一个蓝色的点将会出现在那里。然后从 Run 菜单上选择 Debug。正如上面描q的Q这时会出现一?Launch Configurations 对话框。请选择 Run。透视囑ְ自动切换?Debug 透视图,其中h许多有趣的新视图Q如?6 所C:


?6. Debug 透视?/p>

  首先Q请注意该透视囑ַ上角?Debug 视图。这个视图显C用堆栈,q且标题栏中有一个工hQ它允许您控制程序的执行Q包括l、挂hl止E序、跟t下一个语句、单步执行下一个语句,或者从Ҏq回?/p>

  右上角的H格包含许多选项卡式的视图,包括 Variables、Breakpoints、Expressions ?Display。这里我单击?Variables 视图Q以便我们能够看?i 的当前倹{?/p>

  可以通过上下文敏感的帮助Q获得关于这些视囄更多信息Q单击视囄标题Q然后按 F1?/p>

  附加插g

  除了?JDT q样用于~辑、编译和调试应用E序的插件外Q还有些可用的插件支持从建模、生成自动化、单元测试、性能试、版本控制到配置理的完整开发过E?/p>

  Eclipse 标准地附带了配合 CVS 使用的插ӞCVS 是用于源代码控制的开放源代码q发版本pȝQConcurrent Versions SystemQ。Team 插gq接?CVS 服务器,允许开发团队的成员操作一l源代码文gQ却不会怺覆盖其他人的更改。这里不打算q一步探讨如何从 Eclipse 内部q行源代码控Ӟ因ؓq需要安?CVS 服务器,不过支持开发团队而不只是独立的开发,q是 Eclipse 的一个重要的必备Ҏ?/p>

  已经可用或已宣布要推出的一些第三方插g包括Q?/p>

  版本控制和配|管?/strong>

  ?CVS
  ?Merant PVCS
  ?Rational ClearCase

  UML 建模

  ?OMONDO EclipseUML
  ?Rational XDE (代替 Rose)
  ?Together WebSphere Studio Edition

  囑Ş

  ?Batik SVG
  ?Macromedia Flash

  Web 开发、HTML、XML

  ?Macromedia Dreamweaver
  ?XMLBuddy

  应用服务器集?/strong>

  ?Sysdeo Tomcat launcher

  Ʋ了解可用插件的更完整列表,请参?Eclipse 插g列表?/p>

  例子Q一个用?UML 建模的插?/p>

  要查看插件的例子Q以及查看它是如何与 Eclipse 集成的,请下载流行的 OMONDO EclipseUMLQ您需要注册,不过该插件是免费的。这个插件依?GEFQ即 Graphical Editor FrameworkQ这是另一?Eclipse 插g。GEF ?Tools 子项目的一部分。要下蝲 GEFQ请转到 Eclipse Web 站点Q选择“downloads”,然后单击“Tools PMC downloads page”链接。注意您需要下?OMONDO 推荐?GEF 版本Q针?OMONDO 1.0.2 的是 GEF 2.0 版)?/p>

  下蝲之后Q插件的安装通常是通过解压~下载文Ӟq将其内容复制到 Eclipse 插g目录来完成的。在此例中,GEF 需要解压羃?Eclipse目录Q它自动从该目录进入插件目录)。ؓ安全赯Q您可能惛_它解压羃到某个时目录,再相应地从那里复制相关目录。如?Eclipse 正在q行Q您需要停止它然后再重新启动它Q这样它才能识别新安装的插g?/p>

  一?EclipseUMLQ以?GEFQ安装完成,您就能够像创Z?Java cL件一样创Z个类图。在 Java 透视图中Q右键单?Package Explorer 中的“Hello”项目,然后从弹单上选择 New=>Other。New 对话框的左边H格中将会有一个用?UML 的新选项。EclipseUML 的免费版本仅支持cdQ因此右侧的惟一选项?UML Class Diagram。请选择 UML Class DiagramQ然后ؓ该类N入一个名Uͼ比如“Hello”:


?7. Class Diagram ~辑?/p>

  ~辑器区域中会出现一个图形编辑器Q它带有用于l制cd的画布。您可以通过两种方式创徏cdQ通过?Java 文g?Package Explorer 拖放到类图上Q从而对现有代码q行逆向工程Q或者用空白类图上面工h中可用的l制工具。要试验W一U方法,请创Z个名?Person 的新c(使用 File=>New=>ClassQ,然后赋予它下面列出的两个U有属性:


/** Person.java
 * @author david
 */
public class Person {
private String name;
private Address address;

/**
 * Returns the address.
 * @return Address
 */
public Address getAddress() {
         return address;
}

/**
 * Returns the name.
 * @return String
 */
public String getName() {
        return name;
}

/**
 * Sets the address.
 * @param address The address to set
 */
public void setAddress(Address address) {
        this.address = address;
}

/**
 * Sets the name.
 * @param name The name to set
 */
public void setName(String name) {
       this.name = name;
}

}

  Q应该承认,我仅键入了针?name ?address 的行。getter ?setter Ҏ是通过 Eclipse 自动生成的,卛_键单L代码Q然后从弹出菜单上选择 Source=>Generate Getter and Setter 。)

  请保存ƈ关闭 Person.java Hello.ucd?/p>


?8. Person cd

  要从 UML 创徏 Java c,请单ȝ囄口顶部工h上的“New class”按钮,卛_L三个按钮Q然后单ȝ图。当 New cd导打开Ӟ请键?Adress 作ؓcdUͼ然后?Finish?/p>

  您可以右键单ȝ名称q择 New=>AttributeQ从而给cL加属性。在 New 属性对话框中,误入属性名U、类型和可见性。然后右键单ȝ名称q择 New=>Method 来添加方法?/p>

  当您更改cdӞ图下面的 Source Editor H口反映所做的更改。最后,您可以单?Association 按钮Q左L五个Q,l制一条从 Person cL?Address cȝU段Q从而绘制这两个cM间的关系图。这样会调出另外一个对话框Q您可以在其中输入关联属性(请参?EclipseUML 帮助Q以了解关于必需信息的更多内容)。完成后的图应该cM如下Q?/p>


?9. 兌

  q个 UML 插g展示?Eclipse 插g的几个典型特炏V首先,它展CZ工具之间的紧密集成。表面上l对无法看出有多个组件在工作Q与 Eclipse q_?JDT 的集成是无缝的。例如,?Person c被创徏Ӟ它显C法错误是因ؓ它的一个属?Address 没有定义。一?Address cd UML 图中创徏完成Q这些组件就会分开昄出来?/p>

  另一个特Ҏ EclipseUML 利用其他插g提供的功能的能力——在此例中是 GEF 插gQ它提供用于开发可视化~辑器的工具?/p>

  q有另一个特Ҏ?EclipseUML 插g使用多层ơ功能来分发的方式。支持类囄基本插g是免费的Q但是更成熟的版本要付费才能使用?/p>

  Eclipse q_体系l构
  Eclipse q_是一个具有一l强大服务的框架Q这些服务支持插Ӟ比如 JDT 和插件开发环境(PDEQ。它由几个主要的部分构成Q^台运行库、工作区、工作台、团队支持和帮助?/p>


?10. Eclipse q_体系l构

  q_
  q_q行库是内核Q它在启动时查已安装了哪些插Ӟq创建关于它们的注册表信息。ؓ降低启动旉和资源用,它在实际需要Q何插件时才加载该插g。除了内核外Q其他每样东襉K是作为插件来实现的?/p>

  工作?
  工作区是负责理用户资源的插件。这包括用户创徏的项目、那些项目中的文Ӟ以及文g变更和其他资源。工作区q负责通知其他插g关于资源变更的信息,比如文g创徏、删除或更改?

  工作?
  工作Cؓ Eclipse 提供用户界面。它是用标准窗口工具包QSWTQ和一个更高?APIQJFaceQ来构徏的;SWT ?Java ?Swing/AWT GUI API 的非标准替代者,JFace 则徏立在 SWT 基础上,提供用户界面lg?/p>

  SWT 已被证明?Eclipse 最具争议的部分。SWT ?Swing ?SWT 更紧密地映射到底层操作系l的本机囑Ş功能Q这不仅使得 SWT 更快速,而且使得 Java E序h更像本机应用E序的外观和感觉。用这个新?GUI API可能会限?Eclipse 工作台的可移植性,不过针对大多数流行操作系l的 SWT UL版本已经可用?/p>

  Eclipse ?SWT 的用只会媄?Eclipse 自n的可UL性——?Eclipse 构徏的Q?Java 应用E序都不会受到媄响,除非它们使用 SWT 而不是?Swing/AWT?/p>

  团队支持
  团队支持lg负责提供版本控制和配|管理支持。它Ҏ需要添加视图,以允许用户与所使用的Q何版本控制系l(如果有的话)交互。大多数插g都不需要与团队支持lg交互Q除非它们提供版本控制服务?/p>

  帮助
  帮助lgh?Eclipse q_本n相当的可扩展能力。与插g?Eclipse d功能相同Q帮助提供一个附加的Dl构Q允许工具以 HTML 文g的Ş式添加文档?/p>

  Eclipse 的前?br />  围绕 Eclipse 的开发正处于关键阶段。主要Y件工h供商都参与进来了Qƈ且开放源代码 Eclipse 插g目的数量正在与日俱增?/p>

  可移植、可扩展、开放源代码的框架ƈ不是个新思想Q您会想?EmacsQ,但是׃它成熟、健壮和优雅的设计,Eclipse 带来了全新的动力。IBM 价?4000 万美元的世界UY件在开放源代码领域的发布,l业界带来了久违的震撹{?/p>

氧气中毒 2006-06-14 15:13 发表评论
]]>
Structs中基本配|入?/title><link>http://www.tkk7.com/kobe09/archive/2006/06/14/52749.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:12:00 GMT</pubDate><guid>http://www.tkk7.com/kobe09/archive/2006/06/14/52749.html</guid><wfw:comment>http://www.tkk7.com/kobe09/comments/52749.html</wfw:comment><comments>http://www.tkk7.com/kobe09/archive/2006/06/14/52749.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/kobe09/comments/commentRss/52749.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kobe09/services/trackbacks/52749.html</trackback:ping><description><![CDATA[  1.为Structs应用配置Web.xml文g<br />  <br />  W一?配置ActionServlet<br />  <br />  <servlet><br />  <servlet-name>action</servlet-name><br />  <servlet-class>org.appache.structs.ActionServlet</servlet-class><br />  </servlet><br />  <br />  <servlet-mapping><br />  <servlet-name>action</servlet-name><br />  <uri-pattern>*.do</url-pattern><br />  </servlet-mapping><br />  <br />  注意:不管应用中包含多个子应?都只需配置一个ActionServlet,因ؓActionServlet支持多线E?目前的Structs框架只允许在应用中配|一个ActionServlet?br />  <br />  W二步:初始化参数对Servlet的运行环境进行初始化配置?br />  <br />  <servlet><br />  <servlet-name> action</servlet-name><br />  <servlet-class> org.appache.structs.ActionServlet </servlet-class><br />  <init-param><br />  <param-name>config</param-name><br />  <param-value>/WEB-INF/structs-config.xml</param-value><br />  </init-param><br />  </servlet><br />  <br />  ?-1. Struts1.1中用到的初始化参?br />  <br />  参数名       含义/默认?br />  config     以相对\径的方式指明Struts应用E序的配|文件位|。如不设|,则默认gؓ/WEB-INF/struts-config.xml?br />  config/sub1   以相对\径的方式指明子应用程序的配置文g位置Q一般来_很少用到子应用程序,在此不多描述?br />  debug      讄Servlet的debugU别Q控制日志记录的详细E度。默认ؓ0Q记录相Ҏ的日志信息?br />  detail     讄Digester的debugU别QDigester是Struts框架所使用的用来解析xml配置文g的一个框Ӟ通过该设|,可以查看不同详细{的解析日志。默认ؓ0Q记录相Ҏ的日志信息?br />  <br />  W三步:配置Ƣ迎清单<br />  <br />  当客戯问Web应用Ӟ如果仅仅l出Web应用的Root URLQ没用指定具体的文g名,Web容器会自动调用Web应用的欢q文件?br />  <br />  <welcome-file-list><br />  <welcome-file>welcome.jsp</welcome-file><br />  <welcome-file>index.jsp</welcome-file><br />  </welcome-fiel-list><br />  <br />  说明Q?lt;welcome-file-list>可以包含多个<welcome-file>子元素,首先查找W一?lt;welcome-file>文g?br />  <br />  ׃<welcome-file-list>元素中不能配|Servlet映射Q因此不能直接把Structs的Action作ؓƢ迎文gQ可以采用一U变通的Ҏ来实现在Ƣ迎文g中调用Structs Action。首先,在Structs配置文g中ؓ被调用的Action创徏一个全局的{发项Q例如:<br />  <global-forwards><br />  <forward name=”welcome?path=”HelloWord.do?><br />  </global-forwords><br />  <br />  创徏一个welcome.jsp的文?br />  <br />  最后在web.xml文g中把welcome.jsp文g配置为欢q文Ӟ代码如下Q?br />  <welcome-file-list><br />  <welcome-file>welcome.jsp</welcome-file><br />  </welcome-file-list><br />  <br />  W四步:配置错误处理<br />  <br />  <error-page><br />  <error-code>404</error-code><br />  <location>/commom/404.jsp</location><br />  </error-page><br />  <error-page><br />  <error-code>505</error-code><br />  <location>/commom/505.jsp</location><br />  </error-page><br />  <br />  也可以ؓWeb容器捕获的Java异常配置<error-page>,需要设|?lt;exception-type>子元素,它用于指定Java异常cRWeb容器可能捕获如下异常Q?br />  <br />  RuntimeException或Error  ServletException或它的子cRIOException或它的子c?br />  <br />  <error-page><br />  <exception-type>java.io.IOException</exception-type><br />  <location>/common/system_ioerror.jsp</location><br />  </error-page><br />  <br />  W五步:配置Structs标签?br />  <br />  使用客户化的标签库,要配|它?br />  <br />  <taglib><br />  <tag-uri>/WEB-INF/structs-html.tld<tag-uri><br />  <taglib-location>/WEB-INF/structs-html.tld</taglib-location><br />  </taglib><br />  <br />  <tag-uri>用于指定标签库的相对或者绝对URI地址QWeb应用Ҏq一URI来访问标{ֺ?br />  <br />  <taglib-location>指定标签描述文g在文件资源系l中的物理位|?br />  <br />  2.Structs配置文g<br />  <br />  Structs框架在启动时会读入其配置文gQ根据它来创建和配置各种Structslg?br />  <br />  1<Structs-config>元素<br />  <br />  <structs-config>元素是Structs配置文g的根元素Q?lt;structs-cofig>元素?个子元素。它的DTD定义如下Q?br />  <br />  <!ELEMENT structs-config(data-sources?,formbean?,global-exeception?,global-forward?,action-mapping,controller?,message-resources*,plug-in*)><br />  <br />  在Struts配置中,必须按照以上的DTD指定的先后顺序来配置<Structs-config>元素的各个子元素Q如果颠倒了q些元素的配|文件中的位|,在Structs应用启动时会生成错误?br />  <br />  <data-sources>元素<br />  <br />  <data-sources>元素包含零个、一个或者多?lt;data-sources>子元素,<data-sources>用于配置特定的数据源Q它可以包含多个<set-property>子元素,用于讄数据源的各种属性?br />  。。?br />  <br />  配置了数据源后,可以在ActioncM讉K数据源,在org.apache.structs.action.ActioncM定义了getDataSource(HttpRequrst)ҎQ它用于获取数据源对象的引用?br />  <br />  DataSource dataSource;<br />  Connection connection;<br />  dataSource =getDataSource(request);<br />  connection=dataSource.getConnection();<br />  <br />  也可以在配置文g中声明多个数据源Q此旉要ؓ每一个数据源分配唯一的key|通过改值来标识特定的数据源?br />  <br />  2<form-beans>元素<br />  <br />  <form-beans>元素用来配置多个ActionForm BeanQ?lt;form-beans>包含多个<forom-bean>子元素,,每个<from-bean>包含多个属性,ClassName , name,type<br />  <br />  <form-beans><br />  <form-bean name="HelloForm" type="hello.HelloForm"/><br />  </form-beans><br />  <br />  注意Q配|动态ActionForm BeanQ还必须配置<form-bean>元素?lt;form-property>元素?br />  <br />  <form-beans><br />  <form-bean name="HelloForm" type="hello.HelloForm"/><br />  <form-bean name="userForm" type="org.apache.structs.action.DynaAction"><br />  <from-property name="firstname" type="java.lang.String"/><br />  <form-property name="secondname" type="java.lang.String"><br />  <form-property name="age" type="java.Integer" initial="18"><br />  </form-beans><br />  <br />  3<global-exception>元素<br />  <br />  <global-exception>用于配置异常处理Q?lt;global-exception>元素可以包含零个或者多?lt;exception>元素?br />  <br />  <exception>元素用来讄java异常和异常处理类org.apache.structs.action,Exception Hander之间的映?br />  <br />  4<gloable-forwards>元素<br />  <br />  <global-forwards>元素用来声明全局的{发关p,<global-forwards>有零个或多个<forward>元素l成?lt;forward>元素用于把一个逻辑映射到特定的URL<br />  <br />  属性      描 q?br />  <br />  className  ?lt;forward>元素对应的配|类Q默认ؓorg.apache.structs.action.ActionForWard<br />  <br />  name     转发路径的逻辑名,此项时必ȝ<br />  <br />  path     指定或者重定向的URI。此Ҏ必须的,必须以?”开?br />  <br />  redirect   此项是trueQ表C是执行重定向的****作,此项是falseӞ表示h转发?br />  <br />  <global-forwards><br />  <forward name="forward1" path="/Action1.do"/><br />  <forward name="forward1" path="/Action2.do"/><br />  </global-forwards><br />  <br />  如果jsp1.jsp把请求{发给Action1,可以使用以下代码Q?br />  <br />  <html:link forward=”forward1?gt;<br />  <br />  或?lt;logic:forward name=”forward1?gt;<br />  <br />  如果Action1的executeQ)Ҏ把请求{发给JSP2.jspQ可以用一下代码:<br />  <br />  return(mapping.findForward(“forward2?)<br />  <br />  5<action-mapping>元素<br />  <br />  <action-mapping>元素包含零个或者多?lt;action>元素?lt;action>元素描述了从特定的请求\径到相应的Actioncȝ映射?br />  <br />  6<controller>元素<br />  <br />  <controller>元素用于配置ActionServlet?br />  <br />  7< message-resources>元素<br />  <br />  <message-resources>元素用于配置Resource BundleQResource Budle用于存放本地化消息文件?br />  <br />  Structs标签<br />  <br />  HTML标签<br />  <br />  标签名        描述<br />  base         包装HTML的base元素<br />  button        包装HTML?buttoncd的input元素<br />  cancel        包装HTML cancel 按钮<br />  checkbox       包装HTML checkbox cd的输入域<br />  errors        有条件地昄一些error消息Q显CActionErrors信息<br />  file         包装HTML文g上传输入?br />  form         定义HTML form 元素<br />  frame        包装HTML frame 元素<br />  hidden        包装HTML hidden 输入?br />  html         包装 HTML中的 html 元素<br />  image        包装 "image"cd的输入域<br />  img         包装HTML?img 元素<br />  javascript      包装ҎValidatorPlugIn提供的校验规则所提供的javascript校验脚本<br />  link         包装链?br />  messages       有条件地昄一些提CZ息,昄ActionMessages信息<br />  multibox       包装多选输入框<br />  option        包装一个选择输入?br />  options       包装一扚w择输入?br />  optionsCollection  包装一扚w择输入框集<br />  password       包装密文输入?br />  radio        包装单选输入框<br />  reset        包装“重|”功能的按钮<br />  rewrite       包装一个URL<br />  select        包装一个选择输入?br />  submit        包装一个提交按?br />  text         包装一个文本输入框<br />  textarea       包装一个备注输入框<br />  <br />  ActionForm<br />  ActionForm 的要?br />  <br />  创徏一个ActionForm q不困难Q但是你的类必须W合一些要求:<br />  <br />  ActionForm 必须扩展自org.apache.struts.ActionForm。基cActionForm 是不能实例化的?br />  <br />  ActionForm 必须为每个应该从h中收集的HTML控g定义一个公共属性?br />  <br />  (Struts 1.0 要求每个属性都要mutator 和accessor 。Struts 1.1 则没有如此严?<br />  <br />  ActionFormq可能要W合一些可选的要求:<br />  <br />  如果你要求ActionForm 在传递属性到Action之前校验它们Q你必d现validate<br />  <br />  ҎQ?br />  <br />  如果惛_l装前初始化属性,必须实现reset , 它在ActionForm l装前被调用Q?br />  <br />  动态ActionForm<br />  <br />  ActionForm 作ؓcd转换?br />  <br />  ActionForm的一个强制点是应该用String 和boolean属性。实际上Q这意味着属?br />  <br />  必须得从一U{换到另一U类型。大部分应用也需要一些属性,比如电话L或者数量,?br />  <br />  一U格式化的方式出现。核心Java 包提供一些工h做这U事情,但是要清楚地他们集<br />  <br />  成到应用中仍然是一个挑战?br />  <br />  Struts 开发h员经常在ActionForm中包含helperҎQ来q行cd转换。helper Ҏ<br />  <br />  可以有很多种实现方式Q这我们?.6U叙q?br />  <br />  5.2.6 ActionForm 作ؓ防火?br />  <br />  当请求提交时QActionServlet 使用一个自动组装机制来从请求参C讄h?br />  <br />  ActionForm属性。这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参?br />  <br />  是可接受的。这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以?br />  <br />  受的能力。ActionForm 一定不能包含看h像是一个JavaBean 属性,但不能从HTTP ?br />  <br />  求设|的属性方法?br />  <br />  5.3.4 ActionForm 可以嵌套其它bean<br />  <br />  因ؓStruts 标签扩展和自动组装机刉支持点号语法来从ActionForm讉K其它<br />  <br />  bean。这是一个方便的方式Q可以通过ActionForm来组装存在的bean。在JSP 面, 你可<br />  <br />  以象q样引用一个嵌套的beanQ?br />  <br />  <html:text<br />  propety="values.telephoneText"<br />  size="14"<br />  maxlength="14"/><br />  <br />  5.7.2 分发QDispatch Q?br />  <br />  Struts 开发h员通常使用同一个Action处理相关?***作。一个通常做法来选择****作是在HTML表单中用隐藏属性。BaseForm 的dispatch 属性也可用作这个目的:<br />  public void setDispatch(String dispatch);<br />  public String getDispatch();<br />  <br />  Struts 配置提供q个U别嵌套的ActionForward:<br />  <br />  Global Q全局Q?ActionForwardҎ个应用中的所有Action 对象均有效;<br />  <br />  Local Q局部) ActionForward 则在ActionMapping 元素中定义。仅寚w些在q个<br />  <br />  ActionMapping中调用的Action对象有效?br />  <br />  从Action 对象内部来看Qforward 通常像这h选择Q?br />  ActionForward forward = mapping.findForward("continue"); <img src ="http://www.tkk7.com/kobe09/aggbug/52749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:12 <a href="http://www.tkk7.com/kobe09/archive/2006/06/14/52749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ee的学习流E?/title><link>http://www.tkk7.com/kobe09/archive/2006/06/14/52748.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:11:00 GMT</pubDate><guid>http://www.tkk7.com/kobe09/archive/2006/06/14/52748.html</guid><wfw:comment>http://www.tkk7.com/kobe09/comments/52748.html</wfw:comment><comments>http://www.tkk7.com/kobe09/archive/2006/06/14/52748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kobe09/comments/commentRss/52748.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kobe09/services/trackbacks/52748.html</trackback:ping><description><![CDATA[ <p>Java发展到现在,按应用来分主要分Z大块QJ2SE,J2ME和J2EE。这三块怺补充Q应用范围不同?br /><br />  J2SE是Java2的标准版Q主要用于桌面应用Y件的~程Q?<br />  J2ME主要应用于嵌入是pȝ开发,如手机和PDA的编E; <br />  J2EE是Java2的企业版Q主要用于分布式的网l程序的开发,如电子商务网站和ERPpȝ?<br /><br />    先学习j2se <br /><br />    要学习j2eep先学习j2seQ刚开始学习j2se先徏议不要用IDEQ然后渐渐的q渡C用IDE开发,毕竟用它方便嘛。学习j2se推荐两本书,《java2核心技术一二卷》,《java~程思想》,《java模式》。其中《java~程思想》要研读Q精诅R这一D|间是基本功学习,旉会很长,也可能很短,q要看学习者自w水q定?<br /><br />    不要被IDEU缠 <br /><br />    在学习java和j2eeq程中,你会遇到五花八门的IDEQ不要被他们qhQ学JAVA的时候,要学语言本n的东西,不要太在意IDE的附加功能,JAVA~程在不同IDE之间的{换是很容易的Q过于的在意IDE的功能反而容易耽误对语a本n的理解。目前流行的IDE有jbuilderQeclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2seE序?<br /><br />    选择和学习服务器使用配置 <br /><br />    当你有了j2se和IDE的经验时Q可以开始j2ee的学习了Qweb服务器:tomcatQ勿庸置疑,tomcat为学习web服务首选。而应用服务器目前主要有三个:jboss、weblogic、websphere。有很多目开始采用jbossQƈ且有大量的公司开始做websphere或weblogic向jboss应用服务器的ULQ节省成本)Q这里要说的是,学习tomcat和jboss我认为是首选,也是最Ҏ上手的。学习服务器使用配置最好去询问有经验的人(有条件的话)Q因Z们或怸句话p解决问题Q你自己上网摸烦可能要一两天Q我干q这U傻事)Q我们应该把主要旉攑֜学习原理和理ZQ一特定技术的使用永远代替不了一个h的知识和学问?<br /><br />    学习web知识 <br /><br />    如果你是在做电子商务|站{时Q你可能要充当几个角Ԍq是你还要学习: <br />    htmlQ可能要用到dreamwave{IDE?<br />    javascriptQ学会简单的数据校验Q数据联动显C等{?<br /><br />    J2eeAPI学习 <br /><br />    学习j2eeAPI和学习服务器应该是一个P代的q程?<br /><br />    先学习jsp和servlet~程Q这斚w的书很多Q我建立看oreilly公司的两本《jsp设计》和《java servlet~程》,oreilly出的书L那本优秀Q不得不佩服?<br /><br />    学习jdbc数据库编E,j2ee目大多都是MISpȝQ访问数据库是核心。这本应属于j2se学习中,q里拿出来强调一下?<br /><br />    学习jndi apiQ它和学习ejb可以l合h?<br /><br />    学习ejb apiQ推荐书《精通ejb?<br /><br />    l过上面的这些的学习Q大概可以对付一般的应用了?<br /><br />    有h说跟着sun公司的《j2ee tutorial》一路学下来Q当然也可以?<br /><br /><br /><br />    学习ejb设计模式和看代码Q最重要Q?<br /><br />    设计模式是练内功Q其重要性可以这么说吧,如果你不会用设计模式的话Q你写Z堆用了ejb的垃圾,又慢又是一堆bugQ其l果不如不用ejb实现Qejb不等于j2eeQ?<br /><br />    无论学习什么语aQ都应该看大量代码,你看的代码量不到一定数量,是学不好j2ee?<br />目前有很多开源的工程可以作ؓ教材Q?<br /><br />  jive论坛 <br />  petstore sun公司 <br />  dune sun公司 <br />    {等Q研M个,q把它用到自q工程中来?<br /><br />    J2ee其他学习 <br /><br />    当你渐渐对j2ee了解C定深度时Q你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域Q大安在这里提q解决ҎQ例如structsQhiberateQofbiz{等Q学习这些东西要你的目和目标而定Q预先补充一下未不可,但不用涉及太深,毕竟学习原理和理论是最最重要的事?<br /><br />    目前常见j2eeAPI <br />  JavaServer Pages(JSP)技?.2 <br />  Java Servlet技?.3 <br />  JDBC API 2.0 <br />  Java XML处理API(JAXP)1.1 <br />  Enterprise JavaBeans技?.0 <br />  Java消息服务(JMS)1.0 <br />  Java命名目录接口(JNDI)1.2 <br />  Java事务API(JTA) 1.0 <br />  JavaMail API 1.2 <br />  JavaBeansȀzL?JAF)1.0 <br />  J2EEq接器体pȝ?JCA)1.0 <br />  Java认证和授权服?JAAS)1.0 <br /><br />    学习上面的某些API要以你的目而定Q了解所有他们M是有好处?<br /><br />    上面印证了大家说的一句话Qjava语言本n不难学,但是技术太多,所以学java很费劌Ӏ回想一下,基本上每个初学者,在刚学习java的时候可能都会问别hq么一句话Q你怎么知道的哪个方?api)在哪个包里的Q呵呵,无他Q唯手熟?<br /></p> <img src ="http://www.tkk7.com/kobe09/aggbug/52748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:11 <a href="http://www.tkk7.com/kobe09/archive/2006/06/14/52748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate入门 - 包作用详?/title><link>http://www.tkk7.com/kobe09/archive/2006/06/14/52747.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:11:00 GMT</pubDate><guid>http://www.tkk7.com/kobe09/archive/2006/06/14/52747.html</guid><wfw:comment>http://www.tkk7.com/kobe09/comments/52747.html</wfw:comment><comments>http://www.tkk7.com/kobe09/archive/2006/06/14/52747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kobe09/comments/commentRss/52747.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kobe09/services/trackbacks/52747.html</trackback:ping><description><![CDATA[Hibernate一共包括了23个jar包,令hD~ؕ。本文将详细讲解Hibernate每个jar包的作用Q便于你在应用中Ҏ自己的需要进行取舍?<br /><br />  下蝲HibernateQ例?.0.3E_版本Q解压羃Q可以看C个hibernate2.jar和lib目录下有22个jar包: <br /><br />  hibernate2.jar: <br />  Hibernate的库Q没有什么可说的Q必M用的jar?<br /><br />  cglib-asm.jar: <br />  CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库Q必M用的jar?<br /><br />  dom4j.jar: <br />  dom4j是一个Java的XML APIQ类gjdomQ用来读写XML文g的。dom4j是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的YӞ可以在SourceForge上找到它。在IBM developerWorks上面可以扑ֈ一文章,对主的Java XML APIq行的性能、功能和易用性的评测Qdom4j无论在那个方面都是非常出色的。我早在近两年之前开始用dom4jQ直到现在。如今你可以看到来多的Java软g都在使用dom4j来读写XMLQ特别值得一提的是连Sun的JAXM也在用dom4j。这是必M用的jar包,Hibernate用它来读写配|文件?<br /><br />  odmg.jar: <br />  ODMG是一个ORM的规范,Hibernate实现了ODMG规范Q这是一个核心的库,必须使用的jar包?<br /><br />  commons-collections.jarQ?<br />  Apache Commons包中的一个,包含了一些Apache开发的集合c,功能比java.util.*强大。必M用的jar包?<br /><br />  commons-beanutils.jarQ?<br />  Apache Commons包中的一个,包含了一些Bean工具cȝ。必M用的jar包?<br /><br />  commons-lang.jar: <br />  Apache Commons包中的一个,包含了一些数据类型工LQ是java.lang.*的扩展。必M用的jar包?<br /><br />  commons-logging.jar: <br />  Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本n包含了一个Simple LoggerQ但是功能很弱。在q行的时候它会先在CLASSPATH找log4jQ如果有Q就使用log4jQ如果没有,找JDK1.4带的java.util.loggingQ如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾Q当初Apache极力游说Sun把log4j加入JDK1.4Q然而JDK1.4目组已经接近发布JDK1.4产品的时间了Q因此拒l了Apache的要求,使用自己的java.util.loggingQ这个包的功能比log4j差的很远Q性能也一般?br /><br />  后来Apache开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的logE序Q底层的Logger是可以切换的Q你可以选择log4jQjava.util.logging或者它自带的Simple Logger。不q我仍然强烈使用log4jQ因为log4j性能很高Qlog输出信息旉几乎{于System.outQ而处理一条logq_只需?us。你可以在Hibernate的src目录下找到Hibernate已经Z准备好了的log4j的配|文Ӟ你只需要到Apache |站M载log4j可以了。commons-logging.jar也是必须的jar包?<br /><br />  使用Hibernate必须的jar包就是以上的q几个,剩下的都是可选的?<br /><br />  ant.jar: <br />  Ant~译工具的jar包,用来~译Hibernate源代码的。如果你不准备修改和~译Hibernate源代码,那么没有什么用Q可选的jar?<br /><br />  optional.jarQ?<br />  Ant的一个辅助包?<br /><br />  c3p0.jarQ?<br />  C3PO是一个数据库q接池,Hibernate可以配置Z用C3POq接池。如果你准备用这个连接池Q就需要这个jar包?<br /><br />  proxool.jarQ?<br />  也是一个连接池Q同上?<br /><br />  commons-pool.jar, commons-dbcp.jar: <br />  DBCP数据库连接池QApache的Jakartal织开发的QTomcat4的连接池也是DBCP?<br /><br />  实际上Hibernate自己也实C一个非帔R常简单的数据库连接池Q加上上?个,你实际上可以在Hibernate上选择4U不同的数据库连接池Q选择哪一个看个h的偏好,不过DBCP可能更通用一些。另外强调一点,如果在EJB中用HibernateQ一定要用App Server的连接池Q不要用以上4U连接池Q否则容器管理事务不起作用?<br /><br />  connector.jar: <br />  JCA 规范Q如果你在App Server上把Hibernate配置为Connector的话Q就需要这个jar。不q实际上一般App Server肯定会带上这个包Q所以实际上是多余的包?<br /><br />  jaas.jar: <br />  JAAS是用来进行权限验证的Q已l包含在JDK1.4里面了。所以实际上是多余的包?<br /><br />  jcs.jarQ?<br />  如果你准备在Hibernate中用JCS的话Q那么必d括它Q否则就不用?<br /><br />  jdbc2_0-stdext.jar: <br />  JDBC2.0的扩展包Q一般来说数据库q接池会用上它。不qApp Server都会带上Q所以也是多余的?<br /><br />  jta.jarQ?<br />  JTA规范Q当Hibernate使用JTA的时候需要,不过App Server都会带上Q所以也是多余的?<br /><br />  junit.jar: <br />  Junit包,当你q行Hibernate自带的测试代码的时候需要,否则׃用?<br /><br />  xalan.jar, xerces.jar, xml-apis.jar: <br />  Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。一般App Server都会带上QJDK1.4也包含了解析器,不过不是XercesQ是CrimsonQ效率比较差Q不qHibernate用XML只不q是d配置文gQ性能没什么紧要的Q所以也是多余的?img src ="http://www.tkk7.com/kobe09/aggbug/52747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:11 <a href="http://www.tkk7.com/kobe09/archive/2006/06/14/52747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://91packing.com" target="_blank">һһ60Ƶ</a>| <a href="http://onisterwines.com" target="_blank">24Сʱֱ߹ۿ</a>| <a href="http://5916733.com" target="_blank">Ļ</a>| <a href="http://huakangweicai.com" target="_blank">һѹۿ</a>| <a href="http://my94ok.com" target="_blank">Ʒ͵Ƶۿ </a>| <a href="http://by2988.com" target="_blank">޹ƷVA߹ۿ鶹</a>| <a href="http://w5524.com" target="_blank">պ尡Ƶ߹ۿ</a>| <a href="http://h47h.com" target="_blank">ɫAVպ߹ۿ</a>| <a href="http://tskes.com" target="_blank">˾þþƷӰԺ</a>| <a href="http://cc88899.com" target="_blank">2019Ļmvѿ</a>| <a href="http://gdporun.com" target="_blank">ѨƬ߹ۿ</a>| <a href="http://pjszlw.com" target="_blank">޸һ</a>| <a href="http://828556.com" target="_blank">С˵ͼƬ</a>| <a href="http://zqsplc.com" target="_blank">ѿŮƴɫ </a>| <a href="http://www321fafa.com" target="_blank">һһƬһëƬ</a>| <a href="http://9196528.com" target="_blank">ĻĻmv</a>| <a href="http://14743592.com" target="_blank">heyzoרۺ</a>| <a href="http://222mp3.com" target="_blank">þþþavרѿ</a>| <a href="http://kingco-glaze.com" target="_blank">ҹһƵ</a>| <a href="http://www-533999.com" target="_blank">պƷƵ</a>| <a href="http://ur5r2kr.com" target="_blank">³³ƵѲ</a>| <a href="http://taoh2517.com" target="_blank">ŷպ</a>| <a href="http://www779rr.com" target="_blank">ҹþþþþþþõӰ</a>| <a href="http://liangdy.com" target="_blank">ҹڵ</a>| <a href="http://77663499.com" target="_blank">Ʒ99Ʒþ</a>| <a href="http://xy996688.com" target="_blank">ҹƵ</a>| <a href="http://btztjxc.com" target="_blank">AVۺ뾫Ʒ </a>| <a href="http://jpsp8.com" target="_blank">޹ƷҹӰ</a>| <a href="http://ccc998.com" target="_blank">þþƷһ</a>| <a href="http://zbvip888.com" target="_blank">ɱƬav</a>| <a href="http://caicpa.com" target="_blank">þһѲ</a>| <a href="http://8x8xbu.com" target="_blank">ˬָ߳ˮƵ </a>| <a href="http://sswg2.com" target="_blank">þþþ޾Ʒϵ</a>| <a href="http://mironpress.com" target="_blank">˾þۺӰԺ</a>| <a href="http://nyminer.com" target="_blank">67194츾ѹۿ</a>| <a href="http://www-5453.com" target="_blank">þŮվ</a>| <a href="http://554ka.com" target="_blank">caopormѹƵ</a>| <a href="http://by3142.com" target="_blank">Ʒާѡ벥鶹</a>| <a href="http://imqun.com" target="_blank">һƵۿ</a>| <a href="http://50077995.com" target="_blank">˳ߵӰ</a>| <a href="http://aplus178.com" target="_blank">ŮƷþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>