??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码国产精品麻豆天美 ,亚洲精品人成电影网,亚洲码和欧洲码一码二码三码http://m.tkk7.com/javainthinking/XL的个性空间和java学习(fn)之旅zh-cnTue, 13 May 2025 05:12:07 GMTTue, 13 May 2025 05:12:07 GMT60http://m.tkk7.com/javainthinking/archive/2005/08/12/9978.htmlXL的个性空间和java学习(fn)之旅XL的个性空间和java学习(fn)之旅Fri, 12 Aug 2005 09:30:00 GMThttp://m.tkk7.com/javainthinking/archive/2005/08/12/9978.htmlhttp://m.tkk7.com/javainthinking/comments/9978.htmlhttp://m.tkk7.com/javainthinking/archive/2005/08/12/9978.html#Feedback0http://m.tkk7.com/javainthinking/comments/commentRss/9978.htmlhttp://m.tkk7.com/javainthinking/services/trackbacks/9978.htmlpackage park.jsp.reportfill;

import javax.servlet.http.HttpServletRequest;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;
import park.jsp.main.ConnectDB;
import park.jsp.common.TableNewId;
import javax.servlet.http.HttpSession;
import java.util.Date;
import park.jsp.common.DateHandle;

/**
 * <p>Title: </p>
 * <p>Description:修改和存储登记卡相关信息 </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author 熊炼
 * @version 1.0
 */

public class Register_Refer
{
    /**
     * 此程序需要在scope中额外获取的参数有:(x)type(对象cd)、message(操作cd)、f_emp_name(用户?
     * 特别:1.操作cd为modify,需要旧的t_bas_*表中所有可更改参数   2.对象cd为动植物,则需要f_k,f_s,f_classno,f_py
     * @param request
     * @return String(操作信息字段)
     */
    public static String main(HttpServletRequest request,HttpSession session)
    {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try
        {
            //q接数据?BR>            conn=ConnectDB.connect();
            stmt=conn.createStatement();

//            String f_name, f_k_classname,f_s_classname,f_s_ldm,f_j_classname,f_xx,f_cd,f_layer,
//            f_ldm,f_bhc,f_fzcs,f_szxz ,f_ms,f_yt,f_area,f_yy,v_message,v_type,v_tablename;
            String f_name, f_k,f_s,f_classno,f_xx,f_cd,f_layer,f_py,
            f_ldm,f_bhc,f_fzcs,f_szxz ,f_ms,f_yt,f_area,f_yy,v_message,v_type,v_tablename;
            v_message = request.getParameter("message"); //判断消息字段,modify修改,create创徏,delete删除
            v_type=(String)request.getAttribute("type");//判断cd(plant植物,animal是动?..)

            //植物不同字段
            f_ms=request.getParameter("t_ms");
            f_yt=request.getParameter("t_yt");
            f_area=request.getParameter("t_area");
            f_yy=request.getParameter("t_yy");

            //执行数据库操?BR>            String rrSql="";
            int v_flag=0;//v_flag为数据操作是否成功的标志,1为成?0为失?BR>            StringBuffer sb=null;
            //判断对象cd
            if("animal".equals(v_type))
            {
              //获取t_bas_animal表中的所有字D?除f_id)
              //获得不能更改的字D?BR>              f_name=request.getParameter("t_name");
              f_k=(String)request.getAttribute("f_k");
              f_s=(String)request.getAttribute("f_s");
              f_classno=(String) request.getAttribute("f_j");
              f_py=(String)request.getAttribute("f_py");
              f_ldm = request.getParameter("t_ldm");
              f_xx = request.getParameter("t_xx");
              f_cd = request.getParameter("t_cd");
              f_layer = request.getParameter("t_layer");

              //从form中获取可以更改的字段,为字D|内容
              f_bhc = request.getParameter("t_bch");
              f_fzcs = request.getParameter("t_fzcs");
              f_szxz = request.getParameter("t_szxz");
              float animal_f_id=0;

              //判断操作cd
              if("create".equals(v_message))
              {
                //获取t_rpt_modify报表操作表中的相兛_D?BR>                String f_rpt_no,f_rpt_pid,f_emp_name,f_type,f_new_value,f_ref_date;
                //获取表中f_pid字段
                float rpt_f_id=0;
                try
                {
                    rpt_f_id = TableNewId.getTableNewId(stmt,1,"t_rpt_modi",
                            "f_pid");
                    if(rpt_f_id==0)
                    {
                       return "<script language=javascript>window.alert('pȝ错误,创徏p|!');window.close();</script>";
                    }
                }
                catch(SQLException ex)
                {
                    ex.printStackTrace();
                }
                //其余相关字段
                f_emp_name=(String) session.getAttribute("f_emp_name");
                f_type="0";
                //以逗号分割q接所有属性?BR>                f_new_value=sb.append(f_name+","+f_k+","+f_s+","+f_classno+","+f_xx+","+f_cd+","+f_layer+","+f_py+","+f_ldm+","+f_bhc+","+f_fzcs+","+f_szxz).toString();
                f_ref_date=new DateHandle().getDate();
                //*************************************q有一些字D|获取***************
                rrSql="";//插入t_rpt_modi表中的sql语句
                v_flag=stmt.executeUpdate(rrSql);
              }
              else if("modify".equals(v_message))
              {
                //获取t_bas_animal中的f_id
                animal_f_id=Integer.parseInt((String)request.getAttribute("animal_f_id"));
                //获取t_rpt_modify报表操作表中的相兛_D?BR>                String f_rpt_no,f_rpt_pid,f_emp_name,f_type,f_old_value,f_new_value,f_ref_date,f_old_bhc,f_old_fzcs,f_old_szxz;
                float rpt_f_id=0;
                try
                {
                  rpt_f_id = park.jsp.common.TableNewId.getTableNewId(stmt, 1, "t_rpt_modi",
                                                      "f_pid");
                  if (rpt_f_id == 0) {
                    return "<script language=javascript>window.alert('pȝ错误,创徏p|!');window.close();</script>";
                  }
                }
                catch (SQLException ex) {
                  ex.printStackTrace();
                }
                f_emp_name=(String) session.getAttribute("f_emp_name");
                f_type="1";
                //以逗号分割q接所有属性?BR>                f_new_value=sb.append(animal_f_id+","+f_name+","+f_k+","+f_s+","+f_classno+","+f_xx+","+f_cd+","+f_layer+","+f_py+","+f_ldm+","+f_bhc+","+f_fzcs+","+f_szxz).toString();
                f_ref_date=new DateHandle().getDate();
                //获取旧动物对应的t_bas_animal表中对应的所有?q以逗号分割q接,作ؓ(f)f_old_value字段
                f_old_bhc=(String) request.getAttribute("f_bhc");
                f_old_fzcs=(String)request.getAttribute("f_fzcs");
                f_old_szxz=(String) request.getAttribute("f_szxz");
                f_old_value=sb.append(animal_f_id+","+f_name+","+f_k+","+f_s+","+f_classno+","+f_xx+","+f_cd+","+f_layer+","+f_py+","+f_ldm+","+f_old_bhc+","+f_old_fzcs+","+f_old_szxz).toString();
                //*************************************q有一些字D|获取***************
                rrSql = ""; //插入t_rpt_modi表中的sql语句
                v_flag = stmt.executeUpdate(rrSql);
              }
            }
            else if("plant".equals(v_type))
            {

            }

            v_flag=stmt.executeUpdate(rrSql);
             conn.commit();
             if(v_flag==1)
             {
                 return "<script language=javascript>window.alert('保存操作成功!');window.close();</script>";
             }
             else
             {
                 return
                         "<script language=javascript>window.alert('保存操作改失?');window.close();</script>";
             }
         }
         catch(SQLException ex)
         {
             try
             {
                 conn.rollback();
             }
             catch(SQLException ex1)
             {}
              return "<script language=javascript>window.alert('pȝ错误Q不能修?');</script>";
         }
         finally
         {
             try
             {
                 if(rs != null)
                 {
                     rs.close();
                     rs = null;
                 }
             }
             catch(Exception ignore)
             {}
             try
             {
                 if(stmt != null)
                 {
                     stmt.close();
                     stmt = null;
                 }
             }
             catch(Exception ignore)
             {}
             try
             {
                 if(conn != null)
                 {
                     conn.rollback();
                     conn.close();
                     conn = null;
                 }
             }
             catch(Exception ignore)
             {}
         }

        }
    }



