﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-氧气中毒 - J2EE</title><link>http://www.blogjava.net/kobe09/</link><description>爪吐奕奕征途</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:58:45 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:58:45 GMT</pubDate><ttl>60</ttl><item><title>几则JSP入门知识总结</title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52757.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52757.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52757.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52757.html</trackback:ping><description><![CDATA[
		<span class="postbody" style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman">
				<font style="FONT-SIZE: 10pt" size="2">1.传递表单参数： <br />String name = new String(request.getParameter("name")); <br /><br />2.数据库连接： <br />~~MYSQL <br />//设置数据库的URL <br />String url = "jdbc:mysql://localhost:3306/jspsky"; <br />try <br />//加载驱动程序 <br />Class.forname("org.gjt.mm.mysql.Driver").newInstance(); <br />//建立连接 <br />java.sql.Connection connection = java.sql.DriverManager.getConnection(url); <br />java.sql.Statement statement = connection.createStatement(); <br />//SQL语句 <br />String sqlStringi ="insert into commu(name,tel,mobile,oicq,email)values(‘"+name+"',‘"+tel+"',‘"+mobile+"',‘"+oicq+"',‘"+email+"')"; <br />//运行SQL语句，并建立结果集 <br />java.sql.ResultSet rsi = statement.executeQuery(sqlStringi); <br />//在屏幕上输出库中的内容 <br />while(rss.next()) <br />{ <br />String a_name = rss.getString(1); <br />out.println(a_name); <br />{} <br />//关闭连接 <br />connection.close(); <br />} <br /><br />//捕捉异常 <br />catch(java.sql.SQLException e) <br /><br />out.println(e.getMessage()); <br />{} <br />catch(ClassNotFoundException e) <br /><br />out.println(e.getMessage()); <br />{} <br /><br /><br />~~DB2 <br />//定义数据库的URL <br />String url = "jdbc:db2:portal"; <br />try <br /><br />//加载驱动程序 <br />Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); <br />//建立连接， <br />java.sql.Connection connection = java.sql.DriverManager.getConnection(url,"user","password"); <br />java.sql.Statement statement = connection.createStatement(); <br />//SQL语句 <br />String sqlString = "select * from client"; <br />//执行SQL语句 <br />java.sql.ResultSet rs = statement.executeQuery(sqlString); <br />//在屏幕上显示所连表中的内容 <br />while(rs.next()) <br />{ <br />String name = rs.getString(1); <br />out.println(name); <br />{} <br />//关闭连接 <br />connection.close(); <br />} <br />//捕捉异常 <br />catch(java.sql.SQLException e) <br /><br />out.println(e.getMessage()); <br />{} <br />catch(ClassNotFoundException e) <br /><br />out.println(e.getMessage()); <br />{} <br /><br /><br />3.文件操作 <br /><br />~~将一个字符串写到一个指定的文件中，如果该文件不存在，则新建一个文件，并完成写入；如果存在，则用此字符串覆盖原文件的所有内容 <br />import java.io.*; <br />String str = "print me 雪峰!"; <br />//定义好打印的目标文件名 <br /><br />//取得当前主机存放WEB页面的绝对路径 <br />String hostdir = System.getProperty("user.dir"); <br />//取得当前主机所采用的路径分隔符 <br />String fileBar = System.getProperty("file.separator"); <br />//书写完整的目标文件存放路径 <br />String nameOfFile=hostdir+fileBar+"test.html"; <br /><br />try <br />//实例化一个文件输出流对象 <br />FileOutputStream afile = new FileOutputStream(nameOfFile); <br />//将文件输出流，创建一个打印输出流对象 <br />PrintWriter pw = new PrintWriter(afile); <br />pw.println(str); <br />//clean up <br />pw.close(); <br />{} <br />catch(IOException e) <br />out.println(e.getMessage()); <br />{} <br /><br />~~列出指定目录下的文件列表 <br />import java.io.*; <br />String cdur = System.getProperty("user.dir"); <br />String fileBar = System.getProperty("file.separator"); <br />String mydir =cdur+fileBar+"doc"+fileBar+"jspsky"; <br />File my = new File(mydir); <br />String d[] = my.list(); <br />int i; <br />int l=d.length; <br />for(i=0;i out.print(d); <br />{} <br /><br /><br />4.计数器 <br />Integer count = null; <br />synchronized (application) <br />count =(Integer) application.getAttribute("d"); <br />if (count ==null) <br />count =new Integer("0"); <br />count = new Integer(count.intValue()+1); <br />application.setAttribute("d",count); <br />{} <br />out.println(count); <br />// 首先定义一个整形对象，并初始化为：NULL， <br />// 取回APPLICATION对像的属性D的值，并强制转化为整形对象，赋给COUNT <br />// 判断COUNT是否为空，为空时，将O赋给COUNT对象， <br />// 否则，通过COUNT。INTVALUE（）方法，实现COUNT对象加1，并赋值给COUNT <br />// 最后，将COUNT对象保存在APPLICATION对象的D变量中。</font>
		</span>
