﻿<?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-RoyJohnson              </title><link>http://www.blogjava.net/royjohnson/</link><description>生命不息，奋斗不止！</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 12:20:43 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 12:20:43 GMT</pubDate><ttl>60</ttl><item><title>Struts详解</title><link>http://www.blogjava.net/royjohnson/archive/2007/06/17/124822.html</link><dc:creator>roy_johnson</dc:creator><author>roy_johnson</author><pubDate>Sun, 17 Jun 2007 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/royjohnson/archive/2007/06/17/124822.html</guid><wfw:comment>http://www.blogjava.net/royjohnson/comments/124822.html</wfw:comment><comments>http://www.blogjava.net/royjohnson/archive/2007/06/17/124822.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/royjohnson/comments/commentRss/124822.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/royjohnson/services/trackbacks/124822.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 12pt">&nbsp;Struts框架</span>详解<br>struts-config.xml&nbsp;&nbsp; &nbsp;Struts配置文件<br>ActionServlet&nbsp;&nbsp;控制器<br>Action Class&nbsp;&nbsp;包含事务逻辑<br>ActionForm&nbsp;&nbsp;显示模块数据<br>ActionMapping&nbsp;&nbsp;帮助控制器将请求映射到操作<br>ActionForward&nbsp;&nbsp;用来指示操作转移的对象<br>ActionError&nbsp;&nbsp;用来存储和回收错误<br>Struts标记库&nbsp;&nbsp;可以减轻开发显示层次的工作</p>
<p>struts框架的优势<br>1.良好的架构和设计<br>2.可重用，模块化，扩展性好<br>3.Open source</p>
<p>struts-config.xml</p>
<p>Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目，通过此配置文件即可迅速把握其脉络，这不管是对于前期的开发，还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。 </p>
<p>FormBean部分</p>
<p>&lt;struts-config&gt;<br>&nbsp; &lt;!--&nbsp; Form Bean Definitions --&gt;<br>&nbsp; &lt;form-beans&gt;<br>&nbsp;&nbsp;&nbsp; &lt;form-bean name=&#8220;testform" type="com.cjea.test.TestForm" /&gt;<br>&nbsp; &lt;/form-beans&gt;&nbsp; </p>
<p>全局转发部分</p>
<p>&lt;!-- Global Forward Definitions --&gt;<br>&nbsp; &lt;global-forwards&gt;<br>&nbsp;&nbsp;&nbsp; &lt;forward&nbsp;&nbsp; name="failure"&nbsp;&nbsp;&nbsp;&nbsp; path="bad.jsp"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;forward&nbsp;&nbsp; name="success"&nbsp;&nbsp;&nbsp;&nbsp; path="/good.jsp" /&gt;<br>&nbsp; &lt;/global-forwards&gt; </p>
<p>action部分</p>
<p>&lt;action-mappings&gt;<br>&nbsp;&nbsp; &lt;action path=&#8220;/test/test.jsp" type=&#8220;com.cjea.test.testAction" name="testform" scope="request"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name="success" path="/test/good.jsp" /&gt;<br>&nbsp;&nbsp; &lt;/action&gt;<br>&lt;action-mappings&gt;&nbsp; <br>&lt;/struts-config&gt;</p>
<p>&nbsp;ActionServlet</p>
<p>ActionServlet 是struts框架 MVC 实现的 controller 部分，它是这一框架的核心。<br>ActionServlet 创建并使用 Action、ActionForm 和 ActionForward。</p>
<p>ActionServlet的基本功能</p>
<p>截获用户的Http请求<br>把这个请求映射到相应的Action类。<br>创建一个ActionForm bean实例,将form请求放入formbean的实例中<br>调用Action实例的perform()方法<br>将ActioForm bean,Action Mapping对象,request和response对象传给Action的perform()方法<br>perform返回一个ActionForword对象，根据方法执行情况转到相应的jsp页面.</p>
<p>&nbsp;</p>
<p>Action Classes</p>
<p><br>Action 类是业务逻辑的一个包装。Action 类的用途是将 HttpServletRequest 转换为业务逻辑。</p>
<p>ActionForm</p>
<p>ActionForm 维护 Web 应用程序的会话状态。<br>ActionForm 是一个抽象类，必须为每个输入表单模型创建该类的子类。</p>
<p><br>ActionForm的使用</p>
<p>假定有一个由 HTML 表单设置的 TestActionForm。Struts 框架将执行以下操作：<br>检查 TestActionForm是否存在；如果不存在，它将创建该类的一个实例。<br>Struts 将使用 HttpServletRequest 中相应的域设置 TestActionForm的状态。<br>Struts 框架在将 TestActionForm传递给TestAction 之前将更新它的状态。 <br>struts-config.xml 文件控制 HTML 表单请求与 ActionForm 之间的映射关系。<br>可将多个请求映射到 TestActionForm 。</p>
<p>Struts标记库<br>Struts框架包括自定义标签库，它可以用 在很多方面。尽管这些库并不要求用框 架，但使用它们会有助于程序的开发。</p>
<p>Struts标记库<br>struts-bean taglib：包含在访问bean和bean属性时使用的tag，也包含一些消息显示的tag。<br>struts-html taglib：包含用来生成动态HTML用户界面和窗体的tag。<br>struts-logic taglib ：包含的tag用来管理根据条件生成输出文本，和其它一些用来控制的信息。<br>struts-template taglib包含的tag用来定义模板机制。</p>
<p>Bean Taglib<br>用于定义新bean、访问bean及其属性的标记<br>在struts-bean.tld中定义了它的标记库描述器<br>Bean Taglib主要功能<br>创建和复制bean的标记<br>脚本变量定义标记<br>bean翻译标记<br>消息国际化标记<br>Bean复制标记 (&lt;bean:define&gt;)<br>可定义新bean，可复制现有bean，还可从现有bean复制属性。<br>定义新字符串常数<br>将现有的bean复制到新定义的bean对象<br>复制现有bean的属性来创建新的bean<br>&lt;bean:define&gt;标记属性：<br>Id&nbsp;新定义的bean脚本变量名称，必须设置<br>Type&nbsp;定义引入脚本变量的类<br>Value&nbsp;为id属性定义的脚本变量分配一个新的对象<br>&lt;bean:define&gt;标记属性：<br>Name&nbsp;目标bean的名称。若value属性没有设置，这个属性就必须设置<br>property&nbsp;Name属性定义的bean的属性名称，用来定义新的bean<br>Scope&nbsp;源bean的作用域。若没有设置，搜索范围是从页作用域到应用程序作用域<br>toScope&nbsp;目标bean的作用域。若没有设置，默认值是页作用域<br>举例<br>定义一个bean:<br>&lt;bean:define id="test" value="this is a test"/&gt;<br>源bean在页作用域中被拷贝到请求作用域中的另一个bean:<br>&lt;bean:define id="targetBean" name="sourceBean"<br>scope="page" toScope="request"/&gt;<br>脚本变量的标记<br>从多种资源中定义和生成脚本变量，这些资源包括cookie,请求参数，HTTP标头等等。<br>脚本变量的标记属性：<br>Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 脚本变量和要定义的页作用域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;属性的名称<br>Name&nbsp;&nbsp;&nbsp; cookie/标头/参数的名称<br>Value&nbsp;&nbsp;&nbsp; 如果没有匹配的cookie或&nbsp;&nbsp;&nbsp;&nbsp;数值，就返回这个属性指&nbsp;&nbsp;&nbsp;&nbsp;定的默认值</p>
<p>脚本变量的标记属性：<br>multiple&nbsp;如果这个属性设置了任意一个数值，所有匹配的cookie都会被积累并存储到一个Cookie[](一个数组)类型的bean里&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若无设置，指定cookie的第一个值将作为Cookie类型的值<br>举例<br>&lt;bean:cookie id="myCookie" name="userName"/&gt;<br>脚本变量名称是myCookie，用来创建这个属性的cookie的名称是userName。<br>&lt;bean:header id="myHeader" name="Accept-Language"/&gt;<br>脚本变量名称是myHeader,请求标头的名称是Accept-Language.</p>
<p>举例<br>&lt;bean:parameter id="myParameter" name="myParameter"&gt;<br>脚本变量名称是myPatameter,它保存的请求参数的名称也是myParameter<br>逻辑标记<br>Struts逻辑标签库包含的标记能够有条件地产生输出文本<br>在对象集合中循环从而重复地产生输出文本，以及应用程序流程控制<br>它也提供了一组在JSP页中处理流程控制的标记<br>逻辑标记封装在文件名为struts-logic.tld的标记包中<br>逻辑标记库的功能<br>条件逻辑<br>重复<br>转发/重定向响应<br>条件逻辑标记<br>第一类可以比较下列实体与一个常数的大小<br>第二类在计算标记体之前判断特定的项目是否存在<br>第三类根据模板匹配的结果检查标记体的内容<br>第一类条件逻辑标记<br>&lt;equal&gt;&nbsp;&nbsp;如果常数与被定义的实体相等，返回true<br>&lt;notEqual&gt;&nbsp;如果常数与被定义的实体不相等，返回true<br>&lt;greaterEqual&gt;&nbsp;如果常数大于等于被定义的实体，返回true<br>第一类条件逻辑标记<br>&lt;lessEqual&gt;&nbsp;如果常数小于等于被定义的实体，返回true<br>&lt;lessThan&gt;&nbsp;如果常数小于被定义的实体，返回true<br>&lt;greaterThan&gt;&nbsp;如果常数大于被定义的实体，返回true<br>举例<br>判断名为"name"的请求参数的值是否是"SomeName"。<br>&lt;logic:equal parameter="name" value="SomeName"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The entered name is SomeName<br>&lt;/logic:equal&gt;<br>举例<br>判断在页的作用域中是否有一个名为"bean"的bean，它有一个prop属性，这个属性的值是否大于7。<br>如果这个属性能够转化为数值，就进行数值比较，否则就进行字符串比较。<br>&lt;logic:greaterThan name="bean" property="prop" scope="page" value="7"&gt;<br>The value of bean.Prop is greater than 7<br>&lt;/logic:greaterThan&gt;<br>第二类条件逻辑标记<br>&lt;logic:present&gt;<br>&lt;logic:notPresent&gt;<br>第三类条件逻辑标记<br>&lt;logic:match&gt;<br>&lt;logic:notMatch&gt;<br>重复标记&lt;logic:iterate&gt;<br>它能够根据特定集合中元素的数目对标记体的内容进行重复的检查<br>集合的类型<br>java.util.Iterator<br>java.util.Collection<br>java.util.Map<br>java.util.List<br>数组<br>举例<br>Strlst是一个包含字符串的List，现在要将他内部的字符串全都显示在浏览器里<br>&lt;logic:iterate id="element" name="strlst"&nbsp; indexId="index"&gt;<br>&lt;%＝(String)element)%&gt;<br>&lt;/logic:iterate&gt;<br>转发标记<br>&lt;logic:forward&gt;标记能够将响应转发给重定向到特定的全局ActionForward上<br>ActionForward的类型决定了是使用PageContext转发响应，还是使用sendRedirect将响应进行重定向<br>此标记只有一个"name"属性，用来指定全局ActionForward的名称，例如：<br>&lt;logic:forward name="myGlobalForward"/&gt;<br>重定向标记<br>&lt;logic:redirect&gt;标记是一个能够执行HTTP重定向的强大工具。<br>根据指定的不同属性，它能够通过不同的方式实现重定向。<br>它还允许开发人员指定重定向URL的查询参数。<br>HTML标记<br>Struts HTML标记可以大致地分为以下几个功能：<br>显示表单元素和输入控件<br>显示错误信息<br>显示其他HTML元素<br>模板标记<br>Struts模板标记可以大致地分为以下几个功能：<br>插入标记&lt;template:insert&gt;<br>放置标记&lt;template:put&gt;<br>获得标记&lt;template:get&gt;</p>
<img src ="http://www.blogjava.net/royjohnson/aggbug/124822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/royjohnson/" target="_blank">roy_johnson</a> 2007-06-17 18:07 <a href="http://www.blogjava.net/royjohnson/archive/2007/06/17/124822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 初始化处理流程</title><link>http://www.blogjava.net/royjohnson/archive/2007/06/16/124673.html</link><dc:creator>roy_johnson</dc:creator><author>roy_johnson</author><pubDate>Sat, 16 Jun 2007 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/royjohnson/archive/2007/06/16/124673.html</guid><wfw:comment>http://www.blogjava.net/royjohnson/comments/124673.html</wfw:comment><comments>http://www.blogjava.net/royjohnson/archive/2007/06/16/124673.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/royjohnson/comments/commentRss/124673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/royjohnson/services/trackbacks/124673.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Struts 初始化处理流程 <br>&nbsp;&nbsp; 根据在web.xml中配置的初始化参数，Servlet容器将决定在在容器的第一次启动，或第一次客户请求ActionServlet 的时机加载ActionServlet ，不管哪种方式加载，和其它Servlet一样，ActionServlet 的init( )方法将被调用，开始初始化过程。让我们来看看在初始化过程中将发生些什么，理解了这些，对于我们debug和扩展自己的应用更加得心应手。 <br>&nbsp;&nbsp; 1&nbsp;&nbsp; 初始化框架的内部消息绑定，这些消息用来输出提示，警告，和错误信息到日志文件中。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.apache.struts.action.ActionResources用来获取内部消息； <br>&nbsp;&nbsp; 2&nbsp;&nbsp; 加载web.xml中定义的不同参数，用以控制ActionServlet 的不同行为，这些参数包括&nbsp;config, debug, detail, and convertNull ； <br>&nbsp;&nbsp; 3&nbsp;&nbsp; 加载并初始化web.xml中定义的servlet 名称和servlet映射信息。通过初始化，框架的各种DTD被注册，DTD用来在下一步校验配置文件的有效性； <br>&nbsp;&nbsp; 4、为默认应用加载并初始化Struts配置文件，配置文件即初始化参数config指定的文件。默认配置文件被解析，&nbsp;产生一个ApplicationConfig对象存于ServletContext 中。可以通过关键字&nbsp;org.apache.struts.action.APPLICATION 从ServletContext 中获取ApplicationConfig； <br>&nbsp;&nbsp; 5&nbsp;&nbsp; Struts配置文件中指定的每一个消息资源都被加载，初始化，并存在ServletContext 的合适区域(基于每个message-resources元素的key 属性)，如果key 属性没有设置，则为org.apache.struts.action.MESSAGE； <br>&nbsp;&nbsp; 6&nbsp;&nbsp; Struts配置文件中声明的每一个数据源被加载并且初始化，如果没有配置数据源，这一步跳过； <br>&nbsp;&nbsp; 7&nbsp;&nbsp; 加载并初始化Struts配置文件中指定的插件。每一个插件的init()方法被调用； <br>&nbsp; 8&nbsp;&nbsp; 当默认应用加载完成，init()方法判断是否有应用模块需要加载，如果有，重复4—7完成应用模块的加载。 
<img src ="http://www.blogjava.net/royjohnson/aggbug/124673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/royjohnson/" target="_blank">roy_johnson</a> 2007-06-16 17:56 <a href="http://www.blogjava.net/royjohnson/archive/2007/06/16/124673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>论J2EE程序员的武功修为(转) </title><link>http://www.blogjava.net/royjohnson/archive/2007/06/16/124660.html</link><dc:creator>roy_johnson</dc:creator><author>roy_johnson</author><pubDate>Sat, 16 Jun 2007 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/royjohnson/archive/2007/06/16/124660.html</guid><wfw:comment>http://www.blogjava.net/royjohnson/comments/124660.html</wfw:comment><comments>http://www.blogjava.net/royjohnson/archive/2007/06/16/124660.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/royjohnson/comments/commentRss/124660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/royjohnson/services/trackbacks/124660.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;论J2EE程序员的武功修为(转) <br>　EasyJF开源团队(<a href="http://www.easyjf.com/">www.easyjf.com</a>) 大峡</p>
<p>　　经常会跟一些朋友讨论怎么样才能学好Java,学到什么程度才算撑握了Java的问题。其中有一个J2EE程序员层次及武功修为的问题，有点意思。这里就把讨论的内容大致整理一下发出来，大家继续讨论。</p>
<p>　　纵观国内的软件行业，靠Java吃饭的程序员还真不是少，而且Java程序员是有很大优越感的，毕竟对于很多用b/s搞开发的业内朋友来说，Java技术意味着难度大、门槛高，因此相对来说Java程序员比其它的程序员(如php、.net)收入高就理所当然。然而J2EE所涉及到的范畴是很广的，不能一个Java程序员就概括了事，而应该具有层次及水平之分，很多时候经常需要进行分类或评级，有时他评、有时自评。</p>
<p>　　谈到国内J2EE领域的程序员层次水平，当前流行的称谓及评级不外乎就下面几种：<br>　　第一种是精通掌握记事本、Dreamweaver等工具来写JSP+JavaBean数据库应用的是J2EE程序员；<br>　　第二种是用JBuilder、Eclipse等专用Java开发工具写着一堆一堆过程式Java Bean，而且还能精通Struts+Spring+Hibernate等应用框架的高级J2EE程序员；<br>　　第三种是用Together建模，然后生成一堆Java接口或代码，开口闭口都是设计模式的资深Java程序同及高级系统分析、构架师；<br>　　最后还有一种是整天在BlogJava或JavaEye上谈经论道的大师们，这些大师技术水平难以触摸，武功门派也各具特色，不好归类，有时不好称为程序员（因为有的时候他们甚至不写或者写不出程序），但又做着与J2EE程序员密切相关的事情，我们暂且就归为&#8220;牛牛&#8221;或&#8220;大师&#8221;。</p>
<p>　　称谓毕竟只是称谓，带有点主观或者功利色彩，有时很难鉴定一个人应该属于什么，因此，我们再从纯技术的角度，也即武功修为的角度，作了一个简单的分析及归类，把2EE领域程序员大致分成以下几个层次，可以作为大家自评的一个参考标准：</p>
<p>　　第一个层次：精通掌握Java语法、能调试基本的程序错误，精通掌握JSP+Java Bean写一些N年前ASP、PHP翻版的Java Web应用程序（如论坛、网站新闻发布系统、OA、网上商城等），精通JDBC使用、精通SQL语句、精通XML等。</p>
<p>　　第二个层次：掌握设计模式原理及应用，掌握基于OO的分析及设计方法,并能精通熟练使用几种Java专业设计及开发工具，精通掌握流行的J2EE框架如Hibernate、EJB、Webwork、Spring的原理及应用，精通J2EE中一两个组成部分(如Servlet、EJB等)的工作原理及细节。</p>
<p>　　第三个层次：少林的高僧有两种，禅僧及武僧。J2EE程序员的第三个层次也同样有禅、武两个分支，这里我们重点分析一下：</p>
<p>　　第一个分支属于走的禅僧线路。在练完第二个层次中的各种武功基础上，结合实际项目中的千奇百怪的用户需求，游刃有余的选择适合的技术方案为客户解决问题，并形成自己的一套解决方案。达到这一个层次的J2EE程序员已经不在乎使用任何工具、任何框架了，而是根据不同的对手，使用不同的武器或招式来应对。好比小李飞刀一样，只有达到了&#8220;手中无刀、心中有刀&#8221;的境界，才能达到&#8220;出手一刀，例不虚发&#8221;的效果。这一层次的武功属于一个熟练度问题，刀练得多了、遇到的对手多了，再加上前面的武功修为，就算做不到例不虚发，也可达到十发九中。</p>
<p>　　第二个分支属于走的武僧线路，在撑握熟悉第一二个层次中涉及到的内容后，进一步专研并撑握J2EE底层开发，J2EE规范制订、规范实现、Java虚拟机的工作原理、各种常见的J2EE服务器内核工作机制、内存管理、进程机制、源代码等。因为涉及的很多东西都比较抽象，代码也很多，练这一层的武功需要有很好的资质及耐性、并具还得有一定的环境及条件。好比神雕大侠杨过拿起&#8220;玄铁剑&#8221;，并练成&#8220;暗然销魂掌&#8221;的成长过程，需要前面的武功修为作基础，更需那只威力神武神雕的帮助指点及他处处为民、惩奸除恶的侠之心态。<br>　　<br>　　胡侃了这么多，现在来根据自己情况测算一下自己的份量，结果如下：<br>　　第一层　练到8成；<br>　　第二层　练到5成；<br>　　第三层　准备走禅僧线路，当前算是练到1成；<br>　　<br>　　唉，后面的武功提升越来越难，真不知道要到何年何月才能达到10成啊。你的武功练到哪一个层次了，不防亮出来大家切磋切磋。嘿嘿，要是有一天，咱们中国的Java程序员人手一把&#8220;玄铁剑&#8221;、人人会使&#8220;暗然销魂掌&#8221;，那还了得!汗...，写着写着居然做起白日梦了，不好意思，就此打住。<br>　　<br>　　手中鸡蛋先别扔，还要打个广告：本人刚开始涉足Java开源，目前在EasyJF开源团队中负责EasyJWeb(官网<a href="http://www.easyjf.com/">www.easyjf.com</a>)项目，欢迎大家前来指导。 </p>
<p>作者Blog：<a href="http://blog.csdn.net/psyl/">http://blog.csdn.net/psyl/</a></p>
<img src ="http://www.blogjava.net/royjohnson/aggbug/124660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/royjohnson/" target="_blank">roy_johnson</a> 2007-06-16 16:37 <a href="http://www.blogjava.net/royjohnson/archive/2007/06/16/124660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新手如何开始学习JSP</title><link>http://www.blogjava.net/royjohnson/archive/2007/06/16/123746.html</link><dc:creator>roy_johnson</dc:creator><author>roy_johnson</author><pubDate>Sat, 16 Jun 2007 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/royjohnson/archive/2007/06/16/123746.html</guid><wfw:comment>http://www.blogjava.net/royjohnson/comments/123746.html</wfw:comment><comments>http://www.blogjava.net/royjohnson/archive/2007/06/16/123746.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/royjohnson/comments/commentRss/123746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/royjohnson/services/trackbacks/123746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多新手都不知道如何开始学习JSP，本人就个人学习的一些经历在这里简单得谈一下。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，你得对WEB应用开发感兴趣，因为兴趣是最好的老师，更是你学习前进的动力，如果只是抱这学学看的态度，本人建议不要开始学。那样既浪费了时间又浪费了精力。有了兴趣，一切就好说了，学得多快那就看你个人的能力了。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从HTML开始下手，一星期即可搞定HTML。因为开发WEB应用要求你能看懂网页代码，然后是Java语言基础,Java语言学习的时间可能要长些。等前面这两项熟悉了，就要开始学习JavaScript和CSS，当然作为后台程序员后面这两项了解即可。<br>&nbsp;&nbsp;&nbsp;&nbsp; 再接下来就要学习一下JDBC的技术了。数据库建议先学习Mysql，然后再学习Mssql,Oracle，最后还要熟悉WEB服务器，初学者建议学习Tomcat,等这些都熟悉了。开始尝试着开发几个系统，比如信息管理系统，聊天室，论坛等。<br>&nbsp;&nbsp;&nbsp;&nbsp; 再往后就要学习Struts,Hibernate,Spring等高级技术了。 <br>&nbsp;&nbsp;&nbsp;&nbsp; 今后我会逐步介绍以上技术,最后还会教大家开发一个基于Struts+Hibernate+Spring的实例。大家希望看到那方面的知识或有何好的建议。可以给我留言,或发表在评论里。 
<img src ="http://www.blogjava.net/royjohnson/aggbug/123746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/royjohnson/" target="_blank">roy_johnson</a> 2007-06-16 11:48 <a href="http://www.blogjava.net/royjohnson/archive/2007/06/16/123746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>