XL的个性空间和java学习(fn)之旅 2005-08-12 17:30 发表评论
]]>
<l典>初学者如何开发出一个高质量的J2EEpȝ http://m.tkk7.com/javainthinking/archive/2005/08/02/9044.htmlXL的个性空间和java学习(fn)之旅XL的个性空间和java学习(fn)之旅Tue, 02 Aug 2005 09:07:00 GMThttp://m.tkk7.com/javainthinking/archive/2005/08/02/9044.htmlhttp://m.tkk7.com/javainthinking/comments/9044.htmlhttp://m.tkk7.com/javainthinking/archive/2005/08/02/9044.html#Feedback1http://m.tkk7.com/javainthinking/comments/commentRss/9044.htmlhttp://m.tkk7.com/javainthinking/services/trackbacks/9044.html
  首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一U语aQ已l代表与微Y不同的另外一个巨大阵营,所以Java有时是指一UY件系l的派Q当然目前主要是.NET和Java两大L体系?BR>
  J2EE可以说指Java在数据库信息pȝ上实玎ͼ数据库信息系l从早期的dBase、到Delphi/VB{C/Sl构Q发展到B/SQBrowser览?Server服务器)(j)l构Q而J2EE主要是指B/Sl构的实现?BR>
  J2EE又是一U框架和标准Q框架类似API、库的概念,但是要超出它们。如果需要详l了(jin)解框Ӟ可先从设计模式开始学?fn)?BR>
  J2EE是一个虚的大的概念,J2EE标准主要有三U子技术标准:(x)WEB技术、EJB技术和JMSQ谈到J2EE应该说最l要落实到这三个子概念上?BR>
  q三U技术的每个技术在应用旉涉及(qing)两个部分Q容器部分和应用部分QW(xu)eb容器也是指Jsp/Servlet容器Q你如果要开发一个Web应用Q无论是~译或运行,都必要有Jsp/Servlet库或API支持Q除?jin)JDK/J2SE以外Q?BR>
  Web技术中除了(jin)Jsp/Servlet技术外Q还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简UCؓ(f)Jsp/Servlet+JavaBeanspȝ?BR>
  谈到JavaBeans技术,涉?qing)到lg构g技术(componentQ,q是Java的核?j)基部分Q很多Y件设计概念(设计模式Q都是通过JavaBeans实现的?BR>
  JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/ServletQ调用,那么JavaBeansp行在J2EE的Web容器中;如果它被EJB调用Q它?yu)p行在EJB容器中?BR>
  EJBQ企业JavaBeansQ是普通JavaBeans的一U提升和规范Q因Z业信息系l开发中需要一个可伸羃的性能和事务、安全机Ӟq样能保证企业系l^滑发展,而不是发展到一U规模重新更换一套Y件系l?BR>
  x(chng)QJavaBeanslg发展到EJB后,q不是说以前的UJavaBeans形式消׃(jin)Q这p然Ş成了(jin)两种JavaBeans技术:(x) EJB 和POJOQPOJO完全不同于EJB概念Q指的是普通JavaBeansQ而且q个JavaBeans不依附某U框Ӟ或者干脆可以说Q这?JavaBeans是你个应用程序单独开发创建的?BR>
  J2EE应用pȝ开发工h很多Q如JBuilder、Eclipse{,q些 IDE首先是Java开发工P也就是说Q它们首要基本功能是可以开发出JavaBeans或Java classQ但是如果要开发出J2EEpȝQ就要落实到要么是Web技术或EJB技术,那么有可能要一些专门模块功?如eclipse需?lomboz插g)Q最重要的是Q因为J2EEpȝ区分为容器和应用两个部分Q所以,在Q何开发工具中开发J2EE都需要指定J2EE容器?BR>
  J2EE容器分ؓ(f)WEB容器和EJB容器QTomcat/Resin是Web容器QJBoss是EJB容器+Web容器{,其中Web容器直接使用 Tomcat实现的。所以你开发的Web应用E序可以在上面两U容器运行,而你开发的Web+EJB应用则只可以在JBoss服务器上q行Q商业?Websphere/Weblogic{和JBoss属于同一U性质?BR>
  J2EE容器也称为J2EE服务器,大部分时它们概念是一致的?BR>
  如果你的J2EE应用pȝ的数据库q接是通过JNDI获得Q也是说是从容器中获得Q那么你的J2EE应用pȝ基本与数据库无关Q如果你在你?J2EE 应用pȝ耦合?jin)数据库JDBC驱动的配|,那么你的J2EE应用pȝ有数据库概念色彩,作ؓ(f)一个成熟需要推q的J2EE应用pȝQ不推荐和具体数据库耦合Q当然这其中如何保证J2EE应用pȝq行性能又是体现你的设计水^?jin)?BR>
  衡量J2EE应用pȝ设计开发水q高?sh)的标准是Q解耦性;你的应用pȝ各个功能是否能够dqQ是否不怺依赖Q也只有q样Q才能体现可l护性、可拓展性的软g设计目标?BR>
  Z(jin)辑ֈq个目的Q诞生各U框架概念,J2EE框架标准一个系l划分ؓ(f)WEB和EJB主要部分Q当然我们有时不是以q个具体技术区分,而是从设计上抽象现层、服务层和持久层Q这三个层次从一个高度将J2EE分离开来,实现解耦目的?BR>
  因此Q我们实际编E中Q也要将自己的功能向q三个层ơ上靠,做到大方向清楚,泾渭分明Q但是没有技术上U束限制要做到这Ҏ(gu)很不Ҏ(gu)的,因此我们q是必须借助J2EE具体技术来实现Q这Ӟ你可以用EJB规范实现服务层和持久层,W(xu)eb技术实现表现层Q?BR>
  EJBZ么能服务层从Jsp/Servlet手中分离出来Q因为它对JavaBeans~码有强制的U束Q现在有一U对JavaBeansq束,使用Ioc模式实现的(当然EJB 3.0也采取这U方式)(j)Q在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeansU束QŞ成一个服务层Q这也是是Jiveq样开源论坛设计原理之一?BR>
  由此Q将服务层从表现层中分离出来目前有两U可选架构选择Q管理普通JavaBeansQPOJOQ框?如Spring?JdonFramework)以及(qing)理EJB的EJB框架Q因为EJB不只是框Ӟq是标准Q而标准可以扩展发展,所以,q两U区别将来是可能模糊Q被U_同一个标准了(jin)。 但是Q个为:(x)标准制定是ؓ(f)某个目的服务的,总要牺牲一些换取另外一些,所以,q两U架构会(x)长时间ƈ存?BR>
  q两U架构分歧也曄诞生一个新名词Q完全POJO的系l也UCؓ(f)轻量U系l?lightweight)Q其实这个名词本w就没有一个严格定义,更多是一个吸引h的招牌,轻量是指Ҏ(gu)学习(fn)Ҏ(gu)使用吗?按照q个定义Q其实轻量Spring{系lƈ不容易学?fn);而且EJB 3.0Q依然叫EJBQ以后的pȝ是否可称量?jin)呢Q?BR>
  前面谈了(jin)服务层框Ӟ使用服务层框架可以将JavaBeans?Jsp/Servlet中分d来,而用表现层框架则可以将Jsp中剩余的JavaBeans完全分离Q这部分JavaBeans主要负责昄相关Q一般是通过标签库(taglibQ实玎ͼ不同框架有不同自q标签库,Struts是应用比较广泛的一U表现层框架?BR>
  q样Q表现层和服务层的分L通过两种框架辑ֈ目的Q剩余的是持久层框架了(jin)Q通过持久层的框架数据库存储从服务层中分d来是其目的,持久层框架有两种方向Q直接自q写JDBC{SQL语句Q如iBatisQ;使用O/R Mapping技术实现的Hibernate和JDO技术;当然q有EJB中的实体Bean技术?BR>
  持久层框架目前呈现百花齐放,各有优缺点的现状Q所以正如表现层框架一P目前没有一个框架被指定为标准框Ӟ当然Q表现层框架现在又出来了(jin)一个JSFQ它代表的页面组件概忉|一个新的发展方向,但是复杂的实现让人有些忘而却步?BR>
  在所有这些J2EE技术中Q虽然SUN公司发挥?jin)很大的作用Q不qM来说Q网l上有这样一个评P(x)SUN的理论天下无敌;SUN的品用h撞墙Q对于初学者,特别是那些试N过或已l通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自q应用pȝ?BR>
  最后,你的J2EE应用pȝ如果采取上面提到的表现层、服务层和持久层的框架实玎ͼ基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系l了(jin)?BR>
  q要注意的是: 开发出一个高质量的J2EEpȝq需要正的业务需求理解,那么域徏模提供了(jin)一U比较切实可行的正确理解业务需求的Ҏ(gu)Q相兌l知识可从UML角度l合理解?BR>
  当然Q如果你惌计自q行业框架Q那么第一步从设计模式开始吧Q因计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会(x)?jin)系l基本单元JavaBean或类之间解耦时Q那么系l模块之间的解耦你可能掌握,q而你可以实现行业框架的提炼?jin),q又是另外一个发展方向了(jin)?BR>
  以上理念可以ȝZ句话Q?BR>J2EE开发三件宝: Domain ModelQ域建模Q、patternsQ模式)(j)和frameworkQ框Ӟ(j)?

XL的个性空间和java学习(fn)之旅 2005-08-02 17:07 发表评论
]]>
异常Ҏ(gu)Q注意)(j)http://m.tkk7.com/javainthinking/archive/2005/07/28/8621.htmlXL的个性空间和java学习(fn)之旅XL的个性空间和java学习(fn)之旅Thu, 28 Jul 2005 05:25:00 GMThttp://m.tkk7.com/javainthinking/archive/2005/07/28/8621.htmlhttp://m.tkk7.com/javainthinking/comments/8621.htmlhttp://m.tkk7.com/javainthinking/archive/2005/07/28/8621.html#Feedback1http://m.tkk7.com/javainthinking/comments/commentRss/8621.htmlhttp://m.tkk7.com/javainthinking/services/trackbacks/8621.html异常分ؓ(f)(g)查型异常和非(g)查型异常Q即l承自runtimeException的异常,如空引用Q数l越界等Q,在捕h查型异常的时候有可能Ҏ(gu)非检查型异常。例如:(x)
try
  {
    Class.method();//throws null pointer exception
   ....................
  }
  catch(Exception e)
  {
    e.printStackTrace();
  }

在这里就?x)没null pointer Exception,~程时一定要注意