<img src ="http://www.blogjava.net/kobe09/aggbug/52757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:19 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 中 Java Web 开发环境的搭建 -------------- 安装配置说明</title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52756.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52756.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52756.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52756.html</trackback:ping><description><![CDATA[
		<div class="postbody">
				<p>
						<span>一、所需要准备的相关软件如下：</span>
				</p>
				<p>
						<span>1</span>
						<span>、</span>
						<span>java 2 SDK</span>
						<span>（</span>
						<span>java </span>
						<span>开发工具包）——</span>
						<span>JDK </span>
				</p>
				<p align="left">
						<span>
								<span>
										<font size="3">
												<img height="9" alt="*" src="/hongjunli/admin/PicExportError" width="9" />
										</font>
										<span>                   </span>
								</span>
						</span>
						<span>这里使用的是</span>
						<span>jdk1.5</span>
						<span>（推荐使用</span>
						<span>JDK1.4</span>
						<span>及以上版本）下载地址</span>
						<span>:</span>
						<span>
								<a href="http://java.sun.com/javase/downloads/index.html">
										<font color="#1d58d1">http://java.sun.com/javase/downloads/index.html</font>
								</a>,</span>
				</p>
				<p align="left">
						<span>
								<span>
										<font size="3">
												<img height="9" alt="*" src="/hongjunli/admin/PicExportError" width="9" />
										</font>
										<span>                   </span>
								</span>
						</span>
						<span>
								<a href="http://java.sun.com/javase/6/download.jsp">
										<font color="#1d58d1">
												<span>Java SE 6 Beta</span>
										</font>
								</a>
						</span>
				</p>
				<p align="left">
						<span>
								<span>
										<font color="#1d58d1">
												<img height="9" alt="*" src="/hongjunli/admin/PicExportError" width="9" />
										</font>
										<span>                   </span>
								</span>
						</span>
						<span>
								<a href="http://java.sun.com/j2se/1.5.0/download.jsp">
										<font color="#1d58d1">
												<span>J2SE 5.0</span>
										</font>
								</a>
						</span>
				</p>
				<p align="left">
						<span>
								<span>
										<font color="#1d58d1">
												<img height="9" alt="*" src="/hongjunli/admin/PicExportError" width="9" />
										</font>
										<span>                   </span>
								</span>
						</span>
						<span>
								<a href="http://java.sun.com/j2se/1.4.2/download.html">
										<font color="#1d58d1">
												<span>J2SE 1.4.2</span>
										</font>
								</a>
						</span>
				</p>
				<p align="left">
						<span>
								<span>
										<font color="#1d58d1">
												<img height="9" alt="*" src="/hongjunli/admin/PicExportError" width="9" />
										</font>
										<span>                   </span>
								</span>
						</span>
						<span>
								<a href="http://java.sun.com/j2se/1.3/download.html">
										<font color="#1d58d1">
												<span>J2SE 1.3.1</span>
										</font>
								</a>
						</span>
				</p>
				<p>
						<font color="#1d58d1">
						</font> </p>
				<p>
						<span>从以上列表中选择你需要的版本进行下载</span>
						<span>.</span>
				</p>
				<p>
						<span>2</span>
						<span>、</span>
						<span>tomcat<br /></span>
						<span>我这里使用的是</span>
						<span>tomcat 5.5</span>
						<span>的，</span>
						<span>(</span>
						<span>推荐使用</span>
						<span>5.0</span>
						<span>以上版本</span>
						<span>),</span>
						<span>下载地址：</span>
						<span>
								<span>
										<a href="http://tomcat.apache.org/">
												<font color="#1d58d1">http://tomcat.apache.org/</font>
										</a>
								</span>
						</span>
				</p>
				<table cellpadding="0" border="0">
						<tbody>
								<tr>
										<td valign="top">
												<p align="left">
														<b>
																<span>Servlet/JSP Spec</span>
														</b>
												</p>
										</td>
										<td valign="top">
												<p align="left">
														<b>
																<span>Apache Tomcat version</span>
														</b>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="left">
														<span>2.4/2.0</span>
												</p>
										</td>
										<td valign="top">
												<p align="left">
														<?XML:NAMESPACE PREFIX = ST1 /?>
														<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">
																<span>5.5.17</span>
														</st1:chsdate>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="left">
														<span>2.3/1.2</span>
												</p>
										</td>
										<td valign="top">
												<p align="left">
														<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">
																<span>4.1.31</span>
														</st1:chsdate>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="left">
														<span>2.2/1.1</span>
												</p>
										</td>
										<td valign="top">
												<p align="left">
														<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">
																<span>3.3.2</span>
														</st1:chsdate>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p>
						<span>从以上列表中选择你需要的版本进行下载</span>
						<span>.</span>
				</p>
				<p>
						<span>3</span>
						<span>、</span>
						<span>eclipse</span>
						<span>及语言包</span>
						<span>
						</span>
				</p>
				<p>
						<span>见我的另外一篇</span>
						<span>”</span>
						<span>Eclipse 3.1.x </span>
						<span>汉化过程<span>”</span></span>
						<span>
								<br />4</span>
						<span>、</span>
						<span>tomcat</span>
						<span>插件</span>
						<span>
								<br />
						</span>
						<span>我这里使用的是与</span>
						<span>eclipse3.1</span>
						<span>对应的</span>
						<span>tomcat</span>
						<span>插件</span>
						<span>tomcatPluginV3.1.zip(</span>
						<span>下载之前需要查看插件是否适合</span>
						<span>eclipse</span>
						<span>的版本</span>
						<span>),</span>
						<span>下载地址</span>
						<span>:</span>
						<span>
								<a href="http://www.sysdeo.com/sysdeo/eclipse/tomcatplugin">
										<font color="#1d58d1">http://www.sysdeo.com/sysdeo/eclipse/tomcatplugin</font>
								</a>
						</span>
				</p>
				<table cellspacing="0" cellpadding="0" border="0">
						<tbody>
								<tr>
										<td valign="top">
												<p align="center">
														<span>Version </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>File </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>Date </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>Comment </span>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="center">
														<span>3.1 final </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/393/4930/file/tomcatPluginV31.zip">
																		<font color="#1d58d1">
																				<span>tomcatPluginV31.zip</span>
																		</font>
																</a>
														</span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>15 September 2005 </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/352/4727/file/releaseNotesV31.txt">
																		<font color="#1d58d1">
																				<span>releaseNotesV31.txt</span>
																		</font>
																</a>
														</span>
												</p>
												<p align="center">
														<span>Works with Eclipse 3.0 and Eclipse 3.1 (fix a problem with Eclipse <st1:chmetcnv w:st="on" unitname="m" sourcevalue="3.1" hasspace="False" negative="False" numbertype="1" tcsc="0">3.1M</st1:chmetcnv>6) </span>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="center">
														<span>3.0 </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/349/4718/file/tomcatPluginV3.zip">
																		<font color="#1d58d1">
																				<span>tomcatPluginV3.zip</span>
																		</font>
																</a>
														</span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>27 July 2004 </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/351/4724/file/releaseNotesV3.txt">
																		<font color="#1d58d1">
																				<span>releaseNotesV3.txt</span>
																		</font>
																</a>
														</span>
												</p>
												<p align="center">
														<span>Works with Eclipse 3.0 and Eclipse 2.1 </span>
												</p>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<p align="center">
														<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">
																<span>2.1.1</span>
														</st1:chsdate>
														<span>beta </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/310/4525/file/tomcatPluginV211beta.zip">
																		<font color="#1d58d1">
																				<span>tomcatPluginV211beta.zip</span>
																		</font>
																</a>
														</span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>1er August 2003 </span>
												</p>
										</td>
										<td valign="top">
												<p align="center">
														<span>
																<a href="http://www.sysdeo.com/sysdeo/content/download/314/4547/file/releaseNotesV211beta.txt">
																		<font color="#1d58d1">
																				<span>releaseNotesV211beta.txt</span>
																		</font>
																</a>
														</span>
												</p>
												<p align="center">
														<span>Works with Eclipse 2.1 and Eclipse <st1:chmetcnv w:st="on" unitname="m2" sourcevalue="3" hasspace="True" negative="False" numbertype="1" tcsc="0">3.0 M2</st1:chmetcnv></span>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p> </p>
				<p> </p>
				<p>
						<span>5</span>
						<span>、</span>
						<span>lomboz</span>
						<span>插件或者</span>
						<span>myeclipse</span>
						<span>插件</span>
				</p>
				<p>
						<span>在</span>
						<span>eclipse3.0</span>
						<span>以前可以使用</span>
						<span>Easy Struts</span>
						<span>插件</span>
						<span>,</span>
						<span>但是</span>
						<span>eclipse3.0</span>
						<span>不再支持</span>
						<span>Easy Struts</span>
						<span>插件</span>
						<span>,</span>
						<span>所以使用</span>
						<span>eclipse3.0</span>
						<span>以上版本的话</span>
						<span>,</span>
						<span>我们可以选择</span>
						<span>lomboz</span>
						<span>插件或者</span>
						<span>myeclipse</span>
						<span>插件</span>
						<span>.</span>
				</p>
				<p>
						<span>根据自己的喜好</span>
						<span>,</span>
						<span>选择</span>
						<span>lomboz</span>
						<span>或者</span>
						<span>myeclipse</span>
						<span>都可以</span>
						<span>,</span>
						<span>个人推荐使用</span>
						<span>myeclipse.</span>
				</p>
				<p>
						<span>不过</span>
						<span>,myeclipse</span>
						<span>不是免费的插件</span>
						<span>,</span>
						<span>有</span>
						<span>30</span>
						<span>天的试用期</span>
						<span>,</span>
						<span>我们可以先使用</span>
						<span>free</span>
						<span>版的</span>
						<span>,</span>
						<span>如果支持</span>
						<span>myeclipse</span>
						<span>的活</span>
						<span>,</span>
						<span>最好还是使用正版的</span>
						<span>.</span>
						<span>下面来分别简单阐述以下</span>
						<span>lomboz</span>
						<span>插件和</span>
						<span>myeclipse</span>
						<span>插件。</span>
				</p>
				<p> </p>
				<p>
						<b>
								<span>㈠</span>
						</b>
						<b>
								<span>lomboz</span>
						</b>
						<b>
								<span>插件</span>
						</b>
				</p>
				<p> </p>
				<p> </p>
				<p>
						<span>以前的</span>
						<span>lomboz</span>
						<span>插件是需要下载两个部分，一个是</span>
						<span>emf</span>
						<span>环境，另一个是</span>
						<span>lomboz</span>
						<span>插件</span>
						<span>.</span>
				</p>
				<p> </p>
				<p>
						<span>下载地址</span>
						<span>: <a href="http://download.forge.objectweb.org/lomboz/"><font color="#1d58d1">http://download.forge.objectweb.org/lomboz/</font></a></span> <span>  </span>  </p>
				<p> </p>
				<p>
						<span>现在只需要下载一个</span>
						<span>: lomboz-eclipse-emf-gef-jem</span>
						<span>就可以了</span>
						<span>,</span>
						<span>它把</span>
						<span>emf</span>
						<span>环境和</span>
						<span>lomboz</span>
						<span>插件都继承都里面去了</span>
						<span>,</span>
						<span>大概是</span>
						<st1:chmetcnv w:st="on" unitname="m" sourcevalue="140" hasspace="False" negative="False" numbertype="1" tcsc="0">
								<span>140M</span>
						</st1:chmetcnv>
						<span>左右</span>
						<span>,</span>
						<span>我这里用的是</span>
						<span>:</span>
						<span>
								<a href="http://download.forge.objectweb.org/lomboz/lomboz-eclipse-emf-gef-jem-3.1RC2.zip">
										<font color="#1d58d1">lomboz-eclipse-emf-gef-jem-3.1RC2.zip</font>
								</a>
						</span>
				</p>
				<p> </p>
				<p> </p>
				<p>
						<b>
								<span>㈡</span>
						</b>
						<b>
								<span>Myeclipse</span>
						</b>
						<b>
								<span>插件</span>
						</b>
				</p>
				<p>
						<span>安装</span>
						<span>Myeclipse4.1 (myeclipse</span>
						<span>不是免费的，它有</span>
						<span>30</span>
						<span>天的使用期，所以我们先下载一个试用版</span>
						<span>)</span>
				</p>
				<p>
						<span>
								<a href="http://www.myeclipseide.com/Downloads+index-req-getit-lid-45.html">
										<font color="#1d58d1">
												<span>
														<span>下载版本：</span>
												</span>
												<span>MyEclipse Enterprise Workbench 4.1.1 GA for Windows 98/2000/XP (03/02/2006)</span>
										</font>
								</a>
						</span>
						<br />地址: <a href="http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-10.html"><font color="#1d58d1">http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-10.html</font></a></p>
				<p>
						<font color="#1d58d1">
						</font> </p>
				<p>
						<span>二、</span>
						<span>软件安装</span>
				</p>
				<p>
						<span>1</span>
						<span>、</span>
						<span>java</span>
						<span>安装</span>
				</p>
				<p>
						<span>运行可执行文件</span>
						<span>j2sdk-1_5_2_07-windows-i586-p.exe</span>
						<span>，安装结束后需配置环境变量，在我的电脑</span>
						<span>-&gt;</span>
						<span>属性</span>
						<span>-&gt;</span>
						<span>高级</span>
						<span>-&gt;</span>
						<span>环境变量</span>
						<span>-&gt;</span>
						<span>系统变量中添加以下环境变量</span>
						<span>
								<br />CLASSPATH</span>
						<span>，</span>
						<span>JAVA_HOME:</span>
						<span>，</span>
						<span>PATH</span>
				</p>
				<p>
						<span>2</span>
						<span>、</span>
						<span>tomcat</span>
						<span>安装</span>
				</p>
				<p>
						<span>解压版的直接解压就可以了，然后配置环境变量</span>
						<span>TOMCAT_HOME</span>
						<span>，安装版的要注意的两点，一个是安装完之后</span>
						<span>tomcat</span>
						<span>的服务就能够启动的了，但是还是要配置</span>
						<span>TOMCAT_HOME</span>
						<span>；第二个就是需要查看一下安装程序是不是把</span>
						<span>tomcat</span>
						<span>服务注册成为</span>
						<span>windows</span>
						<span>的启动服务，需要到</span>
						<span>“</span>
						<span>服务</span>
						<span>”</span>
						<span>里查看，如果有这个选项就把它设置为手动启动，并且先停止这个服务。</span>
						<span>[</span>
						<span>测试</span>
						<span>]</span>
						<span>：使用</span>
						<span>startup.bat</span>
						<span>命令，服务正常启动之后，</span>
						<span>ie</span>
						<span>浏览器里输入</span>
				</p>
				<p>
						<span>http://localhost:8080/ </span>
						<span>如果出现正常的小猫页面，那就应该没有问题了</span>
				</p>
				<p>
						<span>3</span>
						<span>、</span>
						<span>eclipse</span>
						<span>安装</span>
				</p>
				<p>
						<span>eclipse</span>
						<span>的安装很简单，只要解压，然后把</span>
						<span>eclipse</span>
						<span>目录复制到你想安装的盘符下就可以了，启动的时候，系统会自动寻找</span>
						<span>JVM</span>
						<span>。</span>
				</p>
				<p>
						<span>具体的安装和汉化过程见我的另一篇：“</span>
						<span>Eclipse 3.1.x </span>
						<span>汉化过程</span>
						<span>”</span>
				</p>
				<p>
						<span>4</span>
						<span>、</span>
						<span>tomcat</span>
						<span>插件安装</span>
				</p>
				<p>
						<span>tomcatPluginV3.1zip</span>
						<span>解压后将文件夹</span>
						<span>com.sysdeo.eclipse.tomcat_3.1</span>
						<span>拷贝到你的</span>
						<span>eclipse\plugins</span>
						<span>目录下就可以了</span>
						<span>.</span>
				</p>
				<p>
						<span>5</span>
						<span>、</span>
						<span>lomboz</span>
						<span>或者</span>
						<span>myeclipse</span>
						<span>的安装</span>
				</p>
				<p>
						<span>①</span>
						<span>lomboz</span>
						<span>的安装</span>
				</p>
				<p>
						<span>首先在</span>
						<span>eclipse</span>
						<span>的安装目录下新建一个名为</span>
						<span>lomboz</span>
						<span>的文件夹</span>
				</p>
				<p>
						<span>把“</span>
						<span>lomboz-eclipse-emf-gef-jem-3.1RC<st1:chmetcnv w:st="on" unitname="”" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0">2<span><span>”</span></span></st1:chmetcnv><span>解压到</span></span>
						<span>lomboz</span>
						<span>的文件夹下，看一下我的：<br /><img height="339" alt="lomboz.jpg" src="http://www.blogjava.net/images/blogjava_net/hongjunli/10695/lomboz.jpg" width="608" border="0" /><br /></span>
				</p>
				<p> </p>
				<p>
						<span>
								<br />然后使用</span>
						<span>links</span>
						<span>方式来安装</span>
						<span>lomboz</span>
						<span>插件</span>
						<span>:</span>
						<span>在</span>
						<span>links</span>
						<span>文件夹下新建一个</span>
						<span>lomboz.start(</span>
						<span>后缀名任意</span>
						<span>)</span>
						<span>图<br /></span>
				</p>
				<p>
						<span>
								<img height="321" alt="lombozlinks.jpg" src="http://www.blogjava.net/images/blogjava_net/hongjunli/lombozlinks.jpg" width="918" border="0" />  </span>
				</p>
				<p>
						<span>
								<br />
								<br />
								<br />②</span>
						<span>Myeclipse</span>
						<span>的安装<br /></span>
				</p>
				<p>
						<span>
								<br />见我的另外一篇：“</span>
						<span>
								<a href="/hongjunli/archive/2006/05/19/47110.html">
										<font color="#1d58d1">[<span><span>原创</span></span>]My eclipse 4.1(eclipse3.1X<span><span>插件</span></span> eclipse<span><span>企业级工作平台</span></span>) <span><span>及</span></span>myeclipse<span><span>插件安装说明</span></span></font>
								</a>
						</span>
						<span>”</span>
				</p>
				<p> </p>
				<p align="left">
						<span>三、</span>
						<span>eclipse</span>
						<span>配置</span>
						<span>
								<br />1</span>
						<span>、</span>
						<span>Installed JREs</span>
						<span>配置</span>
						<span>
								<br />
						</span>
						<span>打开配置界面</span>
				</p>
				<p align="left">
						<span>如果这几个插件安装成功，左边的列表里应该有</span>
						<span>lomboz</span>
						<span>和</span>
						<span>tomcat</span>
						<span>的选项。如果没有，检查上面的步骤是不是正确。点击</span>
						<span>java-&gt;Installed JREs</span>
						<span>，然后显示如下，如果是初始安装的，只有显示第一个</span>
						<span>JRE</span>
						<span>，那是系统默认的安装在</span>
						<span>C</span>
						<span>盘的</span>
						<span>jre</span>
						<span>，如果系统当中安装了多个</span>
						<span>jdk</span>
						<span>，那么最好还是新建一个，点击</span>
						<span>add</span>
						<span>，然后选择你需要使用的</span>
						<span>jdk</span>
						<span>的位置，然后它会自动寻找其他的参数，点击</span>
						<span>ok</span>
						<span>。返回界面之后，不要忘记点选刚刚添加的</span>
						<span>jdk</span>
						<span>，要不然是没有用的。然后点击</span>
						<span>ok</span>
						<span>关闭这个窗口。</span>
				</p>
				<p>
						<span>2</span>
						<span>、</span>
						<span>tomcat</span>
						<span>配置（具体见：</span>
						<span>我的另外一篇：“</span>
						<span>
								<a href="/hongjunli/archive/2006/05/19/47110.html">
										<font color="#1d58d1">[<span><span>原创</span></span>]My eclipse 4.1(eclipse3.1X<span><span>插件</span></span> eclipse<span><span>企业级工作平台</span></span>) <span><span>及</span></span>myeclipse<span><span>插件安装说明</span></span></font>
								</a>
						</span>
						<span>）</span>
				</p>
				<p>
						<span>这里主要是配置</span>
						<span>tomcat</span>
						<span>的参数，根据你安装的</span>
						<span>tomcat</span>
						<span>的版本，选择</span>
						<span>tomcat version</span>
						<span>，然后找到该</span>
						<span>tomcat</span>
						<span>的主目录，输入在</span>
						<span>tomcat home</span>
						<span>，下面的参数会自动配置，点击</span>
						<span>apply</span>
						<span>。</span>
						<span>然后在左边选择</span>
						<span>advanced</span>
						<span>，同样把</span>
						<span>tomcat</span>
						<span>的主目录复制在</span>
						<span>tomcat base</span>
						<span>，点击</span>
						<span>apply</span>
						<span>。最后在左边选择</span>
						<span>JVM setting</span>
						<span>，选择刚刚加入的</span>
						<span>jre</span>
						<span>，点击</span>
						<span>apply</span>
						<span>，点击</span>
						<span>ok</span>
						<span>。这样就可以了。如果在启动</span>
						<span>eclipse</span>
						<span>的时候出现三个小猫图标，就代表</span>
						<span>tomcat</span>
						<span>配置成功了。见下图</span>
				</p>
				<p> </p>
				<p>
						<span> <img height="122" alt="启动界面.jpg" src="http://www.blogjava.net/images/blogjava_net/hongjunli/10695/启动界面.jpg" width="699" border="0" /></span>
				</p>
				<p> </p>
				<p> </p>
				<p> </p>
				<p>
						<span>3</span>
						<span>、</span>
						<span>lomboz/myeclipse</span>
						<span>配置</span>
				</p>
				<p> </p>
				<p>
						<span>基本上不用什么配置，如果在启动</span>
						<span>eclipse</span>
						<span>的时候，在“文件”</span>
						<span>-&gt;</span>
						<span>“新建”</span>
						<span>-&gt;”</span>
						<span>其它</span>
						<span>”,</span>
						<span>列表中多出了</span>
						<span>:J2EE,EJB, Web Services,Xml</span>
						<span>等</span>
						<span>,</span>
						<span>说明</span>
						<span>lomboz</span>
						<span>安装成功</span>
						<span>.</span>
						<span>见下图</span>
						<span>(lomboz</span>
						<span>安装成功标志</span>
						<span>)</span>
						<span>:</span>
				</p>
				<p>
						<span>而</span>
						<span>myclipse</span>
						<span>只要安装正确</span>
						<span>,</span>
						<span>在启动</span>
						<span>eclipse</span>
						<span>时候</span>
						<span>,</span>
						<span>只要在菜单栏中多出了</span>
						<span>”myeclipse”</span>
						<span>项</span>
						<span>,</span>
						<span>则说明</span>
						<span>myeclipse</span>
						<span>安装成功了</span>
						<span>.<br /><img height="122" alt="启动界面.jpg" src="http://www.blogjava.net/images/blogjava_net/hongjunli/10695/启动界面.jpg" width="699" border="0" /><br /><span>myeclipse</span><span>安装成功</span><br /><br /></span>
				</p>
				<p> </p>
				<p>
						<span>
								<span>
										<img height="498" alt="lomboz安装成功标志.BMP" src="http://www.blogjava.net/images/blogjava_net/hongjunli/10695/lomboz安装成功标志.BMP" width="527" border="0" />
										<br />
										<br />   </span>
						</span>
						<span>图</span>
						<span>(lomboz</span>
						<span>安装成功标志-<span>列表中多出了</span><span>:J2EE,EJB, Web Services,Xml</span><span>等</span></span>
						<span>)</span>
				</p>
				<p>
						<span>至此，</span>
						<span>Java Web</span>
						<span>开发环境已经配置搭建完毕。</span>
				</p>
		</div>