XL的个性空间和java学习(fn)之旅 2005-07-28 13:25 发表评论
]]>
File的一些相x(chng)?/title><link>http://m.tkk7.com/javainthinking/archive/2005/07/27/8519.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Wed, 27 Jul 2005 01:07:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/07/27/8519.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/8519.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/07/27/8519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/8519.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/8519.html</trackback:ping><description><![CDATA[<P>package com.xionglian.common;</P> <P>import java.io.File;<BR>import java.net.URL;<BR>import java.io.InputStream;<BR>import java.io.IOException;<BR>import java.io.BufferedWriter;<BR>import java.io.FileWriter;</P> <P>/**<BR> * <p>Title: </p><BR> * <p>Description: </p><BR> * <p>Copyright: Copyright (c) 2000</p><BR> * <p>Company: </p><BR> * @author 熊炼<BR> * @version 1.0<BR> */</P> <P>public class FileHandle<BR>{</P> <P>  public FileHandle()<BR>  {<BR>  }</P> <P>  /**<BR>   * filename path和URL之间的{?BR>   */<BR>  public void _File_URL()<BR>  {<BR>    String path = File.separator + "a";<BR>    System.out.println(path);<BR>    //coverting Between a filename and a URL<BR>    //create a file object<BR>    File file = new File("filename");</P> <P>    //covert a file object to a URL<BR>    URL url = null;<BR>    try<BR>    {<BR>      url=file.toURL();<BR>      System.out.println(url);<BR>    }<BR>    catch(Exception  e)<BR>    {<BR>      e.printStackTrace();<BR>    }</P> <P>    //convert a URL to a file object<BR>    file=new File(url.getFile());</P> <P>    //read the file using the URL<BR>    try<BR>    {<BR>      InputStream is=url.openStream();<BR>      //read from the InputStream<BR>    }<BR>    catch(IOException e)<BR>    {<BR>      e.printStackTrace();<BR>    }<BR>  }</P> <P>  /**<BR>   * 从relative path到absolute path之间的{?BR>   */<BR>  public void rel_to_abspath()<BR>  {<BR>    File file=new File("filename.txt");//filename.txt doesn't need exist<BR>    file=file.getAbsoluteFile();//C:\Documents and Settings\xl\桌面\First\filename</P> <P>    file=new File("test"+File.separator+"filename.txt");<BR>    file=file.getAbsoluteFile();//C:\Documents and Settings\xl\桌面\First\test\filename.txt<BR>  }</P> <P>  /**<BR>   * 判断两个filename path是否指向同一file<BR>   * @return boolean<BR>   */<BR>  public boolean isSameFile()<BR>  {<BR>    File file1=new File("filename");<BR>    File file2=new File("/filename");<BR>    //file1.equals(file2)=false;<BR>    try<BR>    {<BR>      //利用File.getCanonicalFile()消除多余的symbol links或?."?.."<BR>      file1.getCanonicalFile();<BR>      file2.getCanonicalFile();<BR>    }<BR>    catch(Exception e){}<BR>    return file1.equals(file2);//true<BR>  }</P> <P>  /**<BR>   * 创徏一个(f)时temporary文g<BR>   * @param args<BR>   */<BR>  public void createTempFile()<BR>  {<BR>    try<BR>      {<BR>        //create temporary file<BR>        File temp = new File("temp", ".txt");<BR>        //推出E序时删除temp文g<BR>        temp.deleteOnExit();</P> <P>        //向temp文g中写content<BR>        BufferedWriter out = new BufferedWriter(new FileWriter(temp));<BR>        out.write("熊炼");<BR>        out.close();<BR>      }<BR>      catch(IOException e)<BR>      {<BR>        e.printStackTrace();<BR>      }<BR>  }</P> <P>  /**<BR>   * File、directory更名或FileUd到另一个位|?BR>   * @param args<BR>   */<BR>  public void rename_move_File()<BR>  {<BR>    //rename a File or directory<BR>    File file1=new File("oldname");<BR>    File file2=new File("newname");<BR>    file1.renameTo(file2);</P> <P>    //move File<BR>    File file=new File("filename");<BR>    File dir=new File("directoryname");<BR>    file.renameTo(new File(dir,file.getName()));<BR>  }</P> <P>  public static void main(String[] args)<BR>  {</P> <P>  }</P> <P> </P> <P>  }</P><img src ="http://m.tkk7.com/javainthinking/aggbug/8519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-07-27 09:07 <a href="http://m.tkk7.com/javainthinking/archive/2005/07/27/8519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用JAVA操作EXCEL文gQJAVA EXCEL APIQ?/title><link>http://m.tkk7.com/javainthinking/archive/2005/07/18/7906.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Mon, 18 Jul 2005 02:39:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/07/18/7906.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/7906.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/07/18/7906.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/7906.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/7906.html</trackback:ping><description><![CDATA[<P>参考文章:(x)<A >http://www-128.ibm.com/developerworks/cn/java/l-javaExcel/index.html</A><BR>作了(jin)一些相应的扩充(d囄{?</P> <P><A name=1><span id="ljeshaw" class=atitle2>JAVA EXCEL API?/SPAN></A><BR></P> <P>Java Excel是一开放源码项目,通过它Java开发h员可以读取Excel文g的内宏V创建新的Excel文g、更新已l存在的Excel文g。用该API非Windows操作pȝ也可以通过UJava应用来处理Excel数据表。因为是使用Java~写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的讉K?BR><BR>提供以下功能Q?/P> <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dw="http://www.ibm.com/developerworks/"> <LI>从Excel 95?7?000{格式的文g中读取数据; <LI>dExcel公式Q可以读取Excel 97以后的公式)(j)Q? <LI>生成Excel数据表(格式为Excel 97Q; <LI>支持字体、数字、日期的格式化; <LI>支持单元格的阴媄(jing)操作Q以?qing)颜色操作? <LI>修改已经存在的数据表Q? <LI>能够d图表信息</LI></UL> <P>1.<A name=2><span id="olcczxc" class=atitle2>应用CZ</SPAN></A>Q?BR>包括从Exceld数据,生成新的ExcelQ以?qing)修改Excel<BR><FONT face="Courier New">package common.util;</FONT></P> <P><FONT face="Courier New">import jxl.*;<BR>import jxl.format.UnderlineStyle;<BR>import jxl.write.*;<BR>import jxl.write.Number;<BR>import jxl.write.Boolean;</FONT></P> <P><FONT face="Courier New">import java.io.*;</FONT></P> <P><FONT face="Courier New">/**<BR> * Created by IntelliJ IDEA.<BR> * User: xl<BR> * Date: 2005-7-17<BR> * Time: 9:33:22<BR> * To change this template use File | Settings | File Templates.<BR> */<BR>public class ExcelHandle<BR>{<BR>    public ExcelHandle()<BR>    {<BR>    }</FONT></P> <P><FONT face="Courier New">    /**<BR>     * dExcel<BR>     *<BR>     * @param filePath<BR>     */<BR>    public static void readExcel(String filePath)<BR>    {<BR>        try<BR>        {<BR>            InputStream is = new FileInputStream(filePath);<BR>            Workbook rwb = Workbook.getWorkbook(is);<BR>            //Sheet st = rwb.getSheet("0")q里有两U方法获取sheet?1为名字,而ؓ(f)下标Q从0开?BR>            Sheet st = rwb.getSheet("original");<BR>            Cell c00 = st.getCell(0,0);<BR>            //通用的获取cell值的方式,q回字符?BR>            String strc00 = c00.getContents();<BR>            //获得cell具体cd值的方式<BR>            if(c00.getType() == CellType.LABEL)<BR>            {<BR>                LabelCell labelc00 = (LabelCell)c00;<BR>                strc00 = labelc00.getString();<BR>            }<BR>            //输出<BR>            System.out.println(strc00);<BR>            //关闭<BR>            rwb.close();<BR>        }<BR>        catch(Exception e)<BR>        {<BR>            e.printStackTrace();<BR>        }<BR>    }</FONT></P> <P><FONT face="Courier New">    /**<BR>     * 输出Excel<BR>     *<BR>     * @param os<BR>     */<BR>    public static void writeExcel(OutputStream os)<BR>    {<BR>        try<BR>        {<BR>            /**<BR>             * 只能通过API提供的工厂方法来创徏WorkbookQ而不能用WritableWorkbook的构造函敎ͼ<BR>             * 因ؓ(f)cWritableWorkbook的构造函Cؓ(f)protectedcd<BR>             * method(1)直接从目标文件中dWritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));<BR>             * method(2)如下实例所C?WritableWorkbook直接写入到输出流</FONT></P> <P><FONT face="Courier New">             */<BR>            WritableWorkbook wwb = Workbook.createWorkbook(os);<BR>            //创徏Excel工作?指定名称和位|?BR>            WritableSheet ws = wwb.createSheet("Test Sheet 1",0);</FONT></P> <P><FONT face="Courier New">            //**************往工作表中d数据*****************</FONT></P> <P><FONT face="Courier New">            //1.dLabel对象<BR>            Label label = new Label(0,0,"this is a label test");<BR>            ws.addCell(label);</FONT></P> <P><FONT face="Courier New">            //d带有字型Formatting对象<BR>            WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);<BR>            WritableCellFormat wcf = new WritableCellFormat(wf);<BR>            Label labelcf = new Label(1,0,"this is a label test",wcf);<BR>            ws.addCell(labelcf);</FONT></P> <P><FONT face="Courier New">            //d带有字体颜色的Formatting对象<BR>            WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,<BR>                    UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);<BR>            WritableCellFormat wcfFC = new WritableCellFormat(wfc);<BR>            Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);<BR>            ws.addCell(labelCF);</FONT></P> <P><FONT face="Courier New">            //2.dNumber对象<BR>            Number labelN = new Number(0,1,3.1415926);<BR>            ws.addCell(labelN);</FONT></P> <P><FONT face="Courier New">            //d带有formatting的Number对象<BR>            NumberFormat nf = new NumberFormat("#.##");<BR>            WritableCellFormat wcfN = new WritableCellFormat(nf);<BR>            Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);<BR>            ws.addCell(labelNF);</FONT></P> <P><FONT face="Courier New">            //3.dBoolean对象<BR>            Boolean labelB = new jxl.write.Boolean(0,2,false);<BR>            ws.addCell(labelB);</FONT></P> <P><FONT face="Courier New">            //4.dDateTime对象<BR>            jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());<BR>            ws.addCell(labelDT);</FONT></P> <P><FONT face="Courier New">            //d带有formatting的DateFormat对象<BR>            DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");<BR>            WritableCellFormat wcfDF = new WritableCellFormat(df);<BR>            DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);<BR>            ws.addCell(labelDTF);<BR></FONT></P> <P><FONT face="Courier New">            //d囄对象,jxl只支持png格式囄<BR>            File image = new File("f:\\2.png");<BR>            WritableImage wimage = new WritableImage(0,1,2,2,image);//0,1分别代表x,y.2,2代表宽和高占的单元格?BR>            ws.addImage(wimage);<BR>            //写入工作?BR>            wwb.write();<BR>            wwb.close();<BR>        }<BR>        catch(Exception e)<BR>        {<BR>            e.printStackTrace();<BR>        }<BR>    }</FONT></P> <P><FONT face="Courier New">    /**<BR>     * 拯?q行修改,其中file1copy对象Qfile2Z改后创徏的对?BR>     * 单元格原有的格式化修饰是不能去掉的Q我们还是可以将新的单元g饰加上去Q?BR>     * 以单元格的内容以不同的形式表现<BR>     * @param file1<BR>     * @param file2<BR>     */<BR>    public static void modifyExcel(File file1,File file2)<BR>    {<BR>        try<BR>        {<BR>            Workbook rwb = Workbook.getWorkbook(file1);<BR>            WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy<BR>            WritableSheet ws = wwb.getSheet(0);<BR>            WritableCell wc = ws.getWritableCell(0,0);<BR>            //判断单元格的cd,做出相应的{?BR>            if(wc.getType == CellType.LABEL)<BR>            {<BR>                Label label = (Label)wc;<BR>                label.setString("The value has been modified");<BR>            }<BR>            wwb.write();<BR>            wwb.close();<BR>            rwb.close();<BR>        }<BR>        catch(Exception e)<BR>        {<BR>            e.printStackTrace();<BR>        }<BR>    }<BR></FONT></P> <P><FONT face="Courier New">    //试<BR>    public static void main(String[] args)<BR>    {<BR>        try<BR>        {<BR>            //读Excel<BR>            ExcelHandle.readExcel("f:/testRead.xls");<BR>            //输出Excel<BR>            File fileWrite = new File("f:/testWrite.xls");<BR>            fileWrite.createNewFile();<BR>            OutputStream os = new FileOutputStream(fileWrite);<BR>            ExcelHandle.writeExcel(os);<BR>            //修改Excel<BR>            ExcelHandle.modifyExcel(new file(""),new File(""));<BR>        }<BR>        catch(Exception e)<BR>        {<BR>           e.printStackTrace();<BR>        }<BR>    }<BR>}<BR><BR></FONT><FONT face="Times New Roman">2.在jsp中做相关试Q创Z个writeExcel.jsp<BR><%<BR><FONT face="Courier New">response.reset();//清除Buffer<BR>response.setContentType("application/vnd.ms-excel");<BR>File fileWrite = new File("f:/testWrite.xls");<BR>fileWrite.createNewFile();<BR>new FileOutputStream(fileWrite);<BR>ExcelHandle.writeExcel(new FileOutputStream(fileWrite));</FONT><BR>%><BR>在IE中浏览writeExcel.jsp可以动态生成Excel文?jin),其?/FONT><FONT face="Courier New">response.setContentType("application/vnd.ms-excel");语句必须要,才能保不ؕ码,在jsp中输?lt;%@page contentType="application/vnd.ms-excel;charset=GBK"%></FONT>不行?/P><img src ="http://m.tkk7.com/javainthinking/aggbug/7906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-07-18 10:39 <a href="http://m.tkk7.com/javainthinking/archive/2005/07/18/7906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>q期需要修炼的相关东东如下Q?/title><link>http://m.tkk7.com/javainthinking/archive/2005/07/16/7812.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Sat, 16 Jul 2005 06:14:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/07/16/7812.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/7812.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/07/16/7812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/7812.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/7812.html</trackback:ping><description><![CDATA[<P>Log4jpdQ?BR><BR><A >Log4j     <1></A><BR><BR>Java IOpdQ?BR><BR><A ><STRONG>JAVA - IO包的学习(fn)引导文章</STRONG><BR></A><span id="gchfaqv" class=atitle><A >d转变?gu)?nbsp;<1></A><BR></SPAN><span id="flnaxkj" class=atitle><A >d转变?gu)?nbsp;<2></A></SPAN><BR></P> <P>Excel操作pdQ?BR><BR><A >jxl <1></A><BR><A >POI<1></A><BR><A >POI<2></A><BR><BR>IDEA<BR><A >IDEA的用技?/A><BR><BR>其它Q?BR><A ><span id="xsbzfsu" class=ccwheading02>JSP+XML构架|站的实?/SPAN> </A><BR><A ><span id="bomrpcb" class=ccwheading02>jspSmartUpload上传下蝲全攻?/SPAN> </A><BR><BR>*********************************<BR>调试      部v    数据库SQL操作Q旧目中的SQL借鉴Q?BR>**********************************</P><img src ="http://m.tkk7.com/javainthinking/aggbug/7812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-07-16 14:14 <a href="http://m.tkk7.com/javainthinking/archive/2005/07/16/7812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修炼一名程序员的职业水?/title><link>http://m.tkk7.com/javainthinking/archive/2005/07/06/7200.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Wed, 06 Jul 2005 07:53:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/07/06/7200.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/7200.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/07/06/7200.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/7200.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/7200.html</trackback:ping><description><![CDATA[<P><FONT color=#993300>假设你是一名Y件专业毕业的本科学子Q如何在工作中修炼成Z名有较高职业水准的程序员呢,本文试图ȝ作者从?5qY件开发工作的感想Q希望对有志成ؓ(f)职业E序员的人有所帮助Qƈ借此Z(x)感谢原昆明工学院计算机系的和智玲老师和张怀宁老师Q特别感谢我的硕士导师,南京大学计算机系的博导郑国梁教授?BR><BR>注:(x)本帖a辞尖刻,乃作者脾气秉性?dng)如果你看着有气Q就请多多见谅,放下别看?jin)?BR><BR><BR>E序是一pd按步骤进行的操作序列Q它有好多种U别Q比如最低的微E序、次低的汇~程序、高U的各种~程语言E序、最高的脚本语aE序Q也许我列的不对Q但没关p,我要说的是不是那个U别的程序,其本质都是操作的逻辑序列。大多数pȝ和应用程序都是徏立在高~程语言上的Q比如C、C++、CQ、FORTRAN、BISIC、JAVA{等Q就让我们只x(chng)q一U的~程能力吧。因此如果一个程序员的逻辑能力不高Q他永远都不能成Z名具有合D业水准的E序员,我们在下面的讨论有关~程能力的方斚w面,最l都是ؓ(f)?jin)最大程度地提高和实C名程序员的逻辑能力?BR><BR>一、掌握基知识Q十六年寒窗的持l积?BR><BR>?岁读学Pl过16q的学习(fn)Q你从Y件专业本U毕业后Q必d成以下几门专业课E的学习(fn)Q计机l成、操作系l原理、汇~语a、数据结构、编译原理、数据库原理、Y件工E、结构性设计语a(PASCAL、C)、面向对象设计语a(CQ+、CQ?、计机|络{,你最好还懂一些算法分析、分布式pȝ、计机囑Ş学、Ş式逻辑、h工智能原理、Y件设计模式、Y件构?框架{研I生的课E,16q来Q你U篏的除?jin)知识,更重要的是Ş成最适合自己的学?fn)方法和工作?gu)。这些是你具备程序员职业水准的基能力Q不要受什么计机软g怪杰之类传奇的媄(jing)响,那不q是概率事Ӟ而且q些怪杰们就没有读qY件本U和研究生,也往往自学?jin)大多数专业评Q很可能比在校学?fn)的学生对这些课E的_N部分理解的更好,q有他们的工作方法和思维方式是特别而高效的Q但普遍性差Q可以借鉴Q不宜模ѝ好Q所以现在你只需要问问自己,那些评和知识都学会(x)q掌握了(jin)吗?如果是,那就准备好进行实践了(jin)?BR><BR>二、在实践中提高:(x)成ؓ(f)一名高水^的Coder<BR><BR>好了(jin)Q你毕业?jin),在校功课都不错,也找了(jin)一个专业对口的工作Q你惛_展`图了(jin)Q可是别急,你的膀q(sh)够硬Q不信我们说来看看?BR><BR>通常Q你在工作中都会(x)用到某一U单?公司固定的操作系l和~程语言开发环境,比如Windows、UNIX、LINUX{操作系l,又比如用VC、VB、PB、Delph、JAVA、Motif/XWindow、QT、OpenGL、OpenInventor{编E语a和开发环境,我们在后面把它们合称为开发环境。就在校学习(fn)的有兛_发环境的知识而言Q大概你距工作需要的差距是不的Q当某个操作pȝ和编E语a环境成ؓ(f)你的饭碗Ӟ׃应也不能用通过评/认证考试之类的眼光和要求来评价你的能力,即你能?00分。你需要深入地学习(fn)该操作系l和~程语言环境的各cd发手册的所有内容,你会(x)说大多数你都用不上,其实你既对又不对Q对的是单从使用的角度而言Q你实用不上开发手册的大多数内容,比如庞大的VC开发类库和复杂的开发环境,你在实际工作中能用到的不到L?/10?/5Q不对的地方在于Q你用到的部分不是孤立存在的Q它们是整个体系中的一部分Q只有对整个体系有了(jin)一个较完整的了(jin)解,才能得心(j)应手、随?j)所Ʋ地用好你用到的部分Q你才算初步具备在这U开发环境下q行Coding的职业水?q远不够E序员的职业水准?Q而这只是刚开始。如何才能真正掌握一U开发环境的全面的知识呢Q最原始的办法就是读开发指?教程、参考手册,一般来Ԍ学习(fn)开发指?教程Ӟ你如果是一个认真的人,都会(x)完成5/10~7/10左右内容的学?fn)和l习(fn)Q如果你x(chng)业选手Q就应该完成9/10以上内容的学?fn)和l习(fn)。参考手册不同,大多数所谓的“程序员”们只是用到?jin)才ȝQ这差的太远?jin),你应该象d发指?教程一P每个环节都要读,比如VCQ参考手册中的每个类Q类的每个函敎ͼ都要M几遍Q它们往往是一伙一伙地纠~在一起用的Q开始时d你毫无头l、心(j)?ch)意乱,不要紧,q有一手呢Q如果你开发环境安装的全面Q它们往往都有开发商做的demo例子可看Q你p入另一个境界了(jin)Q开始时你关注demo中的具体技术,后来你发现这些demo的程序写的都q算不错Q结构简单但合理Q如果你真的用心(j)Q就一定能发现一些个别的demo是极品,它所展现的程序逻辑l构是你设计不出来的Q你现在有点更关?j)它的程序设计构Ӟ甚于对你原始目?某种相关的技?技?的关注,q时的你Q开始了(jin)从一名Coder向一名Programmer的{变,你会(x)忍不住要看看开发商提供的源E序Q比?h?cppQ通常你会(x)扑ֈinclude路径下所有的.hE序Q你才知道,哇!好多好多东东在参考手册中都没提到Q你要学的太多了(jin)Q没旉֏(qing)其它的业余爱好了(jin)Q现在知道ؓ(f)什么程序员是年Mh的职业了(jin)吧,你要有够多的时间才行,即你的智商?60。如果你走到q一步,在你工作的团队中Q已l是l常有h向你h技术问题,l常有hh你帮忙debugQ你已是公认的“高手”了(jin)Q别得意Q因Z仍然是个CoderQؓ(f)什么这么说呢,你想惻I你已深入?jin)解了(jin)这个开发环境中的各U技能,知道一名Coder如何用好q些东西Q可是你能设计的出提供给C(j)oder们用的东西吗Q唔……,你想?jin)想Q可能还?sh)太行。对?jin),是q样Q你q是一名小我境界的E序员呢Q本质是个CoderQ当然已是一名高水^的Coder?jin),然而你需要进一步登堂入室才能成Z名真正的E序员?BR><BR>让我们(h)l吧Q通常你都是从_N一U编E环境开始的Q假设你已经较ؓ(f)_N在Windows下用VC开发Y件了(jin)Q这时在技术和技巧方面你面临一一大两个挑(xi)战,W一个小?xi)战是如果公?单位Ҏ(gu)?jin)开发环境,比如用LINUX下的QT交互语言工具q行开发,你不q是把前面掌握VC的过E再来一遍,׃在主观上l历?jin)VC工具的学?fn)过E,在客观上各种开发环境都有太多相似的斚wQ这回你掌握的应该较快。要心(j)Q在q时W一ơ诱惑之门打开?jin),因?f)你感觉良好,看!q回q么快,我就q么好地掌握?jin)新的开发环境,你开始关注其它暂时还用不到的同类环境Q比如VB、Delph、JAVAQ如饥似渴地掌握各种开发工P证明自己的学?fn)能力和价|但你忘(sh)(jin)一点,你仍然是个CoderQ只不过是一个在好多开发环境下都能~程的CoderQ就像你生活在中国,因而精通了(jin)汉语Q工作需要你又掌握了(jin)pQ然后你来?jin)劲Q把俄语、日语、阿拉伯语、拉丁语Q等{等{,都学?fn)个遍,我只能说Q有点BT。你忘(sh)(jin)自己是个职业人,同一cȝ东西工作中用得到才需学习(fn)Q太多太多的Coder们喜Ƣ在一h较和炫耀自己?x)掌握?jin)几种开发工P不信你看看招聘时的求职书q道了(jin)QsighQ他们中l大多数人永q都只能停留在这个层ơ上Q心(j)气w,一生都再也当不成真正的E序员(sh)(jin)。ȝ一下,其实你在q时需要的是对自己掌握新开发环境的能力的自信,而不是一遍遍地重复来证明自己。第二个大挑(xi)战就是你明白?jin)只掌握VC是不够的Q你发现自己有点薄Q有很多东东你会(x)用但你不太懂Q很多方面支持VC~程的知识你都没掌握Q比如操作系l的源码、网l协议知识、Windows 的注册表、进E和U程的基知识、硬仉动方面的知识、ActiveX、Windows 庞大?APIQ又是一个等{等{,q些基础知识的学?fn)和掌握可是要花费大量时间的Q你再一ơ深切地感到旉太不够用?jin),因?f)q时的你大概有许多俗务缠w了(jin)Q所以有Ҏ(gu)丧,q(sh)用提IT业每天不知有多少C西在发布QKAOQ永q都跟不上,拉远?jin)。哎Q别气馁Q振作一点,你还是忘C(jin)自己是个职业人,既然好多东东在工作中你永q都没机?x)用Q那么干嘛要学呢Q用什么才学什么,最多预到马上要用什么,先一步学什么好?jin),要知道没有h是真正的、无所不精的全U大夫,除非你是,但如果你q在耐着性子看这文章,你肯定是个h嘛?BR><BR>OKQ一般工作后三五q_(d)你经历了(jin)上述q程Q经受了(jin)诱惑和考验Q终于明白了(jin)一个道理:(x)你要的是强劲的学?fn)知识的能力Q是Ҏ(gu)UY件知?技能的有深度的_N,一U摸到它的根的深度,而不是已掌握的技能的U类和数量。这时无用他掌握?jin)多种你不会(x)的技能来吓唬你都没用Q你对他的层ơ只有蔑视。通过几年的学?fn)和工作Q要C最重要的一点,永远最重要Q对自己学习(fn)IT知识能力的自信,一个程序员?sh)生都要不停地q行高强度的学习(fn)Q用?j)问问自己,有没有这个自信?别用虚荣心(j)来骗自己哦Q如果没有的话,那就不必p你宝늚旉向下看了(jin)Q作者在此感谢你有耐心(j)看到q里Q现在徏议你关闭q篇文章Q趁着q轻Q当机立断{行吧Q?BR><BR>三、注重逻辑Q成Z名职业程序员<BR><BR>好,再前q一点点Q你p成ؓ(f)一名职业程序员?sh)(jin),让我们?h)l来完成q个d吧!我们在前一节提到过Q“你发现一些个别的demo是极品,它所展现的程序逻辑l构是你设计不出来的Q你现在有点更关?j)它的程序设计构Ӟ甚于对你原始目?某种相关的技?技?的关注”,其实你是在关注这个demoE序作者的思维逻辑Q所有程序的本质是逻辑。技术你已经较好地掌握了(jin)Q但只有完成逻辑能力的提高,你才能成Z名职业程序员。打一个比方吧Q你?x)十八般武艺Q刀枪棍都很精通,但就是力气不够,所以永q都上不?jin)战场,q个力气对程序员而言是逻辑能力(其本质是一个h的数学修养,注意Q不是数学知?。逻辑能力也是逐步提高的,开始时你一定是用直观的逻辑能力来编E的Q怎么惛_怎么~,不对再改,在改q中提高自己的逻辑能力Q从直观逻辑能力提高到抽象逻辑能力Q这是很正常的。提前说一句吧Q到N辑能力的至高境界,其表现是用数学语a来描q问题和问题的解军_法,高度抽象Q好Q说回来吧,你要提高逻辑能力Q最快的办法是d人写的结构优U的程序。优U的代码是百读不厌?q句话是我抄来的)Q暂时放攑֯其中某种技术和技巧的x(chng)吧,你要推导和学?fn)的是这些好E序的逻辑l构Q它们是被精?j)设计出来的。你可以先捂住这个demoE序Q自p计一个功能相同的E序l构Q然后比较一下demo的程序结构,如果差距较大Q那你就不应单地改进一下,而是要把demo作者设计的q程在心(j)里复原一遍,做到q一点也许有点困难,但这U事q的多了(jin)Q你׃(x)干快Q越来越得心(j)应手Q你的逻辑能力飞速提升,你能看得上的逻辑l构优秀的程序开始不多了(jin)Q下一步就是练?fn)。从工作中开始吧Q如果你有空Ԍ你需要做臛_两类l习(fn)Q一cL法l习(fn)Q所有的l典法都是l典的逻辑Q题目有的是Q像个好学生一样吧Q每q的国内国际~程竞赛都有逻辑要求非常高的题,你可以只选一两道N来做做。当你可以把复杂的单递归E序(只有A调A)变成非递归E序Ӟ已经不错?jin),如果你能看得懂双递归E序(A调A、A调B、B调A、B调B都有)Q我Z鼓掌Q你不必往下看?jin),我有点不好意思啦――班门弄斧,你快滚蛋吧!另一cL把以前和当前你工作中你不满意的程序推倒重新设计一遍,q非帔R要,省时省力Q因Z熟?zhn)需求,技术上也没问题Q目的就是改q程序的逻辑l构Q很划算哦,唯一要克服的是Q你Ҏ(gu)M前工作中那点小成就的心(j)理障,如果你真想优UQ说句粗话:(x)q点?j)理障碍个屁,一遍遍反复地推倒已有的成果只能使自己快速进步,放手q吧Q没什么好可惜的,马恩早就在《共.?党宣a》里说过?jin)?x)在这个过E中Q你失去的只有锁?锢你思想的锁??BR><BR>让我们来ȝ一下,l过自我否定后,再生的你管对过ȝ“业l”还有一些眷恋,但已是一个初步具备职业水准的E序员(sh)(jin)Q掌握了(jin)相应的技术和技巧,具备?jin)较高的抽象逻辑思维能力Q最主要的特征是Q能自觉地自我否定,不断地追求更高水q的逻辑能力?BR><BR>在这个过E中Q如果你能注意以下一些小的方面,你前q的步伐也许?x)快一些?BR><BR>l 从编译原理的角度来理解你工作中用的高语言Q如果你做到q一点,臛_有两个好处,W一个好处是避免一大堆低水q重复出现的~译错误。一名优U的Coderq_在一个工作日中应该完?00行以上的源码Q其~译错误应该控制?个以下,要知道这200行源码不是一ơ完成的Q所以大多数情况下你都要q求一ơ编译通过Q而一名职业水准的E序员,应该q一步做到即使用purifyq类的工h(g)查源码,也不?x)存在严重的内存泄露。第二个好处是可以提高源码的可读性和效率。规范地~写你的代码使你自己的逻辑清晰Q因Z明白多加几个括号和空行、多换行寚w、多注释Q编译器是会(x)自动识别的,不媄(jing)响程序执行的效率Q反q来Q控制好递归调用和@环内的if语句才是提高E序效率的关键,要全力避免递归Q但要深ȝ解递归Q能通过自己建立堆栈来把递归E序转换成非递归E序Q要求还是较高的哦!<BR><BR>l 避免思维陷阱Q只要你是h׃定有自己的思维惯性,q一定又?x)表现在你的E序逻辑中,有时你就是从q个惯性中跳不出来(谁都有这个时?Q但要心(j)里有数才行,所以你需要帮助,如果你有几个水^相若或更高的职业伙伴Q太好了(jin)Q当遇到?0分钟q打不下的bugӞ别费旉?jin),找他们吧Q最要紧的是能思\清晰明确地表qC的问题,通常你自己在q个q程中或者伙伴中有人把问题解决?jin),又快又好。另外,有几个可以良性竞争的职业伙伴是h生的一件幸事,1+1>2Q大家各有所长,你最好做到及(qing)时公开你的成果Q技不压w嘛QIT发展的这么快Q你再优UQ那点东东也没有什么值得隐藏的,所以你可以技术或水^不够高,但千万不可以让真正具有职业水准的选手鄙视你的职业品质和行为?BR><BR>l 有自己debug的特点,下面的说法作者不敢太肯定Q只是经验之谈。即使在VCq种高度完善的开攄境下Q你仍然应该要求自己仅凭打印语句pdebug。这也有两点好处Q第一个好处是Q遇到bug你会(x)认真想问题所在,而不是用debug工具一步步单地q踪卡在哪儿?jin),你定位bug范围的方式是从大到小、从_到_,q是一U自向下的思维方式Q而用工具q踪Q容易Ş成自底向上的思维方式Q这不算好,你应该先看到林Q再看到?wi)木。我反复提及(qing)Q程序就是逻辑q程Q大多数E序从main函数开始,是由数据l构和功能子E序l成的一个树(wi)形结构的逻辑q程(要认清即使是面向对象的程序语a也是一L(fng))Q它的执行过E是深度优先的,但你定位bug应该是广度优先的Q好好想惌一点,嗯?W二个好处是你思考ƈC而不是用工具看到调用q程Q你大脑的抽象逻辑思维能力和胳膊上肌肉的力量一P都是l出来的Q如果你的bug是程序结构上的逻辑错误引v的,q一点就非常重要?jin),Z说一句,最难打的bug是E序逻辑l构错误D的bug。你要是真正明明白白地认识到q儿?jin),那我没什么东西可以告诉你?jin)。MQ程序员的职业水准:(x)生效率和程序质量,主要是取决于源码中bug的数量和debug的速度Q而不是取决于~写源码的速度。给你一个我自己定义的考查一个职业程序员的指标:(x)一个合格水准的职业E序员,~程的时间如果算一份的话,其篏计debug的时间不能超q一份,真正职业高手累计debug的时间应该控制在0.5份以下,如何Q你关上门?zhn)?zhn)问问自己,你花费在~程和debug上的旉比例是多?如果你把E序员(sh)׃生的职业Q那么就永远都要牢记一点:(x)q求做一? bug的优UE序员!q是M一个想成ؓ(f)职业E序员的人的理想Q请怿Q坚忍不拔地q求实现q个理想让你出cL萃!<BR><BR>l 做好E序的单元测试,q是另一考查你是否是一名具有合D业水准的E序员的一个必要指标。其实在你拿到需求的时候就要准备单元测试用例了(jin)Qƈ且这些用例将直接影响你的详细设计(有关软g设计本来是该攑֜W四节讲?。我们还是打比方吧,当你拿到一个需求时Q除?jin)分析它静(rn)态的功能外,q应明确它动态的操作/执行q程Q把q个动态过E明地用流E图d来,比如分ؓ(f)A~Z?6步,其中A又可以进一步分解ؓ(f)A1~A5?步,直到不能再分解ؓ(f)止。又比如说A3步不可分解了(jin)Q那么你应该把A3步的正常操作和所有五花八门的异常操作都列出来Q确保正常的操作肯定正确Q异常的操作L(fng)E序不退出才行。这样你p写好多好多的试用例Q说句老实话,我也从来不写Q但我一般会(x)列一个提UԌ比如A3步有正常的操作a、b、c、d、e?,异常的操作有f、g、h、i、j、k、l、m、n?,你在q行单元试旉应该跑一遍,q样的程序都q(sh)敢说质量如何好,但v码可以说较稳定吧Q如果要惛_q行单元试时干得快、效率高Q那么在q行详细设计Ӟ你就应该把A3步中Ҏ(gu)有正常操作和异常操作的判断都设计好,在编E实现A3步时Q得程序的l构合理高效Q对不对Q所以,如果你在工作中是割裂地看待Y件工E中从需求、分析、设计、编E、测试等各个环节Q恐怕水q_有限喔!但如果你在分析需求时p看到试的问题,q改q设计和实现Qؓ(f)此做好相应的准备工作Q嘿嘿,整个软g开发过E你的效率会(x)高很多,通常你在一个开发团队中׃(x)高度自信的,你已过当一名偏颇、露骨的高手的境界,成ؓ(f)一个^?rn)的高手Q这可是The best in the bestQ,用周星星的话_(d)(x)是高手之高高手,因ؓ(f)别h看不Z高在哪儿Q没见你有什么高招或Ҏ(gu)命干Q但反正你就是干得又快又好、又省力。关于进行单元测试还有很多复杂的Ҏ(gu)Q在此本文只提到?jin)最基本的一点,目的是让你在工作上考虑周全、安排有序,其它的自q吧Q没有h能替你吃饱饭Q?BR><BR>l 如果你是用CQ+~程Q我再简单谈谈有兛_层释攄一个小技巧,是Ҏ(gu)有你~写的类Q在构造和析构函数中加打印语句Q统计每个类在运行程序时构造和析构的地方,如果是配对的Q那么v码没有对象类一U的内层在程序运行结束时没有释放Q然后你可以把打印语句删掉?jin),招数虽土Q但用Q?BR><BR>l q有其它一些好?fn)惯Q在q里我随W写一些,你要是有不同看法也请一W过之吧。编E时应该寚w~进Q一个羃q用一个tab键,一般是4个空|严格遵守开发团队的~程规范也是非常重要的。一个子E序不应过30?不算I)Q其内多重@环不应超q?层,否则都应该分裂成两个子程序,个别法E序可以长一些,但也不宜过200行。通常一个类的所有成员函数d不宜过1500行,多了(jin)应该考虑分解成两个类(q个工作最好在设计时就完成)。每完成一段E序Q比?5?0行,q即编译运行,不要假装高手Q先敲它一大堆E序Q再~译q行Q妄想一ơ成功,体验一U假爽的、虚荣的快感Q或炫耀l别人看Q这么做只能证明自己是一个不折(sh)扣的?c)Q装酯(g)已。因为只要有一ơ不成功Q你׃(x)p大量的时间来调程序,别h的进度在q时pq地过你了(jin)Q^常心(j)是道Q还是修炼真功夫吧!孙子光|里关于这一Ҏ(gu)明确的阐qͼ我就不引用了(jin)Q但你真的不要这么干Q除非你实是q样L一ơ就成功的天才,那你q看q篇文章q什么呢Q我又不是写l你们这些天才们看的。再是有学?x)买好书、读好书Q关于计机和Y件方面的书太多了(jin)Q时间有限,比如有一个叫侯捷的家伙,几乎写的每本书都不错Q张国峰的CQ+~程也不错,q只是我的个人意见啊Q好书多着呢,列出来比q篇文章长好多倍,我就不多说了(jin)。还有一招,要是你运气好Q能搞到一些著名Y件系l的源码Q好好读dQ在此我只能告诉你,Linux操作pȝ的一些源码不错,是开攄Q你可以合法地搞刎ͼ其它的不要说是我你R犯知识版权啊Q?BR><BR>四、天生神力:(x)成ؓ(f)pȝ分析?BR><BR>本来pq如何成Z名职业程序员而言Q本文已基本完成d?jin),但《菜根K》有aQ竭世机枢,g滴投于巨壑,I玄辩Q若一毫置于太虚。既已乘兴到此,何妨多置一毫于太虚呢,作者不才,q脆兴写算?jin)?BR><BR>你要是运气好Q直接进入了(jin)一个严D范生产的软g企业׃Q刚开始就应该是按别h做好的Y件设计来实现~程Q你可以有机?x)直接学习(fn)Y件设计,当你U篏的够多?jin),能够对其中的一些设计提出好的改q徏议,而且q得又快又好Q就?x)渐渐地展露头角Q我怿你终有一天成Z名Y件设计h?注意Q不是Y件品设计h?Q步入系l分析员的行列,但这q需其它的一些条件和自我修炼。如果你在一个不规范的Y件企业工作,那也不错Q你很可能直接就有机?x)进行Y件设计,然后开发、测试,甚至q(sh)得不自己定义需求,把Y件开发过E的各个环节C个遍Q当然这样对你的要求更高Q而且你也不容易得到及(qing)时有益的指点Q在正态分布的情况下,你应该是成长的很慢。但不管׃的单位如何,如果你决?j)要成?f)尖软g职业选手Q通常什么客观困NL不了(jin)你,然而你个h的因素可能会(x)L你的前进。下面提出的观点U属一׃见,伤h自尊之处作者在此提前道歉,q徏议你除非Ҏ(gu)文有强烈的兴,否则p直接看第五节或放下别看了(jin)。丑话已说在前头?jin),在各UY件开发组l的发展q程中的事实也证明,只有数E序员能成ؓ(f)pȝ分析员,我想q一点不是我杜撰的吧Q因此你要是在看接下来的部分时感到气愤难当,那也实在没着Q纯属活该,因ؓ(f)作者只是在说明自己的观点而已Q你最多可以呲之以鼻,表示一下你的轻蔑好?jin),但没有Q何理由可以骂人!<BR><BR>作者自己没有到微Y面试q,但n处Y件行业,关于微Y的许多东东当然还是有耳闻的,据说微Y招聘?sh)名程序员要过五个已经成ؓ(f)微YE序员的面试养I而且是一否军_Q又据说大多数面试题q~程Q而是一些有关逻辑和智力的题,作者私下也做过许多传的微软面试题QƈҎ(gu)做法׃为然。程序的本质是逻辑Q所以几十年前就有h提出~程是一门艺术,而艺术是要靠天䆾的,q一点少有h反对。一个h的逻辑能力可以不断提高Q但其能到达的终极逻辑能力的层ơ必定ؓ(f)其天生智力所限制Q这一点就让h不易接受?jin)。好W啊Qh们可以公开承认自己没有某种或全部的艺术天䆾Q但要说自己逻辑天䆾不够Q换句话说承认自q、IQ不够高,往往是要怒发冲冠的,其实q又有什么区别呢Q话都说到这儿了(jin)Q再ơ徏议你如果不够自信Q就跌q一节吧Q直接看W五节,好吗Q?BR><BR>好了(jin)Q把话题说回来,你已l成Z门合格的职业E序员(sh)(jin)Q如果要x(chng)Z事Y件系l设计的职业pȝ分析员,W一件事是(zhn)?zhn)找一个标准智商测试的|站或其它渠道,严格认真的测一自q智商Q如果IQ低于130 (正常智商?10)Q就请别费劲?jin),打消掉成为系l分析员的念头吧Q好Q好Q先请你冷静(rn)一下,好好x(chng)Q其实微软面试时是在测你的智商和逻辑数学素质呢,q就是本节的标题?sh)“天生神力”的原因Q因计就是从无到有地q行创造,无论是Y件还是其它行业都一P可以有借鉴的,没有现成的,设计是创造!如果你I(yng)Q?30以上Q又军_(j)要当一名职业Y件系l分析员Q其实你不过是要准备好吃更大的苦而已Q有什么好虚荣的呢Q?BR><BR>修炼q是从基本功开始的Q过E和成ؓ(f)一名职业程序员差不多。必M用设计工兯一Ҏ(gu)不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是l构化设计,另一个是面向对象设计Q就个hl验而言Q面向对象的设计更好。如果你工作中不得不采用l构化的设计Q你必须熟练地掌握数据流囑֒控制图的分析和设计Q一般来Ԍ如果你把一个Y件中用到的数据模型设计好?jin),针对功能化的程Q不难设计出数据?hu)图Q但下一步设计控制流图才是挑(xi)战,如果你按照需求走不通设计好的控制流图,那么你或别h在按照这个设计编E实现时Q必定也C通,没有奇迹?x)发生,q是在设计阶D严D求吧Q又有一炚w要牢讎ͼ(x)q工是最慢的。当你在q行控制图的设计时Q也不要妄想得到需求h员提供给你明的指点Q通常他们要是能够把需求的功能和操作次序写完整的话Q你应该感恩戴德了(jin)Q从需求中整理出功能、操作的拓扑ơ序和条件是你作为系l分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不好一个职业系l分析员的,即你天赋不错,必要的数学和逻辑素质仍然不可或缺。也不用气馁Q永q没有最好的设计Q只有更好的设计Q反复地q行设计q代Q勇于推L的设计,你将快速进步。如果你在工作中是采用面向对象进行设计的Q那更有利?jin),有关面向对象设计的书太多了(jin),不用作者在此多费口舌,_读一本经典的书,比如北大늻忠等~译的《面向对象的分析》,有些Ҏ(gu)和技巧可能过Ӟ但其逻辑的基本原理是非常正确的,其本质是Q你在逻辑上是如何认识q个世界的,你就是如何设计Y件体pȝ构的Q然后读d它书Q触cL通,自己创造机?x)多实践Q成功自然会(x)到来的,MQ不是l构化设计还是面向对象设计,评h(hun)一下自q软gpȝ设计Ҏ(gu)吧,有好多指标呢Q比如是否均匀和^衡?局部独立性强不强Q有没有歧异的结构?有没有层ơ太多或太少Q有没有某个层次太大、太q?是不是逻辑l构先复杂了(jin)再化的?q是只会(x)设计单的Q复杂不h(q一Ҏ(gu)W哦Q如果出现多ơ,请你不要意气用事Q{行吧)Q最重要的一点,是否Ҏ(gu)理解、实现和改进Q你自己?x)得(gu)L(fng)。如果有Z(x)看到别h的设计,一定不要错q学?fn)的Z(x)Q自己推g遍,认真比较比较Q获益会(x)较多?BR><BR>走到q一步,你就应该x(chng)设计模式?jin),首先q是学习(fn)Q这斚w的好书有的是Q但一般在工作中用到的设计模式较ؓ(f)单一Q应该多试一下其它的设计模式。其ơ必要明白设计模式不是设计思\Q也不能代替设计思\Q比方你要从A到B修一条\Q设计模式只是让你选择Q是修水泥的q是柏a(b)的?是高架\q是普通的Q但U\必须你自己定Q而线路就是设计思\Q模式对思\是有影响Q但不能代替Q所以如果你的智商高?50Q我怿你直接用汇编语言也能写出面向对象的程序来。第三在此有一个陷阱,很多pȝ分析员生搬硬套设计模式,全然不懂如何融会(x)贯通,在你的一具体工作中Q往往是以一U设计模式ؓ(f)主,其它模式的,思维不拘泥于形式才是关键Q而且也ؓ(f)你到达更高的软g设计的境界做好准备?BR><BR>唉!都不知该怎么向下写好?jin),因?f)已达C者水q的极限?jin),我胡p一点,你凑合看吧。Y件设计最l的层次是:(x)以无法ؓ(f)有法、以无限为有限,q句话是李小龙说的,不是我说的。再拾h牙慧一把,cL一个故事吧Q金大侠在《倚天屠龙记》里讲到张无忌初学太极,学会(x)的标志是把刚学的招数全忘?sh)(jin),C的是太极的道理和_Q和李小龙有些相似喔QY件设计也一P忘记所有的设计模式Q随?j)所Ʋ进行设计才是至高境界,所以你能到辑֤高的软g设计的境界最l将取决于你的哲学素质,q一点实在是不好写啊Q你自己领?zhn)吧!作者只有祝了(jin)Q?BR><BR>五、职业h的终极目标:(x)全面修炼Q成为Leader<BR><BR>q一节更不好写,涉及(qing)到太多其它非技术方面的因素Q特别是个h人生观和世界观的修炼Q如果本帖的点击率超q作者私下期望的一个数|那我׃取尽力厚着脸皮再补上吧。我只说一句,虽然大家都知道Y件开发是一个团队性的工作Q但q求参与一个大型Y件系l的成功开发,是一名Y件h员的本能Q就像拿破仑说的不想当元帅的士兵不是好士兵,所以不q求实现大系l的软g人员Q也不是一个好的职业Y件h员,但你只有成ؓ(f)LeaderQ领g个优U的Y件开发团队,才有Z(x)实现q个l极职业目标Q对不对Q?BR><BR>好吧Q不你现在的感受如何,我都谢谢你能dq里Q我不习(fn)惯假歉虚Q就不说什么作者水qx(chng)限,本文抛砖引玉Q欢q大家批评斧正之cȝ客套话了(jin)Q虽然作者水q确实有限。所以我认ؓ(f)你尽有权砸砖,但实在没必要搞回帖、或回骂、或之cȝ玩意儿,我只是尽兴写一点多q从事Y件开发工作的体验Q因此接下来我就高挂免战牌,不回复Q何回帖了(jin)。再ơ谢谢你能有耐心(j)dq里Q希望本文对你有所裨益Q祝你成功!再见Q?/FONT><BR><BR></P><img src ="http://m.tkk7.com/javainthinking/aggbug/7200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-07-06 15:53 <a href="http://m.tkk7.com/javainthinking/archive/2005/07/06/7200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?j)态决定着学习(fn)Java的不同历E…?/title><link>http://m.tkk7.com/javainthinking/archive/2005/05/30/5325.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Mon, 30 May 2005 03:23:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/05/30/5325.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/5325.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/05/30/5325.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/5325.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/5325.html</trackback:ping><description><![CDATA[以前一直以非常急进的心(j)态学java.H然却发觉这样往往使自pȝzR不能java学习(fn)溶入生活当中Q的心(j)情经常躁?q失在生zMؓ(f)?jin)什么当中…?BR>今,醒然?BR>以开阔和q静(rn)的心(j)态去学习(fn)Q也怼(x)获得更多……(q求的激情永q都不会(x)灭Q,因ؓ(f)不能溶入生活的东西,l究?x)被生活所累?BR>今在此胡apQ不知所?<img src ="http://m.tkk7.com/javainthinking/aggbug/5325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-05-30 11:23 <a href="http://m.tkk7.com/javainthinking/archive/2005/05/30/5325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>历史的教训是沉痛的…?/title><link>http://m.tkk7.com/javainthinking/archive/2005/05/28/5292.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Sat, 28 May 2005 05:57:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/05/28/5292.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/5292.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/05/28/5292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/5292.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/5292.html</trackback:ping><description><![CDATA[1.林彪不抽烟不喝酒只活?3?<BR>2.周恩来只喝酒不抽烟,zM(jin)73?<BR>3.毛泽东只抽烟不喝酒,zM(jin)83?BR>4.邓小q_抽烟又喝酒,zM(jin)93?<BR>5.而张学良老将军吃喝嫖赌博h都来Q活?03?<BR>历史的教训是沉痛的…?img src ="http://m.tkk7.com/javainthinking/aggbug/5292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-05-28 13:57 <a href="http://m.tkk7.com/javainthinking/archive/2005/05/28/5292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中tiles的?/title><link>http://m.tkk7.com/javainthinking/archive/2005/05/24/5092.html</link><dc:creator>XL的个性空间和java学习(fn)之旅</dc:creator><author>XL的个性空间和java学习(fn)之旅</author><pubDate>Tue, 24 May 2005 01:05:00 GMT</pubDate><guid>http://m.tkk7.com/javainthinking/archive/2005/05/24/5092.html</guid><wfw:comment>http://m.tkk7.com/javainthinking/comments/5092.html</wfw:comment><comments>http://m.tkk7.com/javainthinking/archive/2005/05/24/5092.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/javainthinking/comments/commentRss/5092.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/javainthinking/services/trackbacks/5092.html</trackback:ping><description><![CDATA[<H3 style="MARGIN: auto 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><FONT color=#cc3300><FONT size=3><FONT color=#a52a2a><span id="tfobgjp" class=title1><SPAN style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">本文以最单而有效的形式记录</SPAN></SPAN><span id="qmgekqw" class=title1><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: 黑体">tiles</SPAN></SPAN><span id="ddqsbav" class=title1><SPAN style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的用过E,以备以后使用时快速参考?/SPAN></SPAN></FONT></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: 黑体"> <P></P></SPAN></FONT></H3> <P style="MARGIN: 0cm 0cm 0pt"><STRONG><SPAN lang=EN-US style="FONT-FAMILY: Arial"><FONT size=3>1</FONT></SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">.</SPAN></STRONG><FONT size=3><STRONG><SPAN style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT face=?hu)?先徏一?/FONT></SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-FAMILY: Arial">layout.jsp</SPAN></STRONG><FONT face=?hu)?<STRONG><SPAN style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">布局面</SPAN></STRONG><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"> <P></P></SPAN></FONT></FONT> <P></P> <P></P> <P></P> <P></P> <P></P><PRE><SPAN lang=EN-US><FONT face=黑体 size=2>******</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"><FONT size=2>   </FONT></SPAN><FONT size=2><SPAN lang=EN-US> <tr><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <td height="113" colspan="2" scope="col"><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <tiles:insert attribute="top"/><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> </td><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">  </SPAN></FONT><FONT size=2><SPAN lang=EN-US> </tr><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">   </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <tr><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <td width="21%" height="409" scope="row"><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <tiles:insert attribute="left"/><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">    </SPAN></FONT><FONT size=2><SPAN lang=EN-US> </td><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">     </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <td width="79%" height="409" scope="row"><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </SPAN></FONT><FONT size=2><SPAN lang=EN-US> <tiles:insert attribute="main"/><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">  </SPAN></FONT><FONT size=2><SPAN lang=EN-US> </td><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体">  </SPAN><SPAN lang=EN-US> </tr></SPAN></FONT></PRE><PRE><SPAN lang=EN-US><FONT face=黑体 size=2>*******</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"><FONT size=2> </FONT></SPAN></PRE><PRE><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">2</SPAN><SPAN lang=EN-US><FONT face=黑体 size=2>.</FONT></SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">新徏一?/SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"> </SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">tiles-defs.xml</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">文gQƈ在其中做相应的配|?/SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">?/SPAN></STRONG></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>*********</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><A ><SPAN style="FONT-FAMILY: 'Courier New'">http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd</SPAN></A></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">"><BR><tiles-definitions><BR> <definition name="member-definition" path="/Jsp/layout.jsp"><BR>  <put name="top" value="/mTop.do"/><BR>  <put name="left" value="/mLeft.do"/><BR>  <put name="main" value="/defaultMmain.do"/><BR> </definition><BR></tiles-definitions></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>*********</FONT></SPAN></PRE><PRE><FONT size=2><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">q样q当于通过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">xml</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">文g定义?jin)一?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">member.jsp.</SPAN></FONT></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"><FONT size=2> </FONT></SPAN></PRE><PRE><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">3.</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">web.xml</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">struts-config.xml</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">web.xml</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">中做相应配置</SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">.</SPAN></STRONG></PRE><PRE><FONT size=2><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">struts-config.xml</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">中配|如下:(x)</SPAN></FONT></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>***********</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">  <plug-in className="org.apache.struts.tiles.TilesPlugin">    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/><BR>   <set-property property="definitions-parser-validate" value="true"/><BR>   </plug-in></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>***********</FONT></SPAN></PRE><PRE><FONT size=2><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">web.xml</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">中配|如下:(x)</SPAN></FONT></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>************</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>   <init-param><BR>    <param-name>definitions-config</param-name><BR>    <param-value>/WEB-INF/tiles-defs.xml</param-value><BR>   </init-param></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>************</FONT></SPAN></FONT></SPAN></PRE><PRE><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">4.</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">调用</SPAN></STRONG><STRONG><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">Tiles</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">lg</SPAN></STRONG></PRE><PRE><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">Tiles</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">lg是通过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">Struts Action</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">来调用的Q在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">struts-config.xml</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">中做如下</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">action</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">配置Q?/SPAN></FONT></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>*************</FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>      <action         path="/member"         parameter="member-definition"         type="org.apache.struts.actions.ForwardAction"/></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=2>**************</FONT></SPAN></PRE><PRE><FONT size=2><FONT face=Arial><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">然后可以通过讉K</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">/member.do</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">讉K相当?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">member.jsp</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">Tiles</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">lg</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">.</SPAN></FONT></FONT></PRE><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><PRE><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt"></SPAN></B></PRE><PRE><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt">II ---------------------tiles</SPAN></B><B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt">的高U?/SPAN></B><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt">--------------------------<P></P></SPAN></B></PRE><PRE><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt"> <P></P></SPAN></B></PRE><PRE><B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt"></SPAN></B><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt"><P><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt">1 .tiles</SPAN><B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt; mso-bidi-font-size: 10.0pt">lg的嵌?/SPAN></B></P></SPAN></B></PRE><PRE><SPAN style="FONT-FAMILY: ?hu)?><FONT face=Arial><SPAN lang=EN-US></SPAN></FONT></SPAN></PRE><PRE><SPAN style="FONT-FAMILY: ?hu)?><SPAN lang=EN-US><P><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt"><FONT size=3><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">然后可以通过讉K</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">/member.do</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">讉K相当?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">member.jsp</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">Tiles</SPAN><SPAN style="FONT-FAMILY: ?hu)? mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt">lg</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt">.</SPAN></FONT></SPAN></P></SPAN></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)?>*************<P></P></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><tiles-definitions><BR> <definition name="member-definition" path="/Jsp/layout.jsp"><BR>  <put name="top" <U>value="menu-definition" type="definition"</U>/><BR>  <put name="left" value="/mLeft.do"/></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><put name="main" value="/defaultMmain.do"/></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">  </SPAN></PRE><FONT size=2><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"></definition></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">************<P></P></SPAN></PRE> <P></P><PRE><SPAN style="FONT-FAMILY: ?hu)?><FONT size=3>其中<SPAN lang=EN-US>menu-definiton作ؓ(f)一个子tileslg而单独配|,q样可以把一个个单的tileslgl合成一个复杂的tileslg?/SPAN></FONT></SPAN></FONT></SPAN></FONT><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: ?hu)?> </PRE> <P></P></SPAN><PRE><SPAN lang=EN-US style="FONT-FAMILY: ?hu)?> <P></P></SPAN></PRE><PRE><B><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: ?hu)? mso-bidi-font-size: 10.0pt">2QTileslg的扩?P></P></SPAN></B></PRE><PRE><SPAN lang=EN-US style="FONT-FAMILY: ?hu)?><FONT size=3>Tileslg的扩展,在有很多tileslg使用相同的模杉K面layout.jsp的时候,特别有用处,我们先定义一个通用的tileslg如base-definitionQ其中组件中相应的地方value讄为空?P></P></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">*************</SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><definition name="base-definition" path="/Jsp/layout.jsp">   <put name="top" value="/mTop.do"/>   <put name="left" value="/mLeft.do"/><BR>  <put name="main" value=" "/><BR> </definition><P>*************</P></SPAN></PRE> <P></P><PRE><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">其它</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">tiles</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">lg可以通过集成它,q把</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">name="main"</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">中的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">value</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">讄成自q有的Q?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><P></P></SPAN></PRE><PRE><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">如:(x)</SPAN></PRE><PRE><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt">**************</SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"><definition name="member-definition" extends="base.definition"></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><put name="main" value="/defaultMmain.do "/></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: 'Courier New'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></definition></SPAN></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: ?hu)? mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">******************</SPAN></PRE></FONT><img src ="http://m.tkk7.com/javainthinking/aggbug/5092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/javainthinking/" target="_blank">XL的个性空间和java学习(fn)之旅</a> 2005-05-24 09:05 <a href="http://m.tkk7.com/javainthinking/archive/2005/05/24/5092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://aizaicc.com" target="_blank">AVƬ߹ۿ</a>| <a href="http://sitefmns.com" target="_blank">999zyz**վëƬ</a>| <a href="http://yy6636.com" target="_blank">a߹ۿƵ</a>| <a href="http://xx2e.com" target="_blank">һ</a>| <a href="http://da666f.com" target="_blank">޹Ʒպ</a>| <a href="http://wwwdf221.com" target="_blank">޾Ƶ߹ۿ</a>| <a href="http://jdvgo.com" target="_blank">Ʒ޾Ʒˬˬ</a>| <a href="http://117949b.com" target="_blank">99þĻƷ</a>| <a href="http://changfafangzhi.com" target="_blank">ѿAVëƬһ</a>| <a href="http://cg-fun.com" target="_blank">޹Ƭ߹ۿ</a>| <a href="http://lfhotline.com" target="_blank">˳ɵӰվ</a>| <a href="http://cqshangshu.com" target="_blank">ҹ뾫Ʒѿ</a>| <a href="http://nh-car.com" target="_blank">պשר2020</a>| <a href="http://7766qq.com" target="_blank">þþƷۺר</a>| <a href="http://91tapp.com" target="_blank">Ůɫվ</a>| <a href="http://qq2071.com" target="_blank">xxxxxƵ</a>| <a href="http://yuyang0752.com" target="_blank">պ</a>| <a href="http://gzmandala.com" target="_blank">ۺɫAPP</a>| <a href="http://9haolc.com" target="_blank">׾Ʒһ</a>| <a href="http://shaonvfushi.com" target="_blank">24Сʱձwwwѵ</a>| <a href="http://guakao88.com" target="_blank">޾ƷMV߹ۿ</a>| <a href="http://lfhuanxin.com" target="_blank">պƷרձ</a>| <a href="http://714747.com" target="_blank">һ붫</a>| <a href="http://zisewang.com" target="_blank">ѿŮƴɫ</a>| <a href="http://xjscr.com" target="_blank">Ƶһվ</a>| <a href="http://wowo123.com" target="_blank">þþþþþþþѾƷ</a>| <a href="http://222xx8.com" target="_blank">ڴƬѿ</a>| <a href="http://gztzbj.com" target="_blank">þþƷĻ鶹</a>| <a href="http://zgjzysfc.com" target="_blank">պƷһ߹ۿ</a>| <a href="http://boyipark.com" target="_blank">91Ƶ</a>| <a href="http://8b22.com" target="_blank">¼ۺͼƬ</a>| <a href="http://k4h3.com" target="_blank">ɫѲ</a>| <a href="http://caobi97.com" target="_blank">ձһձ</a>| <a href="http://xyflash.com" target="_blank">޹ۺϵһƷС˵</a>| <a href="http://mtsp5.com" target="_blank">ձɫƵ</a>| <a href="http://www-13696.com" target="_blank">һػƴƬ߹ۿ</a>| <a href="http://bwgdbjb.com" target="_blank">AVþWWW</a>| <a href="http://c7vl.com" target="_blank">ѿƵվ</a>| <a href="http://ddhlj.com" target="_blank">רȷӰ</a>| <a href="http://js06vip.com" target="_blank">ĻƵ</a>| <a href="http://9qwx.com" target="_blank">ҹav뾫Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>