<img src ="http://www.blogjava.net/kobe09/aggbug/52756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:19 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML配置文件的读取处理 </title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52754.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52754.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52754.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52754.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了? 当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有Propertiesy这样的类专门处理这样的属性配置文件).使用XML作为Java的配...&nbsp;&nbsp;<a href='http://www.blogjava.net/kobe09/archive/2006/06/14/52754.html'>阅读全文</a><img src ="http://www.blogjava.net/kobe09/aggbug/52754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:17 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE体系结构设计（1）</title><link>http://www.blogjava.net/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.blogjava.net/kobe09/archive/2006/06/14/52753.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52753.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52753.html</trackback:ping><description><![CDATA[　　目前大多数企业采用J2EE技术的结构设计与解决方案。对于我们学习和研究J2EE体系结构来说，了解与掌握J2EE体系结构的设计方法及一些常用模式是必须的；模型-视图-控制(model-view-control，简称MVC)结构是目前最常见的J2EE应用所基于的体系结构，MVC主要适用于交互式的Web应用，尤其是存在大量页面及多次客户访问及数据显示；相比较而言，一个工作流体系结构更多应用于过程控制和较少交互的情况下；除了体系结构外，J2EE的设计模式对我们解决应用系统的设计也有很大的帮助。<br />　　<br />　　<b>一、J2EE的模型-视图-控制（MVC）体系结构</b><br />　　模型-视图-控制结构是交互式应用程序广泛使用的一种体系结构。它有效地在存储和展示数据的对象中区分功能模块以降低它们之间的连接度，这种体系结构将传统的输入、处理和输入模型转化为图形显示的用户交互模型，或者换一种说法，是多层次的Web商业应用；MVC体系结构具有三个层面：模型（Model）、视图(View)和控制(Controller)，每个层面有其各自的功能作用，MVC体系结构如下：<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>图1　MVC 体系结构</center><br />　　<br />　　模型层负责表达和访问商业数据，执行商业逻辑和操作。也就是说，这一层就是现实生活中功能的软件模拟；在模型层变化的时候，它将通知视图层并提供后者访问自身状态的能力，同时控制层也可以访问其功能函数以完成相关的任务。<br />　　<br />　　视图层负责显示模型层的内容。它从模型层取得数据并指定这些数据如何被显示出来。在模型层变化的时候，它将自动更新。另外视图层也会将用户的输入传送给控制器。<br />　　<br />　　控制层负责定义应用程序的行为。它可以分派用户的请求并选择恰当的视图以用于显示，同时它也可以解释用户的输入并将它们映射为模型层可执行的操作；在一个图形界面中，常见的用户输入包括点击按钮和菜单选择。在Web应用中，它包括对Web层的HTTP GET和POST的请求；控制层可以基于用户的交互和模型层的操作结果来选择下一个可以显示的视图，一个应用程序通常会基于一组相关功能设定一个控制层的模块，甚至一些应用程序会根据不同的用户类型具有不同的控制层设定，这主要是由于不同用户的视图交互和选择也是不同的。<br />　　<br />　　在模型层、视图层和控制层之间划分责任可以减少代码的重复度，并使应用程序维护起来更简单。同时由于数据和商务逻辑的分开，在新的数据源加入和数据显示变化的时候，数据处理也会变得更简单。<br />　　<br />　　<b>二、J2EE设计模式</b><br />　　一个设计模式描述了对于特定设计问题被验证的解决方案，它综合了所有开发者对这个问题所在领域的知识和见解；同时也是对于常见问题的可重用方案，它们一般适用于单个问题，但是组织在一起就可以提供整个企业系统的解决方案。下面我们列举八种常用于J2EE平台的设计模式，并对每种模式作简单的介绍，便于大家学习、理解与灵活应用。<br />　　<br />　　1、前控制器<br />　　<br />　　前控制器(front controller)主要提供一种可以集中式管理请求的控制器，一个前控制器可以接受所有的客户请求，将每个请求递交给相应的请求句柄，并适当地响应用户。<br />　　<br />　　前控制器也是表示层的设计模式，它的出现主要是由于表示层通常需要控制和协调来自不同用户的多个请求，而这种控制机制又根据不同的需要，可能会集中式控制或分散式控制。换句话说，就是应用系统需要对于表示层的请求提供一个集中式控制模块，以提供各种系统服务，包括内容提取、视图管理和浏览，如果系统中没有这种集中式控制模块或控制机制，每个不同的系统服务都需要进行单独的视图处理，这样代码的重复性就会提高，致使系统开发代价提高；同时，如果没有一个固定模块管理视图之间的浏览机制，致使其浏览功能下放于每个不同的视图中，最终必将使得系统的可维护性受到破坏；本文中我们主要讨论的是集中式控制模块，而不是分散式控制，因为前者更适合于大型的应用系统。<br />　　<br />　　基于上面所说的问题，研究人员提出了前控制器的设计模式。在这种模式中，控制器提供一个处理不同请求的控制点，这里的处理工作包括安全事务、视图选择、错误处理和响应内容的生成；通过将这些处理工作集中在一点进行，大大地减低了Java代码量，同时这种方法也可以减少在视图模块的程序逻辑，保证了在不同请求之间可以重用大量的逻辑代码。通常，控制器都是和一个分派组件联合工作的，分派组件主要是用于视图管理和浏览，也就是为用户选择下一个应该显示的视图，并同时提供对于相关显示资源的控制。分派组件可以包含在控制器之内，或是在另外一个单独的组件中；虽然前控制器模式推荐对于全部的请求使用统一处理，但是它也没有限制在一个系统中只能具有一个控制器，在系统中的每个层次都可以具有多个控制器，并且映射至不同的系统服务，下图2显示了前控制器的类图。<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>图2 前控制器的类图</center><br />　　<br />　　图3显示了前控制器的序列图，表示一个控制器如何处理相关的请求。<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>图3前控制器序列图</center><br />　　<br />　　下面我们来讨论一下图3的各个组件。<br />　　<br />　　2、控制器<br />　　<br />　　控制器(controller)是负责处理各种客户请求的控制点，并可以将一定的职能(如用户认证等)下放给帮助类。<br />　　<br />　　(1)分派组件(Dispatcher)。一个分派组件主要是用于视图的管理和浏览，为用户选择下一个可以显示的视图，并管理相关的显示资源；分派组件可以在一个控制器内运行，或者作为一个单独的组件与控制器协同工作；开发人员可以在分派组件中实现静态的视图分派技术，或是复杂的动态分派。<br />　　<br />　　(2)帮助类(Helper)。帮助类负责帮助一个视图或控制器来完成其处理工作，因此，帮助类具有多项职责，包括收集数据、存储中间数据模型等；另外，帮助类也可以在保证数据完整性和准确性的情况下，为不同显示需求修改数据模型；也就是说，根据用户的请求，帮助类可以向视图提供未经处理的原始数据，或是已经格式化后的Web内容，一个视图同时可以和多个帮助类协同工作，而后者通常是由JavaBeans和标签(tag)实现的。<br />　　<br />　　3、视图<br />　　<br />　　视图(view)负责向用户显示信息，而帮助类则负责支持视图的工作，即打包和建立相应的数据模型，下面我们介绍几种可以实现控制器的方法。<br />　　<br />　　1）基于Servlet前控制器<br />　　<br />　　这种方法建议使用servlet来实现一个控制器，尽管在语法上相差无几，但是它比使用JSP来实现要优越一些；因为控制器所进行的请求处理，多数都是与程序运行和控制流动相关的，这些处理工作虽然与显示模式相关，但是实际上是逻辑独立的，所以它们更适合在servlet中实现，而不是JSP技术中；使用这种方法也存在一些弱点，比如说servlet无法使用JSP运行环境的资源，如请求参数等，但是这个弱点也不是不能解决的，我们可以在servlet中建立相关的句柄来访问同样的资源，当然其代码会变得繁琐一点。<br />　　<br />　　2）基于JSP的前控制器<br />　　<br />　　这种方法建议使用JSP页面实现控制器，尽管语法上相同，但是Servlet方案要比其优越一些；因为控制器所处理的逻辑一般都不是有关显示模式的，所以在JSP页面中实现控制器似乎有点风马牛不相及；使用这种方法也不利于开发团队的角色和职责的分配，即软件开发人员需要在负责显示逻辑的JSP页面中修改请求处理的代码，通常，这种工作都是相当复杂的，尤其考虑整个JSP页面的编程、编译、测试和调试错误。<br />　　<br />　　3）控制器之中的分派组件<br />　　<br />　　如果分派组件没有较多功能，开发人员可以在控制器实现该组件。<br />　　<br />　　4）基础前端<br />　　<br />　　基于使用servlet实现前控制器，这种方案建议实现一个控制器作为基础类，这样其他的控制器可以在其之上扩展；这个基础类可以包含一些通用的逻辑实现，它的子类就会重载这些实现代码，这种方法也有一定的缺陷，当有许多子类继承这个基础类，并大量地重用代码时，那么就有可能出现一个类的改变会影响到所有子类的情况。<br />　　<br />　　5）用过滤器实现前控制器<br />　　<br />　　过滤器提供了与用户请求的中心处理相类似的功能，也就是说，控制器的一些功能可以由过滤器来实现，这种方案的过滤器主要负责处理请求的截取和解释，而不是请求的处理和响应的生成；通常可以为应用系统提供一个核心控制点，以处理所有的系统服务和程序逻辑，核心控制也就表明了所有的请求都可以简单地被跟踪和记录，从而方便各种服务功能的实施；当然，它也存在一些缺点，一个核心控制点的小问题可能会引发系统的崩溃，但在应用系统的实际开发中，这并不是个问题，因为通常我们都会在同一个层面上实现多个控制器，从而避免了这个缺陷；在控制器中，开发人员可以很方便地实现一个检查安全机制的组件，从而可以在最外层屏蔽对系统的恶意访问，另外使用控制器也会提高系统模块的可重用性，尤其在控制器同时使用帮助类的时候。<br />　　<br />　　4、视图帮助<br />　　<br />　　视图帮助(View helper)是属于表示层的设计模式，一个视图帮助可以包含相关视图中的数据访问和内容显示的逻辑，并可以精炼简化视图；显示逻辑主要是关于如何格式化页面上的数据，而访问逻辑则是关于如何取出数据，视图帮助通常用来显示数据的JSP标记(tag)或是读取数据的JavaBean。<br />　　<br />　　这种设计模式的出现主要是由于目前的应用系统通常需要实时地开发显示内容，并且能处理动态的程序数据。如果这些程序数据的访问逻辑和显示逻辑的关系过于紧密，则系统的表示层就会经常需要改动，从而系统的灵活性、重用性会大大地受到破坏；同时在相同的模块中实现访问逻辑和显示逻辑将会影响系统的模块化<img src ="http://www.blogjava.net/kobe09/aggbug/52753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:15 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA学习之路：不走弯路，就是捷径(二) </title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52752.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52752.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52752.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52752.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52752.html</trackback:ping><description><![CDATA[
		<font color="#800080">JAVA学习之路---学习路线及要点<br /><br /></font>
		<b>2．软件开发学习路线</b>
		<br />
		<br />两千多年的儒家思想孔孟之道，中庸的思想透入骨髓，既不冒进也不保守并非中庸之道，而是找寻学习软件开发的正确路线与规律。<br /><br />从软件开发人员的生涯规划来讲，我们可以大致分为三个阶段，软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵，不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。<br /><br />A．基础理论知识，如操作系统、编译原理、数据结构与算法、计算机原理等，它们并非不重要。如不想成为计算机科学家的话，可以采取"用到的时候再来学"的原则。<br /><br />B．一门编程语言，现在基本上都是面向对象的语言，JAVA/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。<br /><br />C．一种方法学或者说思想，现在基本都是面向对象思想（OOA/OOD/设计模式）。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。<br /><br />D．一种关系型数据库，ORACLE/SqlServer/DB2/MySQL等等<br /><br />E．一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。<br /><br />F．一种UML建模工具，用ROSE/VISIO/钢笔进行建模。<br /><br />G．一种软件过程，RUP/XP/CMM等等，通过软件过程来组织软件开发的众多活动，使开发流程专业化规范化。当然还有其他的一些软件工程知识。<br /><br />H．项目管理、体系结构、框架知识。<br /><br />正确的路线应该是：B→C→E→F→G→H。<br /><br />还需要补充几点：<br /><br />1）．对于A与C要补充的是，我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现，更新速度令人眼花燎乱雾里看花；但万变不离其宗，编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的，是强势技术之一，在上面需要多投入时间，给你的回报也会让你惊喜。<br /><br />2）．对于数据库来说是独立学习的，这个时机就由你来决定吧。<br /><br />3）．编程语言作为学习软件开发的主线，而其余的作为辅线。<br /><br />4）．软件工程师着重于B、C、E、 D；软件设计师着重于B、C、E、 D、F；架构设计师着重于C、F、H。<br /><br /><b>3．如何学习JAVA?</b><br /><br />3.1 JAVA学习路线<br /><br />3.1.1 基础语法及JAVA原理<br /><br />基础语法和JAVA原理是地基，地基不牢靠，犹如沙地上建摩天大厦，是相当危险的。学习JAVA也是如此，必须要有扎实的基础，你才能在J2EE、J2ME领域游刃有余。参加SCJP（SUN公司认证的JAVA程序员）考试不失为一个好方法，原因之一是为了对得起你交的1200大洋考试费，你会更努力学习，原因之二是SCJP考试能够让你把基础打得很牢靠，它要求你跟JDK一样熟悉JAVA基础知识；但是你千万不要认为考过了SCJP就有多了不起，就能够获得软件公司的青睐，就能够获取高薪，这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去，但离实际开发还有很长的一段路要走。<br /><br />3.1.2 OO思想的领悟<br /><br />掌握了基础语法和JAVA程序运行原理后，我们就可以用JAVA语言实现面向对象的思想了。面向对象，是一种方法学;是独立于语言……<br />……<br />……<br />3.2.5 不局限于JAVA<br /><br />很不幸，很幸运，要学习的东西还有很多。不幸的是因为要学的东西太多且多变，没时间陪老婆家人或女朋友，导致身心疲惫，严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事，他们或她们需要付出很多才能达成心愿。<br /><br />JAVA不要孤立地去学习，需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识，用横向纵向的比较联想的方式去学习会更有效。如学习JAVA集合的时候找数据结构的书看看；学JDBC的时候复习数据库技术；采取的依然是"需要的时候再学"的原则。<br /><br /><b>4．结束语</b><br /><br />需要强调的是，学习软件开发确实有一定的难度，也很辛苦，需要付出很多努力，但千万不要半途而废。本文如果能对一直徘徊在JAVA神殿之外的朋友有所帮助的话，笔者也欣慰了。哈哈，怎么听起来老气横秋呀？没办法，在电脑的长期辐射之下，都快变成小老头了。最后奉劝各位程序员尤其是MM程序员，完成工作后赶快远离电脑，据《胡播乱报》报道，电脑辐射会在白皙的皮肤上面点缀一些小黑点，看起来鲜艳无比……<img src ="http://www.blogjava.net/kobe09/aggbug/52752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:15 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA学习之路：不走弯路，就是捷径(一) </title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52751.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52751.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52751.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52751.html</trackback:ping><description><![CDATA[
		<strong>0．引言<br /><br /></strong>在ChinaITLAB导师制辅导中，笔者发现问得最多的问题莫过于"如何学习编程？JAVA该如何学习？"。类似的问题回答多了，难免会感觉厌烦，就萌生了写下本文的想法。到时候再有人问起类似的问题，我可以告诉他（她），请你去看看《JAVA学习之路》。拜读过****蔡学镛先生的《JAVA夜未眠》，有些文章如《JAVA学习之道》等让我们确实有共鸣，本文题目也由此而来。<br /><br />软件开发之路是充满荆棘与挑战之路,也是充满希望之路。JAVA学习也是如此，没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力，是很不现实的。每天仰天大叫"天神啊，请赐给我一本葵花宝典吧"，殊不知即使你获得了葵花宝典，除了受自宫其身之苦外，你也不一定成得了"东方不败"，倒是成"西方失败"的几率高一点。<br /><br />"不走弯路，就是捷径"，佛经说的不无道理。<br /><br /><b>1．如何学习程序设计？</b><br /><br />JAVA是一种平台，也是一种程序设计语言，如何学好程序设计不仅仅适用于JAVA，对C++等其他程序设计语言也一样管用。有编程高手认为，JAVA也好C也好没什么分别，拿来就用。为什么他们能达到如此境界？我想是因为编程语言之间有共通之处，领会了编程的精髓，自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。<br /><br /><b>1.1　培养兴趣</b><br /><br />兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话，你会活的很累，也太对不起自己了。多关心一些行业趣事，多想想盖茨。不是提倡天天做白日梦，但人要是没有了梦想，你觉得有味道吗？可能像许多深圳本地农民一样，打打麻将，喝喝功夫茶，拜拜财神爷；每个月就有几万十几万甚至更多的进帐，凭空多出个"食利阶层"。你认为，这样有味道吗？有空多到一些程序员论坛转转，你会发现，他们其实很乐观幽默，时不时会冒出智慧的火花。<br /><br /><b>1.2　慎选程序设计语言</b><br /><br />男怕入错行，女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事，它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域，而是已经渗透到了各行各业几乎每一个角落。<br /><br />如果你对硬件比较感兴趣，你可以学习C语言/汇编语言，进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉，你可以在C/C++等之上多花时间，以期进入电信软件开发领域。如果你对操作系统比较熟悉，你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。如果你想介入到应用范围最广泛的应用软件开发（包括电子商务电子政务系统）的话，你可以选择J2EE或.NET，甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之，你需要根据自己的特点来选择合适你的编程语言。<br /><br /><b>1.3　要脚踏实地,快餐式的学习不可取</b><br /><br />先分享一个故事。<br /><br />有一个小朋友，他很喜欢研究生物学，很想知道那些蝴蝶如何从蛹壳里出来，变成蝴蝶便会飞。 有一次，他走到草原上面看见一个蛹，便取了回家，然后看着，过了几天以后，这个蛹出了一条裂痕，看见里面的蝴蝶开始挣扎，想抓破蛹壳飞出来。 这个过程达数小时之久，蝴蝶在蛹里面很辛苦地拼命挣扎，怎么也没法子走出来。这个小孩看着看着不忍心，就想不如让我帮帮它吧，便随手拿起剪刀在蛹上剪开，使蝴蝶破蛹而出。 但蝴蝶出来以后，因为翅膀不够力，变得很臃肿，飞不起来。<br /><br />这个故事给我们的启示是：欲速则不达。<br /><br />浮躁是现代人最普遍的心态，能怪谁？也许是贫穷落后了这么多年的缘故，就像当年的大跃进一样，都想大步跨入****主义社会。现在的软件公司、客户、****、学校、培训机构等等到处弥漫着浮躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧，居然有的打广告宣称"参加培训，100%就业"，居然报名的学生不少，简直是藐视天下程序员。社会环境如是，我们不能改变，只能改变自己,闹市中的安宁，弥足珍贵。许多初学者C++/JAVA没开始学，立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello World程序，就忙不迭的向世界宣告，"我会软件开发了"，简历上也大言不惭地写上"精通VC/JAVA"。结果到软件公司面试时要么被三两下打发走了，要么被驳的体无完肤，无地自容。到处碰壁之后才知道捧起《C++编程思想》《JAVA编程思想》仔细钻研，早知如此何必当初呀。<br /><br />"你现在讲究简单方便，你以后的路就长了"，好象也是佛经中的劝戒。<br /><br /><b>1.4　多实践,快实践</b><br /><br />彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。<br /><br />从前，四川边境有两个和尚，一个贫穷，一个有钱。一天，穷和尚对富和尚说："我打算去南海朝圣，你看怎么样？"富和尚说："这里离南海有几千里远，你靠什么去呢？"穷和尚说："我只要一个水钵，一个饭碗就够了。"富和尚为难地说："几年前我就打算买条船去南海，可至今没去成，你还是别去吧！" 一年以后，富和尚还在为租赁船只筹钱，穷和尚却已经从南海朝圣回来了。<br /><br />这个故事可解读为：任何事情，一旦考虑好了，就要马上上路，不要等到准备周全之后，再去干事情。假如事情准备考虑周全了再上路的话，别人恐怕捷足先登了。软件开发是一门工程学科，注重的就是实践，"君子动口不动手"对软件开发人员来讲根本就是错误的，他们提倡"动手至上"，但别害怕，他们大多温文尔雅，没有暴力倾向，虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为，学习编程的秘诀是：编程、编程、再编程，笔者深表赞同。不仅要多实践，而且要快实践。我们在看书的时候，不要等到你完全理解了才动手敲代码，而是应该在看书的同时敲代码，程序运行的各种情况可以让你更快更牢固的掌握知识点。<br /><br /><b>1.5　多参考程序代码</b><br />……<br />……<br />……<br /><br /><br /><b>1.9　使用合适的工具<br /><br /></b>工欲善其事必先利其器。软件开发包含各种各样的活动，需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等，没有工具帮忙可以说是寸步难行。工具可以提高开发效率，使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了，无招胜有招，手中无剑心中有剑这样的境界几乎不可企及。在笔者另外一篇文章中会专门阐述如何选择合适的工具（该文章也可作为本文的姊妹篇）。<br /><img src ="http://www.blogjava.net/kobe09/aggbug/52751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:14 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 平台入门 </title><link>http://www.blogjava.net/kobe09/archive/2006/06/14/52750.html</link><dc:creator>氧气中毒</dc:creator><author>氧气中毒</author><pubDate>Wed, 14 Jun 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/kobe09/archive/2006/06/14/52750.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52750.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52750.html</trackback:ping><description><![CDATA[
		<p>　　本文为您提供关于 Eclipse 平台的概述，包括其起源和体系结构。本文首先简要讨论 Eclipse 的开放源代码性质及其对多种编程语言的支持，然后通过一个简单的程序例子展示 Java 开发环境。本文还将考查以插件扩展形式可用的一些软件开发工具，并展示一个用于 UML 建模的插件扩展。 </p>
		<p>　　<strong>Eclipse 是什么？</strong></p>
		<p>　　Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言，它只是一个框架和一组服务，用于通过插件组件构建开发环境。幸运的是，Eclipse 附带了一个标准的插件集，包括 Java 开发工具（Java Development Tools，JDT）。</p>
		<p>　　虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用，但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境（Plug-in Development Environment，PDE），这个组件主要针对希望扩展 Eclipse 的软件开发人员，因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件，对于给 Eclipse 提供插件，以及给用户提供一致和统一的集成开发环境而言，所有工具开发人员都具有同等的发挥场所。</p>
		<p>　　这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的，但它的用途并不限于 Java 语言；例如，支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用，或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础，比如内容管理系统。</p>
		<p>　　基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench，它构成了 IBM Java 开发工具系列的基础。例如，WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。</p>
		<p>　　<strong>Eclipse 是开放源代码的软件</strong></p>
		<p>　　开放源代码软件是这样一种软件，它们在发布时附带了旨在确保将某些权利授予用户的许可证。当然，最明显的权利就是源代码必须可用，以便用户能自由地修改和再分发该软件。这种用户权利的保护是通过一种称为 copyleft 的策略来完成的：软件许可证主张版权保护，除非明确授予用户这样的权利，否则用户不得分发该软件。copyleft 还要求同一许可证涵盖任何被再分发的软件。这实际上倒置了版权的目的——使用版权来授予用户权利，而不是为软件的开发者保留版权——copyleft 经常被描述为“保留所有版权”。</p>
		<p>　　曾经四处蔓延的对开放源代码软件的许多恐惧、担忧和疑虑，都与某些 copyleft 许可证的所谓“病毒”性质有关——如果使用开放源代码软件作为您开发的程序的一部分，您将失去自己的知识产权，因为该许可证将“传染”您开发的专有部分。换句话说，该许可证可能要求与开放源代码软件一起打包的所有软件，都必须在相同的许可证之下发布。虽然这对最著名的 copyleft 许可证（即 GNU 通用公共许可证，例如 Linux 就是在该许可证之下发布的）来说可能是事实，当时还有其他许可证在商业化和社区考虑之间提供了较好的平衡。</p>
		<p>　　开放源代码计划（Open Software Initiative）是一家非营利机构，它明确定义了开放源代码的含义及满足其标准的认证许可证。Eclipse 是在 OSI 认可的通用公共许可证（CPL）1.0 版之下被授予许可证的，CPL“旨在促进程序的商业化使用……”（欲获得指向通用公共许可证 1.0 版完整文本的链接，请参阅本文稍后的 参考资料）。</p>
		<p>　　为 Eclipse 创建插件或将 Eclipse 用作软件开发应用程序基础的开发人员，需要发布他们在 CPL 下使用或修改的任何 Eclipse 代码，但是他们可以自由决定自己添加的代码的许可证授予方式。与出自 Eclipse 的软件一起打包的专有代码不需要作为开放源代码来授予许可证，该源代码也不需要提供给用户。</p>
		<p>　　尽管大多数开发人员不会使用 Eclipse 来开发插件，或创建基于 Eclipse 的新产品，但是 Eclipse 的开放源代码性质所意味的，并不只是它使得 Eclipse 免费可用（尽管便于商业化的许可证意味着插件可能要花钱）。开放源代码鼓励创新，并激励开发人员（甚至是商业开发人员）为公共开放源代码库贡献代码。对此存在许多原因，不过最本质的原因或许是为这个项目作贡献的开发人员越多，这个项目就会变得对每个人都越宝贵。随着这个项目变得更加有用，更多的开发人员将会使用它，并围绕它形成一个社区，就像那些围绕 Apache 和 Linux 形成的社区一样。</p>
		<p>　　<strong>Eclipse 是什么机构？</strong></p>
		<p>　　Eclipse.org 协会管理和指导 Eclipse 正在进行中的开发。在据说 IBM 花了 4000 万美元开发 Eclipse，并把它作为一个开放源代码项目发布之后，Eclipse.org 协会吸收了许多软件工具提供商，包括 Borland、Merant、Rational、RedHat、SuSE、TogetherSoft 和 QNX。从那以后还有其他公司相继加入，包括 Hewlett Packard、Fujitsu、Sybase。这些公司分别向理事会派了一名代表，这个理事会负责确定 Eclipse 项目的方向和范围。</p>
		<p>　　在最高层，项目管理委员会（Project Management Committee，PMC）管理着 Eclipse 项目。这个项目被划分为多个子项目，每个子项目都有一名负责人。大型子项目又被划分为组，每个组也有一名负责人。目前，这其中的大多数管理角色都由最初开发 Eclipse 的 IBM 子公司 Object Technology International (OTI)的人担任，但是作为一个开放源代码的项目，它欢迎任何人的参与。任何特定部门的职责是通过该部门对项目的贡献来争取的。</p>
		<p>　　现在我们已经考察了 Eclipse 背后的一些理论、历史和管理，下面让我们考察该产品本身。</p>
		<p>　　<strong>Eclipse 工作台</strong></p>
		<p>　　在第一次打开 Eclipse 时，首先看到的是下面的欢迎屏幕：</p>
		<p align="center">
				<img height="446" src="http://www.javafan.net/uploadfiles/20041209094024100.jpg" width="600" border="0" />
				<br />图 1. Eclipse 工作台</p>
		<p>　　Eclipse 工作台由几个称为 视图（view） 的窗格组成，比如左上角的 Navigator 视图。窗格的集合称为 透视图（perspective）。默认的透视图是 Resource 透视图，它是一个基本的通用视图集，用于管理项目以及查看和编辑项目中的文件。</p>
		<p>　　<strong>Navigator 视图</strong> 允许您创建、选择和删除项目。Navigator 右侧的窗格是 <strong>编辑器区域</strong>。取决于 Navigator 中选定的文档类型，一个适当的编辑器窗口将在这里打开。如果 Eclipse 没有注册用于某特定文档类型（例如，Windows 系统上的 .doc 文件）的适当编辑器，Eclipse 将设法使用外部编辑器来打开该文档。</p>
		<p>　　Navigator 下面的 <strong>Outline 视图</strong> 在编辑器中显示文档的大纲；这个大纲的准确性取决于编辑器和文档的类型；对于 Java 源文件，该大纲将显示所有已声明的类、属性和方法。</p>
		<p>　　<strong>Tasks 视图</strong> 收集关于您正在操作的项目的信息；这可以是 Eclipse 生成的信息，比如编译错误，也可以是您手动添加的任务。</p>
		<p>　　该工作台的大多数其他特性，比如菜单和工具栏，都应该和其他那些熟悉的应用程序类似。一个便利的特性就是不同透视图的快捷方式工具栏，它显示在屏幕的左端；这些特性随上下文和历史的不同而有显著差别。Eclipse 还附带了一个健壮的帮助系统，其中包括 Eclipse 工作台以及所包括的插件（比如 Java 开发工具）的用户指南。至少浏览一遍这个帮助系统是值得的，这样可以看到有哪些可用的选项，同时也可更好地理解 Eclipse 的工作流程。</p>
		<p>　　为继续这个短暂的 Eclipse 之旅，我们将在 Navigator 中创建一个项目。右键单击 Navigator 视图，然后选择 <strong>New=&gt;Project</strong>。当 New Project 对话框出现时，选择左面的 Java。标准 Eclipse 只有一种 Java 项目类型，名为“Java Project”。如果安装了插件来提供 JSP 和 servlet 支持，我们会从这里看到一个用于 Web 应用程序的附加选项。眼下，请选择 Java Project，在提示项目名称时输入“Hello”，然后按 Finish。</p>
		<p>　　接下来，我们将检查一下 Java 透视图。取决于您喜欢的屏幕管理方式，您可以通过选择 <strong>Window=&gt;Open Perspective=&gt;Java</strong> 来改变当前窗口中的透视图，也可以通过选择 <strong>Window=&gt;New Window</strong>，然后再选择这个新的透视图，从而打开一个新的窗口。</p>
		<p>　　正如您可能预期的那样，Java 透视图包含一组更适合于 Java 开发的视图。其中之一就是左上角的视图，它是一个包含各种 Java 包、类、jar 和其他文件的层次结构。这个视图称为 <strong>Package Explorer</strong>。还要注意主菜单已经展开了——并且出现了两个新的菜单项：Source 和 Refactor。</p>
		<p>　　<strong>Java 开发环境（JDE）</strong></p>
		<p>　　为试验一下 Java 开发环境，我们将创建并运行一个“Hello, world”应用程序。使用 Java 透视图，右键单击“Hello”项目，选择 New=&gt;Class，如图 2 所示。在随后出现的对话框中，键入“Hello”作为类名称。在“Which method stubs would you like to create?”下面，选中“public static void main(String[] args)”复选框，然后按 Finish。</p>
		<p align="center">
				<img height="635" src="http://www.javafan.net/uploadfiles/20041209094024200.gif" width="582" border="0" />
				<br />图 2. 在 Java 透视图中创建新类</p>
		<p>　　这样将在编辑器区域创建一个包含 Hello 类和空的 main() 方法的 .java 文件，如图 3 所示。然后向该方法添加如下代码（注意其中 i 的声明是有意省略了的）：</p>
		<p align="center">
				<img height="460" src="http://www.javafan.net/uploadfiles/20041209094024300.gif" width="600" border="0" />
				<br />图 3. Java 编辑器中的 Hello 类</p>
		<p>　　您会在键入时注意到 Eclipse 编辑器的一些特性，包括语法检查和代码自动完成。在 2.1 版（我曾下载 M2 版来试用过）中，当您键入开括号或双引号时，Eclipse 会自动提供配对的符号，并将光标置于符号对之内。 </p>
		<p>　　在其他情况下，您可以通过按 Ctrl-Space 来调用代码自动完成功能。代码自动完成提供了上下文敏感的建议列表，您可通过键盘或鼠标来从列表中选择。这些建议可以是针对某个特定对象的方法列表，也可以是基于不同的关键字（比如 for 或 while）来展开的代码片断。</p>
		<p>　　语法检查依赖增量编译。每当您保存代码，它就在后台接受编译和语法检查。默认情况下，语法错误将以红色下划线显示，一个带白 “X” 的红点将出现在左边沿。其他错误在编辑器的左边沿通过灯泡状的图标来指示；这些就是编辑器或许能为您修复的问题——即所谓的Quick Fix（快速修复）特性。</p>
		<p>　　上面的代码例子在 for 语句后面有一个灯泡状图标，因为 i 的声明被省略了。双击该图标将调出建议的修复列表。在此例中，它将提供创建一个类字段 i、一个局部变量 i 或一个方法参数 i 的建议；单击其中的每一个建议都会显示将要生成的代码。图 4 显示了该建议列表和建议创建一个局部变量之后生成的代码。</p>
		<p align="center">
				<img height="363" src="http://www.javafan.net/uploadfiles/20041209094024400.gif" width="600" border="0" />
				<br />图 4. Quick Fix 建议</p>
		<p>　　双击该建议就会把建议代码插入到代码中的恰当位置。 </p>
		<p>　　一旦代码无错误地编译完成，您就能够从 Eclipse 菜单上选择 Run 来执行该程序（注意这里不存在单独的编译步骤，因为编译是在您保存代码时进行的。如果代码没有语法错误，它就可以运行了）。这时会出现一个具有适当默认设置的 Launch Configurations 对话框；请按右上角的 Run 按钮。一个新的选项卡式窗格将出现在下面的窗格（控制台）中，其中显示了程序的输出，如图 5 所示。</p>
		<p align="center">
				<img height="454" src="http://www.javafan.net/uploadfiles/20041209094024500.gif" width="600" border="0" />
				<br />图 5. 程序的输出</p>
		<p>　　也可以在 Java 调试器中运行程序。首先双击编辑器视图左端的灰色边沿，从而在调用 System.out.println() 之后的 main() System.out.println() 中设置一个断点。一个蓝色的点将会出现在那里。然后从 Run 菜单上选择 Debug。正如上面描述的，这时会出现一个 Launch Configurations 对话框。请选择 Run。透视图将自动切换到 Debug 透视图，其中具有许多有趣的新视图，如图 6 所示：</p>
		<p align="center">
				<img height="454" src="http://www.javafan.net/uploadfiles/20041209094024600.gif" width="600" border="0" />
				<br />图 6. Debug 透视图</p>
		<p>　　首先，请注意该透视图左上角的 Debug 视图。这个视图显示调用堆栈，并且标题栏中有一个工具栏，它允许您控制程序的执行，包括继续、挂起或终止程序、跟踪下一个语句、单步执行下一个语句，或者从方法返回。</p>
		<p>　　右上角的窗格包含许多选项卡式的视图，包括 Variables、Breakpoints、Expressions 和 Display。这里我单击了 Variables 视图，以便我们能够看到 i 的当前值。</p>
		<p>　　可以通过上下文敏感的帮助，获得关于这些视图的更多信息：单击视图的标题，然后按 F1。</p>
		<p>　　<strong>附加插件</strong></p>
		<p>　　除了像 JDT 这样用于编辑、编译和调试应用程序的插件外，还有些可用的插件支持从建模、生成自动化、单元测试、性能测试、版本控制到配置管理的完整开发过程。</p>
		<p>　　Eclipse 标准地附带了配合 CVS 使用的插件，CVS 是用于源代码控制的开放源代码并发版本系统（Concurrent Versions System）。Team 插件连接到 CVS 服务器，允许开发团队的成员操作一组源代码文件，却不会相互覆盖其他人的更改。这里不打算进一步探讨如何从 Eclipse 内部进行源代码控制，因为这需要安装 CVS 服务器，不过支持开发团队而不只是独立的开发，这是 Eclipse 的一个重要的必备特性。</p>
		<p>　　已经可用或已宣布要推出的一些第三方插件包括：</p>
		<p>　　<strong>版本控制和配置管理</strong></p>
		<p>　　□ CVS <br />　　□ Merant PVCS <br />　　□ Rational ClearCase </p>
		<p>　　<strong>UML 建模</strong></p>
		<p>　　□ OMONDO EclipseUML <br />　　□ Rational XDE (代替 Rose) <br />　　□ Together WebSphere Studio Edition </p>
		<p>　　<strong>图形</strong></p>
		<p>　　□ Batik SVG <br />　　□ Macromedia Flash </p>
		<p>　　<strong>Web 开发、HTML、XML</strong></p>
		<p>　　□ Macromedia Dreamweaver <br />　　□ XMLBuddy </p>
		<p>　　<strong>应用服务器集成</strong></p>
		<p>　　□ Sysdeo Tomcat launcher </p>
		<p>　　欲了解可用插件的更完整列表，请参阅 <a href="http://eclipse-plugins.2y.net/eclipse/index.jsp"><font color="#1d58d1">Eclipse 插件列表</font></a>。</p>
		<p>　　例子：一个用于 UML 建模的插件</p>
		<p>　　要查看插件的例子，以及查看它是如何与 Eclipse 集成的，请下载流行的 OMONDO EclipseUML；您需要注册，不过该插件是免费的。这个插件依赖 GEF，即 Graphical Editor Framework，这是另一个 Eclipse 插件。GEF 是 Tools 子项目的一部分。要下载 GEF，请转到 Eclipse Web 站点，选择“downloads”，然后单击“Tools PMC downloads page”链接。注意您需要下载 OMONDO 推荐的 GEF 版本（针对 OMONDO 1.0.2 的是 GEF 2.0 版）。</p>
		<p>　　下载之后，插件的安装通常是通过解压缩下载文件，并将其内容复制到 Eclipse 插件目录来完成的。在此例中，GEF 需要解压缩到 Eclipse目录（它将自动从该目录进入插件目录）。为安全起见，您可能想将它解压缩到某个临时目录，再相应地从那里复制相关目录。如果 Eclipse 正在运行，您需要停止它然后再重新启动它，这样它才能识别新安装的插件。</p>
		<p>　　一旦 EclipseUML（以及 GEF）安装完成，您就能够像创建一个 Java 类文件一样创建一个类图。在 Java 透视图中，右键单击 Package Explorer 中的“Hello”项目，然后从弹出菜单上选择 <strong>New=&gt;Other</strong>。New 对话框的左边窗格中将会有一个用于 UML 的新选项。EclipseUML 的免费版本仅支持类图，因此右侧的惟一选项是 UML Class Diagram。请选择 UML Class Diagram，然后为该类图键入一个名称，比如“Hello”：</p>
		<p align="center">
				<img height="488" src="http://www.javafan.net/uploadfiles/20041209094024700.gif" width="600" border="0" />
				<br />图 7. Class Diagram 编辑器</p>
		<p>　　编辑器区域中将会出现一个图形编辑器，它带有用于绘制类图的画布。您可以通过两种方式创建类图：通过将 Java 文件从 Package Explorer 拖放到类图上，从而对现有代码进行逆向工程；或者使用空白类图上面工具栏中可用的绘制工具。要试验第一种方法，请创建一个名为 Person 的新类（使用 <strong>File=&gt;New=&gt;Class</strong>），然后赋予它下面列出的两个私有属性：</p>
		<p style="BACKGROUND: #eeeeee">
				<br />/** Person.java<br /> * @author david<br /> */<br />public class Person {<br />private String name;<br />private Address address;<br /><br />/**<br /> * Returns the address.<br /> * @return Address<br /> */<br />public Address getAddress() {<br />         return address;<br />}<br /><br />/**<br /> * Returns the name.<br /> * @return String<br /> */<br />public String getName() {<br />        return name;<br />}<br /><br />/**<br /> * Sets the address.<br /> * @param address The address to set<br /> */<br />public void setAddress(Address address) {<br />        this.address = address;<br />}<br /><br />/**<br /> * Sets the name.<br /> * @param name The name to set<br /> */<br />public void setName(String name) {<br />       this.name = name;<br />}<br /><br />}</p>
		<p>　　（应该承认，我仅键入了针对 name 和 address 的行。getter 和 setter 方法是通过 Eclipse 自动生成的，即右键单击源代码，然后从弹出菜单上选择 <strong>Source=&gt;Generate Getter and Setter</strong> 。） </p>
		<p>　　请保存并关闭 Person.java Hello.ucd。</p>
		<p align="center">
				<img height="465" src="http://www.javafan.net/uploadfiles/20041209094024800.gif" width="600" border="0" />
				<br />图 8. Person 类图</p>
		<p>　　要从 UML 创建 Java 类，请单击类图窗口顶部工具栏上的“New class”按钮，即左起第三个按钮，然后单击类图。当 New 类向导打开时，请键入 Adress 作为类名称，然后按 Finish。</p>
		<p>　　您可以右键单击类名称并选择 <strong>New=&gt;Attribute</strong>，从而给类添加属性。在 New 属性对话框中，请输入属性名称、类型和可见性。然后右键单击类名称并选择 <strong>New=&gt;Method</strong> 来添加方法。</p>
		<p>　　当您更改类图时，图下面的 Source Editor 窗口将反映所做的更改。最后，您可以单击 Association 按钮（左起第五个），绘制一条从 Person 类指向 Address 类的线段，从而绘制这两个类之间的关系图。这样会调出另外一个对话框，您可以在其中输入关联属性（请参考 EclipseUML 帮助，以了解关于必需信息的更多内容）。完成后的图应该类似如下：</p>
		<p align="center">
				<img height="466" src="http://www.javafan.net/uploadfiles/20041209094024900.gif" width="600" border="0" />
				<br />图 9. 关联</p>
		<p>　　这个 UML 插件展示了 Eclipse 插件的几个典型特点。首先，它展示了工具之间的紧密集成。表面上绝对无法看出有多个组件在工作；与 Eclipse 平台和 JDT 的集成是无缝的。例如，当 Person 类被创建时，它显示语法错误是因为它的一个属性 Address 没有定义。一旦 Address 类在 UML 图中创建完成，这些组件就会分开显示出来。</p>
		<p>　　另一个特点是 EclipseUML 利用其他插件提供的功能的能力——在此例中是 GEF 插件，它提供用于开发可视化编辑器的工具。</p>
		<p>　　还有另一个特点涉及 EclipseUML 插件使用多层次功能来分发的方式。支持类图的基本插件是免费的，但是更成熟的版本要付费才能使用。</p>
		<p>　　Eclipse 平台体系结构<br />　　Eclipse 平台是一个具有一组强大服务的框架，这些服务支持插件，比如 JDT 和插件开发环境（PDE）。它由几个主要的部分构成：平台运行库、工作区、工作台、团队支持和帮助。</p>
		<p align="center">
				<img height="188" src="http://www.javafan.net/uploadfiles/20041209094024110.gif" width="393" border="0" />
				<br />图 10. Eclipse 平台体系结构</p>
		<p>　　平台<br />　　平台运行库是内核，它在启动时检查已安装了哪些插件，并创建关于它们的注册表信息。为降低启动时间和资源使用，它在实际需要任何插件时才加载该插件。除了内核外，其他每样东西都是作为插件来实现的。</p>
		<p>　　工作区 <br />　　工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件，以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息，比如文件创建、删除或更改。 </p>
		<p>　　工作台 <br />　　工作台为 Eclipse 提供用户界面。它是使用标准窗口工具包（SWT）和一个更高级的 API（JFace）来构建的；SWT 是 Java 的 Swing/AWT GUI API 的非标准替代者，JFace 则建立在 SWT 基础上，提供用户界面组件。</p>
		<p>　　SWT 已被证明是 Eclipse 最具争议的部分。SWT 比 Swing 或 SWT 更紧密地映射到底层操作系统的本机图形功能，这不仅使得 SWT 更快速，而且使得 Java 程序具有更像本机应用程序的外观和感觉。使用这个新的 GUI API可能会限制 Eclipse 工作台的可移植性，不过针对大多数流行操作系统的 SWT 移植版本已经可用。</p>
		<p>　　Eclipse 对 SWT 的使用只会影响 Eclipse 自身的可移植性——使用 Eclipse 构建的任何 Java 应用程序都不会受到影响，除非它们使用 SWT 而不是使用 Swing/AWT。</p>
		<p>　　团队支持<br />　　团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图，以允许用户与所使用的任何版本控制系统（如果有的话）交互。大多数插件都不需要与团队支持组件交互，除非它们提供版本控制服务。</p>
		<p>　　帮助 <br />　　帮助组件具有与 Eclipse 平台本身相当的可扩展能力。与插件向 Eclipse 添加功能相同，帮助提供一个附加的导航结构，允许工具以 HTML 文件的形式添加文档。</p>
		<p>　　Eclipse 的前景<br />　　围绕 Eclipse 的开发正处于关键阶段。主要软件工具提供商都参与进来了，并且开放源代码 Eclipse 插件项目的数量正在与日俱增。</p>
		<p>　　可移植、可扩展、开放源代码的框架并不是个新思想（您会想起 Emacs），但是由于它成熟、健壮和优雅的设计，Eclipse 带来了全新的动力。IBM 价值 4000 万美元的世界级软件在开放源代码领域的发布，给业界带来了久违的震撼。</p>
<img src ="http://www.blogjava.net/kobe09/aggbug/52750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:13 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Structs中基本配置入门</title><link>http://www.blogjava.net/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.blogjava.net/kobe09/archive/2006/06/14/52749.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52749.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52749.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52749.html</trackback:ping><description><![CDATA[　　1.为Structs应用配置Web.xml文件<br />　　<br />　　第一步:配置ActionServlet<br />　　<br />　　&lt;servlet&gt;<br />　　&lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />　　&lt;servlet-class&gt;org.appache.structs.ActionServlet&lt;/servlet-class&gt;<br />　　&lt;/servlet&gt;<br />　　<br />　　&lt;servlet-mapping&gt;<br />　　&lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />　　&lt;uri-pattern&gt;*.do&lt;/url-pattern&gt;<br />　　&lt;/servlet-mapping&gt;<br />　　<br />　　注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个ActionServlet。<br />　　<br />　　第二步：初始化参数对Servlet的运行环境进行初始化配置。<br />　　<br />　　&lt;servlet&gt;<br />　　&lt;servlet-name&gt; action&lt;/servlet-name&gt;<br />　　&lt;servlet-class&gt; org.appache.structs.ActionServlet &lt;/servlet-class&gt;<br />　　&lt;init-param&gt;<br />　　&lt;param-name&gt;config&lt;/param-name&gt;<br />　　&lt;param-value&gt;/WEB-INF/structs-config.xml&lt;/param-value&gt;<br />　　&lt;/init-param&gt;<br />　　&lt;/servlet&gt;<br />　　<br />　　表2-1. Struts1.1中用到的初始化参数<br />　　<br />　　参数名　　　　　　 含义/默认值<br />　　config　　　　　以相对路径的方式指明Struts应用程序的配置文件位置。如不设置，则默认值为/WEB-INF/struts-config.xml。<br />　　config/sub1　　 以相对路径的方式指明子应用程序的配置文件位置，一般来说，很少用到子应用程序，在此不多描述。<br />　　debug　　　　　 设置Servlet的debug级别，控制日志记录的详细程度。默认为0，记录相对最少的日志信息。<br />　　detail　　　　　设置Digester的debug级别，Digester是Struts框架所使用的用来解析xml配置文件的一个框架，通过该设置，可以查看不同详细等级的解析日志。默认为0，记录相对最少的日志信息。<br />　　<br />　　第三步：配置欢迎清单<br />　　<br />　　当客户访问Web应用时，如果仅仅给出Web应用的Root URL，没用指定具体的文件名，Web容器会自动调用Web应用的欢迎文件。<br />　　<br />　　&lt;welcome-file-list&gt;<br />　　&lt;welcome-file&gt;welcome.jsp&lt;/welcome-file&gt;<br />　　&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />　　&lt;/welcome-fiel-list&gt;<br />　　<br />　　说明：&lt;welcome-file-list&gt;可以包含多个&lt;welcome-file&gt;子元素，首先查找第一个&lt;welcome-file&gt;文件。<br />　　<br />　　由于&lt;welcome-file-list&gt;元素中不能配置Servlet映射，因此不能直接把Structs的Action作为欢迎文件，可以采用一种变通的方法来实现在欢迎文件中调用Structs Action。首先，在Structs配置文件中为被调用的Action创建一个全局的转发项，例如：<br />　　&lt;global-forwards&gt;<br />　　&lt;forward name=”welcome” path=”HelloWord.do”/&gt;<br />　　&lt;/global-forwords&gt;<br />　　<br />　　创建一个welcome.jsp的文件<br />　　<br />　　最后在web.xml文件中把welcome.jsp文件配置为欢迎文件，代码如下：<br />　　&lt;welcome-file-list&gt;<br />　　&lt;welcome-file&gt;welcome.jsp&lt;/welcome-file&gt;<br />　　&lt;/welcome-file-list&gt;<br />　　<br />　　第四步：配置错误处理<br />　　<br />　　&lt;error-page&gt;<br />　　&lt;error-code&gt;404&lt;/error-code&gt;<br />　　&lt;location&gt;/commom/404.jsp&lt;/location&gt;<br />　　&lt;/error-page&gt;<br />　　&lt;error-page&gt;<br />　　&lt;error-code&gt;505&lt;/error-code&gt;<br />　　&lt;location&gt;/commom/505.jsp&lt;/location&gt;<br />　　&lt;/error-page&gt;<br />　　<br />　　也可以为Web容器捕获的Java异常配置&lt;error-page&gt;,需要设置&lt;exception-type&gt;子元素，它用于指定Java异常类。Web容器可能捕获如下异常：<br />　　<br />　　RuntimeException或Error　 ServletException或它的子类　IOException或它的子类<br />　　<br />　　&lt;error-page&gt;<br />　　&lt;exception-type&gt;java.io.IOException&lt;/exception-type&gt;<br />　　&lt;location&gt;/common/system_ioerror.jsp&lt;/location&gt;<br />　　&lt;/error-page&gt;<br />　　<br />　　第五步：配置Structs标签库<br />　　<br />　　使用客户化的标签库，要配置它们<br />　　<br />　　&lt;taglib&gt;<br />　　&lt;tag-uri&gt;/WEB-INF/structs-html.tld&lt;tag-uri&gt;<br />　　&lt;taglib-location&gt;/WEB-INF/structs-html.tld&lt;/taglib-location&gt;<br />　　&lt;/taglib&gt;<br />　　<br />　　&lt;tag-uri&gt;用于指定标签库的相对或者绝对URI地址，Web应用根据这一URI来访问标签库。<br />　　<br />　　&lt;taglib-location&gt;指定标签描述文件在文件资源系统中的物理位置。<br />　　<br />　　2.Structs配置文件<br />　　<br />　　Structs框架在启动时会读入其配置文件，根据它来创建和配置各种Structs组件。<br />　　<br />　　1&lt;Structs-config&gt;元素<br />　　<br />　　&lt;structs-config&gt;元素是Structs配置文件的根元素，&lt;structs-cofig&gt;元素有8个子元素。它的DTD定义如下：<br />　　<br />　　&lt;!ELEMENT structs-config(data-sources?,formbean?,global-exeception?,global-forward?,action-mapping,controller?,message-resources*,plug-in*)&gt;<br />　　<br />　　在Struts配置中，必须按照以上的DTD指定的先后顺序来配置&lt;Structs-config&gt;元素的各个子元素，如果颠倒了这些元素的配置文件中的位置，在Structs应用启动时会生成错误。<br />　　<br />　　&lt;data-sources&gt;元素<br />　　<br />　　&lt;data-sources&gt;元素包含零个、一个或者多个&lt;data-sources&gt;子元素，&lt;data-sources&gt;用于配置特定的数据源，它可以包含多个&lt;set-property&gt;子元素，用于设置数据源的各种属性。<br />　　。。。<br />　　<br />　　配置了数据源后，就可以在Action类中访问数据源，在org.apache.structs.action.Action类中定义了getDataSource(HttpRequrst)方法，它用于获取数据源对象的引用。<br />　　<br />　　DataSource　dataSource;<br />　　Connection　connection;<br />　　dataSource =getDataSource(request);<br />　　connection=dataSource.getConnection();<br />　　<br />　　也可以在配置文件中声明多个数据源，此时需要为每一个数据源分配唯一的key值，通过改值来标识特定的数据源。<br />　　<br />　　2&lt;form-beans&gt;元素<br />　　<br />　　&lt;form-beans&gt;元素用来配置多个ActionForm Bean，&lt;form-beans&gt;包含多个&lt;forom-bean&gt;子元素，,每个&lt;from-bean&gt;包含多个属性，ClassName , name,type<br />　　<br />　　&lt;form-beans&gt;<br />　　&lt;form-bean name="HelloForm" type="hello.HelloForm"/&gt;<br />　　&lt;/form-beans&gt;<br />　　<br />　　注意：配置动态ActionForm Bean，还必须配置&lt;form-bean&gt;元素的&lt;form-property&gt;元素。<br />　　<br />　　&lt;form-beans&gt;<br />　　&lt;form-bean name="HelloForm" type="hello.HelloForm"/&gt;<br />　　&lt;form-bean name="userForm" type="org.apache.structs.action.DynaAction"&gt;<br />　　&lt;from-property name="firstname" type="java.lang.String"/&gt;<br />　　&lt;form-property name="secondname" type="java.lang.String"&gt;<br />　　&lt;form-property name="age" type="java.Integer" initial="18"&gt;<br />　　&lt;/form-beans&gt;<br />　　<br />　　3&lt;global-exception&gt;元素<br />　　<br />　　&lt;global-exception&gt;用于配置异常处理，&lt;global-exception&gt;元素可以包含零个或者多个&lt;exception&gt;元素。<br />　　<br />　　&lt;exception&gt;元素用来设置java异常和异常处理类org.apache.structs.action,Exception　Hander之间的映射。<br />　　<br />　　4&lt;gloable-forwards&gt;元素<br />　　<br />　　&lt;global-forwards&gt;元素用来声明全局的转发关系，&lt;global-forwards&gt;有零个或多个&lt;forward&gt;元素组成。&lt;forward&gt;元素用于把一个逻辑映射到特定的URL<br />　　<br />　　属性　　　　　　描　述<br />　　<br />　　className　　和&lt;forward&gt;元素对应的配置类，默认为org.apache.structs.action.ActionForWard<br />　　<br />　　name　　　　 转发路径的逻辑名，此项时必须的<br />　　<br />　　path　　　　 指定或者重定向的URI。此项时必须的，必须以”/”开头<br />　　<br />　　redirect　　 此项是true，表示是执行重定向的****作，此项是false时，表示请求转发。<br />　　<br />　　&lt;global-forwards&gt;<br />　　&lt;forward name="forward1" path="/Action1.do"/&gt;<br />　　&lt;forward name="forward1" path="/Action2.do"/&gt;<br />　　&lt;/global-forwards&gt;<br />　　<br />　　如果jsp1.jsp把请求转发给Action1,可以使用以下代码：<br />　　<br />　　&lt;html:link forward=”forward1”&gt;<br />　　<br />　　或者&lt;logic:forward name=”forward1”&gt;<br />　　<br />　　如果Action1的execute（）方法把请求转发给JSP2.jsp，可以使用一下代码：<br />　　<br />　　return(mapping.findForward(“forward2”))<br />　　<br />　　5&lt;action-mapping&gt;元素<br />　　<br />　　&lt;action-mapping&gt;元素包含零个或者多个&lt;action&gt;元素。&lt;action&gt;元素描述了从特定的请求路径到相应的Action类的映射。<br />　　<br />　　6&lt;controller&gt;元素<br />　　<br />　　&lt;controller&gt;元素用于配置ActionServlet。<br />　　<br />　　7&lt; message-resources&gt;元素<br />　　<br />　　&lt;message-resources&gt;元素用于配置Resource Bundle，Resource Budle用于存放本地化消息文件。<br />　　<br />　　Structs标签<br />　　<br />　　HTML标签<br />　　<br />　　标签名　　　　　　　　描述<br />　　base　　　　　　　　 包装HTML的base元素<br />　　button　　　　　　　 包装HTML的 button类型的input元素<br />　　cancel　　　　　　　 包装HTML cancel 按钮<br />　　checkbox　　　　　　 包装HTML checkbox 类型的输入域<br />　　errors　　　　　　　 有条件地显示一些error消息，显示ActionErrors信息<br />　　file　　　　　　　　 包装HTML文件上传输入域<br />　　form　　　　　　　　 定义HTML form 元素<br />　　frame　　　　　　　　包装HTML frame 元素<br />　　hidden　　　　　　　 包装HTML hidden 输入域<br />　　html　　　　　　　　 包装 HTML中的 html 元素<br />　　image　　　　　　　　包装 "image"类型的输入域<br />　　img　　　　　　　　　包装HTML的 img 元素<br />　　javascript　　　　　 包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本<br />　　link　　　　　　　　 包装超链接<br />　　messages　　　　　　 有条件地显示一些提示信息，显示ActionMessages信息<br />　　multibox　　　　　　 包装多选输入框<br />　　option　　　　　　　 包装一个选择输入框<br />　　options　　　　　　　包装一批选择输入框<br />　　optionsCollection　　包装一批选择输入框集<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 并不困难，但是你的类必须符合一些要求：<br />　　<br />　　ActionForm 必须扩展自org.apache.struts.ActionForm。基类ActionForm 是不能实例化的。<br />　　<br />　　ActionForm 必须为每个应该从请求中收集的HTML控件定义一个公共属性。<br />　　<br />　　(Struts 1.0 要求每个属性都要mutator 和accessor 。Struts 1.1 则没有如此严格)<br />　　<br />　　ActionForm还可能要符合一些可选的要求:<br />　　<br />　　如果你要求ActionForm 在传递属性到Action之前校验它们，你就必须实现validate<br />　　<br />　　方法；<br />　　<br />　　如果想在组装前初始化属性，必须实现reset , 它在ActionForm 组装前被调用；<br />　　<br />　　动态ActionForm<br />　　<br />　　ActionForm 作为类型转换器<br />　　<br />　　ActionForm的一个强制点是应该使用String 和boolean属性。实际上，这意味着属性<br />　　<br />　　必须得从一种转换到另一种类型。大部分应用也需要一些属性，比如电话号码或者数量，以<br />　　<br />　　一种格式化的方式出现。核心Java 包提供一些工具来做这种事情，但是要清楚地将他们集<br />　　<br />　　成到应用中仍然是一个挑战。<br />　　<br />　　Struts 开发人员经常在ActionForm中包含helper方法，来进行类型转换。helper 方法<br />　　<br />　　可以有很多种实现方式，这我们在5.6种叙述。<br />　　<br />　　5.2.6 ActionForm 作为防火墙<br />　　<br />　　当请求提交时，ActionServlet 使用一个自动组装机制来从请求参数中设置请求的<br />　　<br />　　ActionForm属性。这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参数<br />　　<br />　　是可接受的。这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以接<br />　　<br />　　受的能力。ActionForm 一定不能包含看起来像是一个JavaBean 属性，但不能从HTTP 请<br />　　<br />　　求设置的属性方法。<br />　　<br />　　5.3.4 ActionForm 可以嵌套其它bean<br />　　<br />　　因为Struts 标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它<br />　　<br />　　bean。这是一个方便的方式，可以通过ActionForm来组装存在的bean。在JSP 页面, 你可<br />　　<br />　　以象这样引用一个嵌套的bean：<br />　　<br />　　&lt;html:text<br />　　propety="values.telephoneText"<br />　　size="14"<br />　　maxlength="14"/&gt;<br />　　<br />　　5.7.2 分发（Dispatch ）<br />　　<br />　　Struts 开发人员通常使用同一个Action处理相关的****作。一个通常做法来选择****作是在HTML表单中使用隐藏属性。BaseForm 的dispatch 属性也可用作这个目的：<br />　　public void setDispatch(String dispatch);<br />　　public String getDispatch();<br />　　<br />　　Struts 配置提供连个级别嵌套的ActionForward:<br />　　<br />　　Global （全局） ActionForward对整个应用中的所有Action 对象均有效；<br />　　<br />　　Local （局部） ActionForward 则在ActionMapping 元素中定义。仅对那些在这个<br />　　<br />　　ActionMapping中调用的Action对象有效。<br />　　<br />　　从Action 对象内部来看，forward 通常像这样来选择：<br />　　ActionForward forward = mapping.findForward("continue"); <img src ="http://www.blogjava.net/kobe09/aggbug/52749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:12 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ee的学习流程</title><link>http://www.blogjava.net/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.blogjava.net/kobe09/archive/2006/06/14/52748.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52748.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52748.html</trackback:ping><description><![CDATA[
		<p>Java发展到现在，按应用来分主要分为三大块：J2SE,J2ME和J2EE。这三块相互补充，应用范围不同。<br /><br />　　J2SE就是Java2的标准版，主要用于桌面应用软件的编程； <br />　　J2ME主要应用于嵌入是系统开发，如手机和PDA的编程； <br />　　J2EE是Java2的企业版，主要用于分布式的网络程序的开发，如电子商务网站和ERP系统。 <br /><br />    先学习j2se <br /><br />    要学习j2ee就要先学习j2se，刚开始学习j2se先建议不要使用IDE，然后渐渐的过渡到使用IDE开发，毕竟用它方便嘛。学习j2se推荐两本书，《java2核心技术一二卷》，《java编程思想》，《java模式》。其中《java编程思想》要研读，精读。这一段时间是基本功学习，时间会很长，也可能很短，这要看学习者自身水平而定。 <br /><br />    不要被IDE纠缠 <br /><br />    在学习java和j2ee过程中，你会遇到五花八门的IDE，不要被他们迷惑，学JAVA的时候，要学语言本身的东西，不要太在意IDE的附加功能，JAVA编程在不同IDE之间的转换是很容易的，过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder，eclipse和eclipse的加强版WSAD。用好其中一个就可以了，推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程序。 <br /><br />    选择和学习服务器使用配置 <br /><br />    当你有了j2se和IDE的经验时，可以开始j2ee的学习了，web服务器：tomcat，勿庸置疑，tomcat为学习web服务首选。而应用服务器目前主要有三个：jboss、weblogic、websphere。有很多项目开始采用jboss，并且有大量的公司开始做websphere或weblogic向jboss应用服务器的移植（节省成本），这里要说的是，学习tomcat和jboss我认为是首选，也是最容易上手的。学习服务器使用配置最好去询问有经验的人（有条件的话），因为他们或许一句话就能解决问题，你自己上网摸索可能要一两天（我就干过这种傻事），我们应该把主要时间放在学习原理和理论上，一项特定技术的使用永远代替不了一个人的知识和学问。 <br /><br />    学习web知识 <br /><br />    如果你是在做电子商务网站等时，你可能要充当几个角色，这是你还要学习： <br />    html，可能要用到dreamwave等IDE。 <br />    javascript，学会简单的数据校验，数据联动显示等等 <br /><br />    J2eeAPI学习 <br /><br />    学习j2eeAPI和学习服务器应该是一个迭代的过程。 <br /><br />    先学习jsp和servlet编程，这方面的书很多，我建立看oreilly公司的两本《jsp设计》和《java servlet编程》，oreilly出的书总是那本优秀，不得不佩服。 <br /><br />    学习jdbc数据库编程，j2ee项目大多都是MIS系统，访问数据库是核心。这本应属于j2se学习中，这里拿出来强调一下。 <br /><br />    学习jndi api，它和学习ejb可以结合起来。 <br /><br />    学习ejb api，推荐书《精通ejb》 <br /><br />    经过上面的这些的学习，大概可以对付一般的应用了。 <br /><br />    有人说跟着sun公司的《j2ee tutorial》一路学下来，当然也可以。 <br /><br /><br /><br />    学习ejb设计模式和看代码（最重要） <br /><br />    设计模式是练内功，其重要性可以这么说吧，如果你不会用设计模式的话，你将写出一堆使用了ejb的垃圾，又慢又是一堆bug，其结果不如不用ejb实现（ejb不等于j2ee） <br /><br />    无论学习什么语言，都应该看大量代码，你看的代码量不到一定数量，是学不好j2ee的 <br />目前有很多开源的工程可以作为教材： <br /><br />　　jive论坛 <br />　　petstore sun公司 <br />　　dune sun公司 <br />    等等，研读一个，并把它用到自己的工程中来。 <br /><br />    J2ee其他学习 <br /><br />    当你渐渐对j2ee了解到一定深度时，你要开始关注当前领域中的一些技术变化，J2ee是一块百家争鸣的领域，大家都在这里提出自己的解决方案，例如structs，hiberate，ofbiz等等，学习这些东西要你的项目和目标而定，预先补充一下未尝不可，但不用涉及太深，毕竟学习原理和理论是最最重要的事。 <br /><br />    目前常见j2eeAPI <br />　　JavaServer Pages(JSP)技术1.2 <br />　　Java Servlet技术2.3 <br />　　JDBC API 2.0 <br />　　Java XML处理API(JAXP)1.1 <br />　　Enterprise JavaBeans技术2.0 <br />　　Java消息服务(JMS)1.0 <br />　　Java命名目录接口(JNDI)1.2 <br />　　Java事务API(JTA) 1.0 <br />　　JavaMail API 1.2 <br />　　JavaBeans激活架构(JAF)1.0 <br />　　J2EE连接器体系结构(JCA)1.0 <br />　　Java认证和授权服务(JAAS)1.0 <br /><br />    学习上面的某些API要以你的项目而定，了解所有他们总之是有好处的 <br /><br />    上面印证了大家说的一句话，java语言本身不难学，但是技术太多，所以学java很费劲。回想一下，基本上每个初学者，在刚学习java的时候可能都会问别人这么一句话，你怎么知道的哪个方法(api)在哪个包里的？呵呵，无他，唯手熟尔。 <br /></p>
<img src ="http://www.blogjava.net/kobe09/aggbug/52748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:11 <a href="http://www.blogjava.net/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.blogjava.net/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.blogjava.net/kobe09/archive/2006/06/14/52747.html</guid><wfw:comment>http://www.blogjava.net/kobe09/comments/52747.html</wfw:comment><comments>http://www.blogjava.net/kobe09/archive/2006/06/14/52747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kobe09/comments/commentRss/52747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kobe09/services/trackbacks/52747.html</trackback:ping><description><![CDATA[Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。 <br /><br />　　下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包： <br /><br />　　hibernate2.jar: <br />　　Hibernate的库，没有什么可说的，必须使用的jar包 <br /><br />　　cglib-asm.jar: <br />　　CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包 <br /><br />　　dom4j.jar: <br />　　dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。 <br /><br />　　odmg.jar: <br />　　ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。 <br /><br />　　commons-collections.jar： <br />　　Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。 <br /><br />　　commons-beanutils.jar： <br />　　Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。 <br /><br />　　commons-lang.jar: <br />　　Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。 <br /><br />　　commons-logging.jar: <br />　　Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。<br /><br />　　后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。 <br /><br />　　使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。 <br /><br />　　ant.jar: <br />　　Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包 <br /><br />　　optional.jar： <br />　　Ant的一个辅助包。 <br /><br />　　c3p0.jar： <br />　　C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。 <br /><br />　　proxool.jar： <br />　　也是一个连接池，同上。 <br /><br />　　commons-pool.jar, commons-dbcp.jar: <br />　　DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。 <br /><br />　　实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。 <br /><br />　　connector.jar: <br />　　JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。 <br /><br />　　jaas.jar: <br />　　JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。 <br /><br />　　jcs.jar： <br />　　如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。 <br /><br />　　jdbc2_0-stdext.jar: <br />　　JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。 <br /><br />　　jta.jar： <br />　　JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。 <br /><br />　　junit.jar: <br />　　Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。 <br /><br />　　xalan.jar, xerces.jar, xml-apis.jar: <br />　　Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。<img src ="http://www.blogjava.net/kobe09/aggbug/52747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kobe09/" target="_blank">氧气中毒</a> 2006-06-14 15:11 <a href="http://www.blogjava.net/kobe09/archive/2006/06/14/52747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>