<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[Java伴侣 - 作品]]></title>
  <subtitle type="html"><![CDATA[关于工作、学习与生活]]></subtitle>
  <id>http://www.javamilk.org/</id>
  <link rel="alternate" type="text/html" href="http://www.javamilk.org/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.javamilk.org/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2007-04-04T03:16:30+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[Java项目作品集]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-04-04T03:16:30+08:00</updated>
	  <published>2007-04-04T03:16:30+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;</p>
<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org//attachments/month_0907/z2009722213122.jpg" /><a target="_blank" href="http://www.javamilk.org/attachments/month_0907/o2009722212737.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">汉语考试网</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2008-10-01</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：三个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：用户注册/登录 <strong>会员操作界面功能</strong>:考生操作功能/报名/成绩查询/证书查询/考点查询/ 模拟考试/考点入口/找回密码/快捷功能说明<br />
    <strong>后台说明</strong>: 用户管理/考生管理/考点管理/ 科目与题库管理/新闻系统/论坛系统台邮件管理/日志管理/系统配置/权限配置/后台证书系统/cms管理系统</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org//attachments/month_0907/r200972316256.jpg" /><a target="_blank" href="http://www.javamilk.org//attachments/month_0907/b2009723162542.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">Blcms3</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2009-01-01</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：12个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：<strong>会员操作界面功能</strong>:用户注册/登录；积分模块；留言、评论、分类信息发布、资料补全、在线购买集成支付宝与在线网银。<br />
    <strong>后台说明</strong>: 五大模型：新闻/商品/Flash电影/分类信息/图库。<br />
    程序安装、栏目及内容添加、内容管理维护、全静态化模式、模板自定义、多管理组权限、插件与模块、数据备份还原、数据导入导出、采集模板、广告模板、专题模板、SEO模板等</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org//attachments/month_0907/92009723164623.jpg" /><a target="_blank" href="http://www.javamilk.org//attachments/month_0907/f200972316482.jpg"><img border="0" alt="" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">门户资讯站（Blcms3架构）</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2009-01-01</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：12个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：<strong>会员操作界面功能</strong>:用户注册/登录；积分模块；留言、评论、分类信息发布、资料补全、在线购买集成支付宝与在线网银。<br />
    <strong>后台说明</strong>: 五大模型：新闻/商品/Flash电影/分类信息/图库。<br />
    程序安装、栏目及内容添加、内容管理维护、全静态化模式、模板自定义、多管理组权限、插件与模块、数据备份还原、数据导入导出、采集模板、广告模板、专题模板、SEO模板等</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org/attachments/month_0804/q2008416145730.jpg" /><a target="_blank" href="http://www.javamilk.org/attachments/month_0804/c200841614468.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">门户商城（Blcms架构）</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2009-4-11</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：两个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：无限分类；积分模块；店中店模块；AJAX模糊搜索；Jmail用户群发模块; 支付宝及网银接口调用模块；GZIP压缩机制；newsFeed格式解析与生成;</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org/attachments/month_0907/2200972220269.jpg" /><a target="_blank" href="http://www.javamilk.org/attachments/month_0907/32009722202645.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品销售站（Smart CMS架构）</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2008-4-15</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：5天</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：无限分类；积分模块；店中店模块；AJAX模糊搜索；Jmail用户群发模块; 支付宝及网银接口调用模块；GZIP压缩机制；newsFeed格式解析与生成;</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org/attachments/month_0802/h2008220165715.jpg" /><a target="_blank" href="http://www.javamilk.org/attachments/month_0802/5200822014376.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">Smart CMS新闻系统(未公开)</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2008-1-15</li>
    <li>站点结构：JSP+SQL2000</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：三个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
    <li>技术重点：全部静态化处理、自动采集防采集、AJAX模糊搜索与标签反链接、newsFeed格式解析与生成</li>
</ul>
</div>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/n2007109213031.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/52007109213058.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">《乐购》商城</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-10-7</li>
    <li>站点结构：JSP+SQL2000</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>使用用途：源码发布</li>
    <li>制作工期：三个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：<a target="_blank" href="http://www.52code.com/">点击查看</a></li>
</ul>
</div>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/c2007109215124.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/c2007109215050.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">吉林大学出版社</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-4-23</li>
    <li>站点结构：JSP+SQL SERVER</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：两个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：<a target="_blank" href="http://www.jidasdbook.com/">点击查看</a></li>
</ul>
</div>
</div>
</div>
<p><br />
&nbsp;</p>
<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org/attachments/month_0804/q2008416145730.jpg" /><a target="_blank" href="http://www.javamilk.org/attachments/month_0804/c200841614468.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">门户资讯加商城</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2008-4-15</li>
    <li>站点结构：JSP+MYSQL</li>
    <li>技术使用：Sturts+Hibernate</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：半年</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2&nbsp;&nbsp;</li>
    <li>技术特点：无限分类；积分模块；店中店模块；AJAX模糊搜索；Jmail用户群发模块; 支付宝及网银接口调用模块；GZIP压缩机制；newsFeed格式解析与生成;</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/h200762205434.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0708/a200783221836.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">省共青团委</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2006-12-02</li>
    <li>站点结构：JSP+SQL server 2000</li>
    <li>技术使用：servlet+storage process</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：两个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：<a target="_blank" href="http://www.jl54.org">点击查看</a></li>
</ul>
</div>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/w20076221321.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0703/e200731721306.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">人事部门管理系统</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2006-11-18</li>
    <li>站点结构：JSP+Struts+SQL server 2000</li>
    <li>技术使用：Sturts+servlet+storage process+国际化</li>
    <li>界面结构：无</li>
    <li>制作工期：两周</li>
    <li>用途说明：学习实践</li>
    <li>需求文档：<a target="_blank" href="http://www.javamilk.org/attachments/month_0703/person_xuqiu.htm">点击查看</a></li>
</ul>
</div>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/3200762214728.jpg" /> <a target="_blank" href="http://files.mebus.com/4sdu.mebus.com/files/1151341433.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text">
<div id="icons-text-title">产品进销存软件</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2006-06-05</li>
    <li>软件语言：JAVA</li>
    <li>技术使用：GUI</li>
    <li>数据库类型：ACC</li>
    <li>制作工期：一周</li>
    <li>用途说明：毕业论文设计</li>
    <li>软件截图：<a target="_blank" href="http://www.javamilk.org/attachments/month_0703/person_xuqiu.htm">查看更多</a></li>
</ul>
</div>
</div>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=125" /> 
	  <id>http://www.javamilk.org/default.asp?id=125</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PHP项目集]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-04-03T19:54:03+08:00</updated>
	  <published>2007-04-03T19:54:03+08:00</published>
		  <summary type="html"><![CDATA[<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org//attachments/month_0907/1200972219527.jpg" /> <a target="_blank" href="http://www.javamilk.org//attachments/month_0907/9200972219537.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">315行业站&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2008-4-28</li>
    <li>站点结构：PHP+FLASH+DIV</li>
    <li>界面结构：DIV+FLASH+CSS</li>
    <li>制作工期：15天</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img">&nbsp;<img alt="" src="http://www.javamilk.org//attachments/month_0907/h200972220250.jpg" /><a target="_blank" href="http://www.javamilk.org//attachments/month_0907/r200972220419.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">时尚类行业站&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2006-11-22</li>
    <li>站点结构：PHP+FLASH+DIV</li>
    <li>界面结构：DIV+FLASH+CSS</li>
    <li>制作工期：15天</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=1192" /> 
	  <id>http://www.javamilk.org/default.asp?id=1192</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ASP网站作品集]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-04-02T23:22:07+08:00</updated>
	  <published>2007-04-02T23:22:07+08:00</published>
		  <summary type="html"><![CDATA[<p>
<link href="images/index.css" type="text/css" rel="stylesheet" /></p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0804/v200841615620.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0804/o200841615658.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">婚庆公司&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-10-11</li>
    <li>站点结构：ASP+FLASH+DIV</li>
    <li>界面结构：DIV+FLASH+CSS</li>
    <li>制作工期：两个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/k2007109215711.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/52007109215644.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">企业门户</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2005-10-11</li>
    <li>站点结构：ASP+FLASH+DIV</li>
    <li>界面结构：DIV+FLASH+CSS</li>
    <li>制作工期：两个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/22007109215612.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/h2007109215538.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品销售平台</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-4-15</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：半个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/b200710922511.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/s200710922433.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品宣传</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-9-23</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：三天</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/22007109215418.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/42007109215331.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">物业网&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-6-09</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：一个月</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/2200710921583.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/s2007109215852.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品销售网&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-8-09</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：两周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/4200710922322.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/g200710922251.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">企业门户&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-8-15</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：两周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/i2007109213517.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/p200710921369.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品销售网站&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-9-26</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：一周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0711/p20071112143119.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0711/o20071112142542.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品宣传&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-10-08</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：一周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0711/320071112142816.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0711/b20071112142749.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">企业门户&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-10-28</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：一周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>
<p><br />
&nbsp;</p>
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0711/n2007111214309.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0711/k20071112142842.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a></div>
<div id="icons-text-title">产品销售&nbsp;</div>
<div id="icons-text-contenct">
<ul>
    <li>完成日期：2007-11-10</li>
    <li>站点结构：ASP+DIV</li>
    <li>界面结构：DIV+CSS</li>
    <li>制作工期：一周</li>
    <li>兼容情况：兼容IE6/7、Opera9、Firefox1/2</li>
    <li>作品样列：点击查看</li>
</ul>
</div>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=241" /> 
	  <id>http://www.javamilk.org/default.asp?id=241</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PJBlog skin作品集]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-04-01T19:41:29+08:00</updated>
	  <published>2007-04-01T19:41:29+08:00</published>
		  <summary type="html"><![CDATA[<link href="images/index.css" type="text/css" rel="stylesheet" />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/e20076223232.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0708/y200783222725.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">从容之美II (The beauty of easiness II)</div>
<div id="icons-text-contenct">
<li>完成日期：2007-06-02 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：一天 </li>
<li>兼容情况：兼容IE6/7、Opera9、Firefox1/2 </li>
<li>安装类型：支持动/静态日志模式 </li>
<li><a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=10&amp;aid=33">下载此skin</a>&nbsp; <a href="http://10mt.vip.16nc.cn/img/skin/The beauty of easiness II.rar">备用skin</a> </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/5200762203331.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/m20071019123035.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">从容之美 (The beauty of easiness)</div>
<div id="icons-text-contenct">
<li>完成日期：2007-06-01 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：三天 </li>
<li>兼容情况：兼容IE6/7、Opera9、Firefox1/2 </li>
<li>安装类型：支持动/静态日志模式 </li>
<li>安装说明：<a target="_blank" href="http://www.new321.com/article.asp?id=414">点击查看</a> </li>
<li><a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=9&amp;aid=32">下载此skin</a>&nbsp;&nbsp; <a href="http://10mt.vip.16nc.cn/img/skin/The beauty of easiness.rar">备用skin</a> </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/c200762194059.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/e2007101913222.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">U4 style No.2 For PJblog</div>
<div id="icons-text-contenct">
<li>完成日期：2007-04-01 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：三天 </li>
<li>兼容情况：兼容IE6/7、Opera9、Firefox1/2 </li>
<li>安装类型：暂只支持动态日志模式 </li>
<li>安装说明：<a target="_blank" href="http://www.new32.com/blog/article.asp?id=120">点击查看</a> </li>
<li><a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=4&amp;aid=28">下载此skin</a>&nbsp;&nbsp; <a href="http://10mt.vip.16nc.cn/img/skin/U4.No2.rar">备用skin</a> </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0706/320076220421.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/x20071031191754.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">U4 style No.1 For PJblog</div>
<div id="icons-text-contenct">
<li>完成日期：2007-04-10 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：一周 </li>
<li>兼容情况：兼容IE6、Opera9、Firefox1/2 </li>
<li>安装类型：暂只支持动态日志模式 </li>
<li>安装说明：<a target="_blank" href="http://www.yexu8.com/article.asp?id=119">点击查看</a> </li>
<li><a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=3&amp;aid=30">下载此skin</a>&nbsp; <a href="http://10mt.vip.16nc.cn/img/skin/U4.No1.0422.rar">备用skin</a> </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/v2007109214527.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/f2007109214459.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">艺术类封面</div>
<div id="icons-text-contenct">
<li>完成日期：2007-06-14 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：两天 </li>
<li>兼容情况：兼容IE6、Opera9、Firefox1/2 </li>
<li>安装说明：不提供下载 </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/r2007109214710.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/g2007109214642.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">花溪深处早期版</div>
<div id="icons-text-contenct">
<li>完成日期：2005-01-23 </li>
<li>站点结构：ASP+ACC </li>
<li>界面结构：DIV+CSS </li>
<li>制作工期：两周 </li>
<li>兼容情况：兼容IE6、Opera9、Firefox1/2 </li>
<li>安装说明：不提供下载 </li>
</div>
</div>
</div>
<br />
<div id="icons">
<div id="icons-img"><img alt="" border="0" src="http://www.javamilk.org/attachments/month_0710/r2007109214816.jpg" /> <a target="_blank" href="http://www.javamilk.org/attachments/month_0710/n2007109214838.jpg"><img alt="" border="0" src="http://www.javamilk.org/images/showbig.gif" />放大</a> </div>
<div id="icons-text">
<div id="icons-text-title">平面设计Design</div>
<div id="icons-text-contenct">
<li>完成日期：2002年初 </li>
<li>站点结构：Html </li>
<li>界面结构：Photoshop </li>
<li>制作工期：一周 </li>
<li>兼容情况：兼容IE6，800*600 px </li>
<li>安装说明：不提供下载 </li>
</div>
</div>
</div>
<p><strong>注意事项：<br />
其展示的所有作品均允许自行任意修改，但是请尊重作者的劳动结果，不要擅自修改版权信息。</strong></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=124" /> 
	  <id>http://www.javamilk.org/default.asp?id=124</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[U4 style NO.2皮肤下载]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-04-01T07:33:04+08:00</updated>
	  <published>2007-04-01T07:33:04+08:00</published>
		  <summary type="html"><![CDATA[今天又做了一个4U风格的，弄了半宿，真晕啊 <img src="http://www.javamilk.org/images/smilies/Face_09.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/>。这个比上次那个要简约一些吧，没那么炫耀，内敛？<br/><br/>风格名称：U4 style No.2<br/>制作时间：2007.03.31<br/>发 布 人 ：blurxx<br/>主要参考皮肤：U4风格、ikk-Clear和licns.com/blog<br/><br/>-----安装说明（必读）:<br/>将压缩包内文件夹(class,skins,common,images)覆盖到PJBlog对应文件夹内即可。<br/>本皮肤需替换PJBlog部分源文件（可自行修改，请参见附录），请注意自行备份源文件！包括：<br/><br/>class/cls_default.asp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//实现日志其他信息链接布局修改<br/>common/cache.asp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //实现标题前图标的效果<br/><br/><br/>截图：<br/><img src="http://www.javamilk.org/attachments/month_0705/v2007524133758.jpg" border="0" alt=""/><br/><br/>ps:顶部logo已做成psd文件，可自己修改.<br/><span style="color:Red">此款皮肤暂时只支持“动态日志模式”，安装之前请详细阅读说明文档</span><br/><br/><br/><strong>下载地址</strong>:<a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=4&amp;aid=28" rel="external">U4 style NO.2 for PJblog</a><br/><br/><strong>PS:由于服务器缘故，部分时间可能无法下载到附件，如遇此种情况请稍候再试。或加QQ：133444000，在网络硬盘中也有此附件！</strong>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=120" /> 
	  <id>http://www.javamilk.org/default.asp?id=120</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SEO项目集]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-03-31T19:54:59+08:00</updated>
	  <published>2007-03-31T19:54:59+08:00</published>
		  <summary type="html"><![CDATA[<h3 style="color: red">A站（BLSEO架构）<br />
&nbsp;</h3>
<p style="text-align: center"><img alt="" src="http://www.javamilk.org//attachments/month_0908/v2009812201422.jpg" /><br />
图1，09年8月12日截图</p>
<p><strong>项目描述：</strong>从图上可见，网站于09年6月23日完成，<span style="color: #ff0000">运行50天。</span>最高当日流量6898独立IP，并不断增加中。此站<span style="color: #ff0000">针对某类关键词</span>流量引导。 有较强商业目的性，不宜公布网址。</p>
<p><strong>软件后台：</strong></p>
<p style="text-align: center;"><img src="http://www.javamilk.org/download.asp?id=213" width="500" height="628" alt="" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=1203" /> 
	  <id>http://www.javamilk.org/default.asp?id=1203</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[U4 style No.1皮肤下载（修正版）]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-03-30T00:00:38+08:00</updated>
	  <published>2007-03-30T00:00:38+08:00</published>
		  <summary type="html"><![CDATA[一直很喜欢wp中的4U风格，可惜一直没有人移植，所以就自己动手移植了下。 <img src="http://www.javamilk.org/images/smilies/Face_05.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/><br/>风格名称：U4 style No.1 Final<br/>制作时间：2007.03.31<br/>发 布 人 ：blurxx<br/>主要参考皮肤：wendy&#39;s blog（ziyou8.com/blog/）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bigik Curiously Green Mod&nbsp;&nbsp;Ver.1.3<br/><br/><span style="color:Red">此款皮肤的移植已经过原作者的同意后移植</span><br/><br/><strong>移植后的截图</strong>：<br/><img src="http://www.javamilk.org/attachments/month_0705/p2007524133157.jpg" border="0" alt=""/><br/><br/><br/>==========<br/>07/4.15-全面修正版：<br/>无需自己写CCS来调整中栏布局<br/>弥补原skin下的不足：修正火狐下无显示错误；各种分辨率下无显示错误；缩小窗口下无显示错误。<br/>==========<br/><br/><br/><br/><strong>安装说明</strong>（必读）:<br/>将压缩包内文件夹(class,skins,common,images)覆盖到PJBlog对应文件夹内即可。<br/>本皮肤需替换PJBlog部分源文件（可自行修改，请参见附录），请注意自行备份源文件！包括：class/cls_default.asp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//实现日志标题小日历以及日志其他信息链接布局修改<br/>common/function.asp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//实现日志标题小日历<br/>common/cache.asp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //实现顶部导航菜单的Tab效果<br/><br/><br/>安装说明：<br/>此皮肤暂时只适用于<span style="color:Red">动态日志模式</span> ，请详细阅读说明文档。把压缩包里面的文件覆盖在PJblog的根目录下。<br/>中栏的显示需要在default.asp和article.asp中插入代码，找到这段代码：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code88920);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code88920>&lt;div id=&#34;innersidebar&#34;&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id=&#34;sidebar-topimg&#34;&gt;&lt;!--工具条顶部图象--&gt;&lt;/div&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&lt;%=side_html%&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id=&#34;sidebar-bottomimg&#34;&gt;&lt;/div&gt;<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp; &lt;/div&gt;</div></div><br/>其后插入<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code66084);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code66084>&lt;div id=&#34;centerbar&#34;&gt;&lt;!--#include file=&#34;centerbar.asp&#34; --&gt;&lt;/div&gt;</div></div><br/>即可。<br/><br/>另外，myblogtop.psd文件与top_22.psd文件分别对应博客上的主、副logo.建议自行修改！<br/><br/><br/>＝＝＝＝＝＝＝＝＝＝＝漂亮的分割线＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br/>皮肤版权申明: 上款皮肤我发现有个别的站长直接将我所有的信息全部都删掉了。有甚者，连我站LOGO都不改，先去改版权。在此请允许我鄙视下你们的行为。若这款皮肤再有类似情况出现，本人将不再提供任何皮肤下载。请个别的人尊重他人的劳动成果。<br/><br/><br/><span style="color:Red">下载地址</span>：<a target="_blank" href="http://new321.uu1001.com/job.php?predomain=new321&amp;action=download&amp;pid=tpc&amp;tid=3&amp;aid=30" rel="external">点击下载</a><br/><br/><strong>PS:由于服务器缘故，部分时间可能无法下载到附件，如遇此种情况请稍候再试。或加QQ：133444000，在网络硬盘中也有此附件！</strong>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=119" /> 
	  <id>http://www.javamilk.org/default.asp?id=119</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[人事部门管理系统(3)]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-03-27T22:02:27+08:00</updated>
	  <published>2007-03-27T22:02:27+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实从上面两篇文章已经可以大体看出这个项目的思路来了，所以此篇文章不再讲述其他三个超链接的功能，接下来我们讲讲涉外功能，如预处理功能、国际化、以某种软件打开（如txt）和页面显示出的时间变化。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了页面可以显示中文，我们首先利用sturts的一个扩展功能，可以实现（相当于servlet中的过滤功能）：<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code28608);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code28608><br/> &lt;controller contentType=&#34;text/html;charset=UTF-8&#34; locale=&#34;true&#34; processorClass=&#34;companypj.MyProRequestProcessor&#34; /&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struts_config中的controller标签写入这样的代码，表明在每次处理代码之前先进入MyProRequestProcessor类里面，我们看下这个类：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code65588);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code65588><br/>import o&#114;g.apache.struts.action.RequestProcessor;<br/>import javax.servlet.http.HttpServletRequest;<br/>import javax.servlet.http.HttpServletResponse;<br/>import o&#114;g.apache.struts.tiles.TilesRequestProcessor;<br/><br/>public class MyProRequestProcessor extends TilesRequestProcessor<br/>{<br/>protected boolean processPreprocess (HttpServletRequest request,<br/>HttpServletResponse response)<br/>{<br/>try<br/>{<br/>request.setCharacterEncoding(&#34;UTF-8&#34;);<br/>//other code<br/>}<br/>catch(Exception e){}<br/>return true;<br/>}<br/>}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为页面jsp使用的是utf-8，所以这里也做了下utf-8的预处理。重写原来的processPreprocess()方法，这个方法在父类TilesRequestProcessor里面是一个空的方法。为了方便我们以后使用，俗称的预处理功能。<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面我们看一下struts中的国际化配置：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code54648);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code54648><br/>&lt;message-resources parameter=&#34;ApplicationResources&#34; /&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实在不愿意说国际化，这个工作就是民工的活，简单且繁重。。pass<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面还有两个插件，一个是tiles框架，一个validator框架，都是struts中的经典：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code34353);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code34353>&lt;plug-in className=&#34;org.apache.struts.tiles.TilesPlugin&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property=&#34;definitions-config&#34; value=&#34;/WEB-INF/tiles-congfig.xml&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property=&#34;definition-parser-validate&#34; value=&#34;true&#34;/&gt;<br/>&nbsp;&nbsp;&lt;/plug-in&gt;<br/>&nbsp;&nbsp;&lt;plug-in className=&#34;org.apache.struts.validator.ValidatorPlugIn&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property=&#34;pathnames&#34; value=&#34;/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml&#34; /&gt;<br/>&nbsp;&nbsp;&lt;/plug-in&gt;</div></div><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;细心的朋友可能发现在sidebar页面有一个小太阳或小月亮的图标，后面跟随时间，来看看那段代码的实现吧：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在jsp页面有这样两行代码，一个是调出年月日，一个是调出图标：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code95237);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code95237><br/> &lt;%=companypj.OtherBean.getTime()%&gt;<br/> &lt;img src=&#34;&lt;%=companypj.OtherBean.bgPhoto()%&gt;&#34; alt=&#34;&#34; &gt;<br/></div></div><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; 下面我们查看一下OtherBean类：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code12586);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code12586><br/>import java.util.*;<br/>import java.text.SimpleDateFormat;<br/><br/>public class OtherBean {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static String getTime() {<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date now = new Date();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleDateFormat smpDateFormat =<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new SimpleDateFormat(&#34;yyyy-MM-dd&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String buf = smpDateFormat.format(now);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return buf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public static String bgPhoto() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GregorianCalendar calendar = new GregorianCalendar();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String bgcolor = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String path1=&#34;img/time/1.gif&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String path2=&#34;img/time/2.gif&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int hour = calendar.get(Calendar.HOUR_OF_DAY)+8;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(hour&gt;6&amp;&amp;hour&lt;18)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgcolor=path1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//return bgcolor;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(hour&lt;=6)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgcolor=path2;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//return bgcolor;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(hour&gt;=18)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgcolor=path2;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//return bgcolor;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(hour);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(bgcolor);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return bgcolor;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String arg[]) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new OtherBean().bgPhoto();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里就可以清楚的看到为了图片会变化的原因了。另外，因为在虚拟机JVM上面跑，用的是GMT时间，必须+8才能是北京时间。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>另外值得说一下的是，在超链接“查看员工”的时候，有一个以txt打开某员工的信息（为了方便保存档案，大多情况下是Excel，大同小异），它的处理过程是这样的：</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code13654);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code13654><br/>&lt;html:link page=&#34;/link4_one_loaddown.do&#34; paramId=&#34;id&#34; paramName=&#34;ID&#34;&gt;&lt;bean:message key=&#34;lable.emp.read.open&#34;/&gt;&lt;/html:link&gt;<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在配置文件中的代码：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code10450);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code10450>&lt;action input=&#34;/link4_one_view.jsp&#34; path=&#34;/link4_one_loaddown&#34; parameter=&#34;link4_one_loaddown&#34; type=&#34;companypj.LoadDownAction&#34; validate=&#34;false&#34; &gt;<br/>&lt;forward name=&#34;link4_one_success&#34; path=&#34;/link4_one_view.jsp&#34;&gt;<br/>&lt;/forward&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接着我们找到LoadDownAction：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code20063);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code20063><br/>import o&#114;g.apache.struts.action.ActionMapping;<br/>import o&#114;g.apache.struts.action.ActionForm;<br/>import javax.servlet.http.HttpServletRequest;<br/>import javax.servlet.http.HttpServletResponse;<br/>import o&#114;g.apache.struts.action.ActionForward;<br/>import o&#114;g.apache.struts.action.Action;<br/>import java.util.Collection;<br/>import javax.sql.*;<br/>import o&#114;g.apache.commons.logging.LogFactory;<br/>import o&#114;g.apache.commons.logging.Log;<br/>import o&#114;g.apache.struts.validator.DynaValidatorForm;<br/>import java.io.*;<br/><br/>public class LoadDownAction extends Action {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public ActionForward execute(ActionMapping mapping, ActionForm form,<br/>&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; HttpServletRequest request,<br/>&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; HttpServletResponse response) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // DynaValidatorForm empDynForm = (DynaValidatorForm) form;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.ServletOutputStream servletoutputstream = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSource ds = getDataSource(request);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log log = LogFactory.getLog(&#34;A&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String type = mapping.getParameter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (type.equals(&#34;link4_one_loaddown&#34;)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File f = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream fileinputstream = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String downloadfilepath = &#34;/WEB-INF/download/&#34;;//定义temp文件存在的目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filename = &#34;testDownload.txt&#34;;//文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String path= request.getRealPath(&#34;/&#34;);//表示网站所在文件夹<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filepathname = path + downloadfilepath;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写入文件完成<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean = new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeVO emp = empbean.getEmployee(request.getParameter(&#34;id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读出文件开始<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f = new File(filepathname, filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.cr&#101;ateNewFile();//创建文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoadDownBean loadbean=new LoadDownBean();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadbean.writeFile(emp,f); //把人员信息和具体文件传入，写文件的具体过程<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//做读出过程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileinputstream = new FileInputStream(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filepathname+ filename);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;servletoutputstream = response.getOutputStream();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.reset();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(&#34;Content-disposition&#34;,<br/>&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; &#34;attachment; filename=&#34; + filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(&#34;text/plain;charset=gb2312&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int j = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int k = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte abyte0[] = new byte[1024];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ((k = fileinputstream.read(abyte0)) != -1) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j += k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;servletoutputstream.write(abyte0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} finally {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//最后删除文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;servletoutputstream.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileinputstream.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File f1 = new File(filepathname+filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (f1.exists()) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&#34;linnan&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1.del&#101;te(); //删除File.txt文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception ex1) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex1.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//跳转回页完成，把原来信息再显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp = empbean.getEmployee(request.getParameter(&#34;id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.EMP_KEY, emp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(&#34;link4_one_success&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRealPath(&#34;/&#34;) 表示网站所在文件夹；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRealPath(&#34;. /&#34;) 表示本网页所在文件夹；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRealPath(&#34;. . /&#34;) 表示本网页文件夹的上层文件夹；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面每一部我都写了注释，方便理解，再来看下LoadDownBean，它就是做在txt里面的具体写入些什么，包括简单的排版：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code91223);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code91223><br/>package companypj;<br/><br/>import o&#114;g.apache.commons.logging.LogFactory;<br/>import o&#114;g.apache.commons.logging.Log;<br/>import java.io.*;<br/><br/><br/>public class LoadDownBean {<br/>&nbsp;&nbsp;&nbsp;&nbsp;Log log = LogFactory.getLog(&#34;A&#34;);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public void writeFile(EmployeeVO emp, File f) {<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileWriter fw = new FileWriter(f);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedWriter bw = new BufferedWriter(fw);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] line = new byte[128];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;*****************************&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;*****************************&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;员工ID号：&#34;+emp.getId());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine(); //断行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//bw.write(&#34;\r\n&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;员工姓名：&#34;+emp.getName());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;*****************************&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;*****************************&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;性别：&#34;+emp.getSex());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;年龄：&#34;+emp.getAge());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;月薪：&#34;+emp.getSalary());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;所在部门：&#34;+emp.getDepartment());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;婚否：&#34;+emp.getMarriage());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;家庭住址：&#34;+emp.getAddress());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;联系电话：&#34;+emp.getPhone());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.newLine();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;员工简历：&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(&#34;\r\n&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write(emp.getResume());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.flush(); //将数据更新至文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fw.close(); //关闭文件流<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.close();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// out.println(e);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了，该讲的重点，到这里都讲完了！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=6" /> 
	  <id>http://www.javamilk.org/default.asp?id=6</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[人事部门管理系统(2)]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-03-19T15:51:23+08:00</updated>
	  <published>2007-03-19T15:51:23+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接着上次的继续说，上次说了讲的是“雇员添加”，程序步骤大致是：首页——遍历出部门列表——加入添加雇员表单——提交到存储过程——返回；但同时我忽略了一个前提：如果部门列表值为if(x.equest.(&#34;&#34;)||x==null)。那么应该给出一个error值，然后转发到“部门添加&#34;页。但<span style="color:Red">此种情况只会在程序第一次运行初始化的时候出现</span>，而程序设计者在编写时就会在数据库中加入一些测试值，所以不会应该的使用情况。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加部门表单页与上篇文章说的添加添加雇员程序思路大体一致，这里就不再赘述。下面我们看一下”管理部门员工 “功能的实现，主要思想：遍历和删除。如图：<br/><br/><div align="center"><img src="http://www.javamilk.org/attachments/month_0703/d2007319155113.jpg" border="0" alt=""/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库里写的东西很杂，呵呵。但我们主要关注的还是程序的实现！这个链接是link3.do，我们来看一下它在Stuts-config中的配置：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code6475);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code6475><br/>&lt;action path=&#34;/link3&#34; parameter=&#34;link3&#34; type=&#34;companypj.Link3Action&#34; validate=&#34;false&#34; &gt;<br/>&lt;forward name=&#34;link3_success&#34; path=&#34;/link3.jsp&#34;&gt;<br/>&lt;/forward&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里看到，没有作任何处理，它直接转到了<strong>Link3Action</strong>。那么我们看这个Atcion是怎么写的：<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code32369);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code32369><br/>if (type.equals(&#34;link3&#34;)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;return_link3..&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DepartmentBean depbean=new DepartmentBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection DEPARTMENTS=depbean.getDepartments(); //取得所有部门信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.DEPARTMENTS_KEY,DEPARTMENTS);//request到下一个页面<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_LINK3_SUCCESS);//给sturts mapping传一个值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了，转到getDepartments()：<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code7802);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code7802><br/>public Collection getDepartments()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;提交所有部门数据集合&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.getDepartmentsHelper(Constants_sql.DEPARTMENT_ALL_SQL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里还是看不出什么，只是借助了Constants_sql类得到一个常量，上次我没有详细介绍过这里，这次我们来看看这个常量的定义：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code81503);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code81503><br/>public class Constants_sql {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public Constants_sql() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String DEPARTMENT_ADD_SQL=<br/>&#34;ins&#101;rt into department(name,description,leader,phone,address,starttime,info)values(?,?,?,?,?,?,?)&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String DEPARTMENT_ALL_SQL=&#34;sel&#101;ct * from department wh&#101;re name!=&#39;无部门&#39; o&#114;der by id desc&#34;; //这里就是我们调用的常量<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String EMP_ADD_SQL=<br/>&#34;ins&#101;rt into employee (name,sex,age,salary,department,marriage,address,phone,resume) values(?,?,?,?,?,?,?,?,?)&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String EMP_ALL_SQL=&#34;sel&#101;ct * from employee wh&#101;re department!=&#39;无部门&#39; o&#114;der by id desc&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String EMP_TEMP_ALL_SQL=&#34;sel&#101;ct * from employee wh&#101;re department=&#39;无部门&#39; o&#114;der by id desc&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//public static final String<br/><br/>}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEPARTMENT_ALL_SQL：把table department中所有name非&#39;无部门&#39;的记录取出，并降序排列。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回到getDepartments()方法，这个方法就是为了更好的解耦合，之后它再调用getDepartmentsHelper()方法，并且传入了一个String DEPARTMENT_ALL_SQL；getDepartments()方法：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code33842);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code33842><br/>private Collection getDepartmentsHelper(String sql) //遍历集合 帮助方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection list=new ArrayList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn=ds.getConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stmt=conn.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rs=stmt.executeQuery(sql);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rs.next())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DepartmentVO departmentvo=new DepartmentVO();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // log.info(&#34;取部门数据开始&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setId(rs.getInt(&#34;id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setName(rs.getString(&#34;name&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setDescription(rs.getString(&#34;description&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(rs.getString(&#34;description&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setLeader(rs.getString(&#34;leader&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setPhone(rs.getString(&#34;phone&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setAddress(rs.getString(&#34;address&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setStarttime(rs.getString(&#34;starttime&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setInfo(rs.getString(&#34;info&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(departmentvo);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // log.info(&#34;取部门数据结束&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.getMessage();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return list;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回list，而list里面就是我们要的部门集合；拿着它返回页面遍历即可；就是上面的这两句：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code76826);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code76826><br/>request.setAttribute(Constants.DEPARTMENTS_KEY,DEPARTMENTS);//request到下一个页面<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_LINK3_SUCCESS);//给sturts mapping传一个值<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回的时候依旧是先调用一个常量类（我发现我那时写程序真够BT的了,BT..病态）<br/>&nbsp;&nbsp;&nbsp;&nbsp;<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code74431);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code74431><br/>public static final String RETURN_LINK3_SUCCESS=&#34;link3_success&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把link3_success信息传给strut_config来处理，Struts这句话是用来接收它的：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code28501);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code28501><br/>&lt;forward name=&#34;link3_success&#34; path=&#34;/link3.jsp&#34;&gt;<br/></div></div><br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了，现在我们来看看link3.jsp的组成，Tiles配置：<br/>&lt;definition extends=&#34;layout-definition&#34; name=&#34;link3-definition&#34;&gt;<br/>&lt;put name=&#34;content&#34; value=&#34;return/departmentManage.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;/definition&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从这里看到，实际把权的是departmentManage.jsp页。看看它的信息：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code92848);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code92848><br/>&lt;table cellpadding=&#34;0&#34; cellspacing=&#34;5&#34;&nbsp;&nbsp;width=&#34;100%&#34; &gt;<br/>&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:message key=&#34;lable.dept.row.id&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:message key=&#34;lable.dept.row.name&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:message key=&#34;lable.dept.row.leader&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:message key=&#34;lable.dept.row.add.emp&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:message key=&#34;lable.dept.row.del&#101;te.emp&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;100%&#34; colspan=&#34;5&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;page:pager dz=&#34;5&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;%int i=1; %&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id=&#34;departments&#34; name=&#34;DEPARTMENTS&#34; type=&#34;companypj.DepartmentVO&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;table border=&#34;1&#34; cellpadding=&#34;0&#34; cellspacing=&#34;1&#34; style=&#34;border-collapse: collapse&#34;&nbsp;&nbsp;width=&#34;100%&#34; &gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;page:item nr=&#34;&lt;%=i++%&gt;&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:write name=&#34;departments&#34; property=&#34;id&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:write name=&#34;departments&#34; property=&#34;name&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;bean:write name=&#34;departments&#34; property=&#34;leader&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;&lt;html:link page=&#34;/link3_add.do&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:message key=&#34;lable.dept.add.emp&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/html:link&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;14%&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:define id=&#34;dep_id&#34; name=&#34;departments&#34; property=&#34;id&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/bean:define&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:link page=&#34;/link3_del&#101;te.do&#34; paramId=&#34;dep_id&#34; paramName=&#34;dep_id&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:message key=&#34;lable.dept.del&#101;te.emp&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/html:link&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;&lt;/page:item&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br/>&#160;&#160;&#160;&#160;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/page:pager&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;center&gt;<br/>&lt;p&gt;<br/>&lt;page:bt/&gt;<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%@taglib uri=&#34;/WEB-INF/jpager.tld&#34; prefix=&#34;page&#34;%&gt;这里的pager标签是分页用的插件，我们先不去考虑它，在最后的时候我再讲关于这个项目外的一些扩展功能。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从上面jsp我们可以看到logic遍历，还有一些很重要的东西，一个是<strong>添加员工到部门</strong>的功能，主要我的话，这个和添加新员工有一定的区别，是把一些&#39;‘无部门’的员工加入到该部门。为什么会出现&#34;无部门&#34;员工呢？出于种种原因的考虑，主要是因为员工档案的重要性，所以这个项目的删除员工并非是作del&#101;te操作，还是up&#100;ate,把某员工的部门属性到上<strong>标记</strong>。也考虑到新员工不一定会直接配分到某部门，可能再过一段时间。再来还有一个逻辑性的问题，在删除一个部门的时候，员工必须先转移到别的部门，这么以来。删除员工的操作势必不可行。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code26365);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code26365>&lt;html:link page=&#34;/link3_add.do&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:message key=&#34;lable.dept.add.emp&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;</div></div><br/><br/>如图：<br/><div align="center"><img src="http://www.javamilk.org/attachments/month_0703/52007319163739.jpg" border="0" alt=""/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这里，我们就可以看到所有”无部门“人员列表。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsp页面，我全部是用&lt;bean:message标签来做的，lable.dept.add.emp对应资源文件中的uc码，也就是”添加“。link3_add.do，那我们跟着这条线走吧。。<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code99257);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code99257>&lt;action path=&#34;/link3_add&#34; parameter=&#34;link3_add&#34; type=&#34;companypj.Link3Action&#34; validate=&#34;false&#34;&gt;</div></div><br/><br/>Link3Action:<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code7138);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code7138><br/>if(type.equals(&#34;link3_add&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;link3_temp..&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean=new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection EMPSTEMP=empbean.getTempEmps(); //这里就看到了取得TEMP员工的方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.EMPS_TEMP_KEY,EMPSTEMP);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_LINK3_ADD_SUCCESS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;看一下getTempEmps()方法，下面的一系列程序是在做找到所有没有部门的员工：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code56936);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code56936><br/>public Collection getTempEmps() { //获得所有无部门的员工<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.getEmployeesHelper(Constants_sql.EMP_TEMP_ALL_SQL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里值得注意的是SQL的写法EMP_TEMP_ALL_SQL：<br/> <div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code7543);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code7543>public static final String EMP_TEMP_ALL_SQL=&#34;sel&#101;ct * from employee wh&#101;re department=&#39;无部门&#39; o&#114;der by id desc&#34;;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接着看实质的方法getEmployeesHelper：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code29165);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code29165><br/>private Collection getEmployeesHelper(String sql) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection list = new ArrayList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn = ds.getConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stmt = conn.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rs = stmt.executeQuery(sql);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (rs.next()) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeVO employeeVO = new EmployeeVO();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;取人员信息开始&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setId(rs.getInt(&#34;id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setName(rs.getString(&#34;name&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setSex(rs.getString(&#34;sex&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setAge(rs.getInt(&#34;age&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setSalary(rs.getString(&#34;salary&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setDepartment(rs.getString(&#34;department&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setMarriage(rs.getString(&#34;marriage&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setAddress(rs.getString(&#34;address&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setPhone(rs.getString(&#34;phone&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employeeVO.setResume(rs.getString(&#34;resume&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(employeeVO);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;取人员信息结束&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return list;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK，已经取得list集合，返回，并遍历显示到页面即可！<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 下面这个是删除部门中员工的链接：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code17415);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code17415><br/>&lt;bean:define id=&#34;dep_id&#34; name=&#34;departments&#34; property=&#34;id&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/bean:define&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:link page=&#34;/link3_del&#101;te.do&#34; paramId=&#34;dep_id&#34; paramName=&#34;dep_id&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:message key=&#34;lable.dept.del&#101;te.emp&#34;/&gt;<br/></div></div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;先要确定某一部门的id,得到id后，相应的去数据库中找到集合。如图：<br/><div align="center"><img src="http://www.javamilk.org/attachments/month_0703/r2007319165030.jpg" border="0" alt=""/></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Action中的取得方法：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code52664);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code52664><br/>if(type.equals(&#34;link3_del&#101;te&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;del&#101;te ready..&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean=new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection DEPTEMPS=empbean.getDepartemtDemployees(request.getParameter(&#34;dep_id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.getSession().setAttribute(&#34;DEP_ID&#34;,request.getParameter(&#34;dep_id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//保存部门ID号，以便删除之后可以返回页<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.DEPT_EMPS_KEY,DEPTEMPS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_LINK3_Del&#101;te_READY);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 最先调用的方法getDepartemtDemployees()：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code46918);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code46918><br/>public Collection getDepartemtDemployees(String dep_id) { //指定部门中的员工<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;该部门是：&#34; + dep_id);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String sql_dep =<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;sel&#101;ct * from employee wh&#101;re department=(sel&#101;ct name from department wh&#101;re id=&#34; +<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dep_id + &#34;)&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(sql_dep);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.getEmployeesHelper(sql_dep);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里的SQL挺有意思，带有子查询，当然写法很多，不止这一种。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着转入帮助方法getEmployeesHelper();帮助方法都是一样，上面已经写出，不再重复。不过写到现在，可以明显看出，实际操作的方法并不多，都是经过bean前的一个方法中转——解耦。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了，接下来说一下删除部门中的某一个成员：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 上面说到把某部门的所有成员遍历到页面显示，返回的集合是：<br/>&nbsp;&nbsp;&nbsp;&nbsp; <div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code90712);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code90712>public static final String DEPT_EMPS_KEY=&#34;DEPTEMPS&#34;;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp; 下面到对应的jsp页面来看下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code32774);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code32774><br/>&lt;logic:iterate id=&#34;dept_emps&#34; name=&#34;DEPTEMPS&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;page:item nr=&#34;&lt;%=i++%&gt;&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;table border=&#34;0&#34; cellpadding=&#34;0&#34; cellspacing=&#34;0&#34; style=&#34;border-collapse: collapse&#34; width=&#34;100%&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;33%&#34;&gt;&lt;bean:write name=&#34;dept_emps&#34; property=&#34;id&#34;/&gt;��&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;33%&#34;&gt;&lt;bean:write name=&#34;dept_emps&#34; property=&#34;name&#34;/&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width=&#34;34%&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:define id=&#34;ID&#34; name=&#34;dept_emps&#34; property=&#34;id&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:link page=&#34;/link3_del&#101;ted.do&#34; paramId=&#34;id&#34; paramName=&#34;ID&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:message key=&#34;lable.del&#101;te.emp.this&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/html:link&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/page:item&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里可以看出，name已经接收了返回的集合，并做了遍历，而删除按钮lable.del&#101;te.emp.this做了一个超链，带有传参：传的是员工的id号，我们下面看看后台它的运作过程：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code80031);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code80031><br/>if(type.equals(&#34;link3_del&#101;ted&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean=new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empbean.del&#101;teEmployee(request.getParameter(&#34;id&#34;));//删除某个员工<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection DEPTEMPS=empbean.getDepartemtDemployees(String.valueOf(request.getSession().getAttribute(&#34;DEP_ID&#34;)));//再取部门人员<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;转发回页面&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.DEPT_EMPS_KEY,DEPTEMPS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_LINK3_Del&#101;teD_SUCCESS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中间层调用了两个方法，一个是删除员工，为了删除后保持页面的一致性，再重新遍历一下该部门的所有员工：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而部门ID已经存入了session中，为DEP_ID。先看del&#101;teEmployee()：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code64818);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code64818><br/> public void del&#101;teEmployee(String id) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn = ds.getConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stmt = conn.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String sql_up&#100;ate = &#34;up&#100;ate employee set department=&#39;无部门&#39; wh&#101;re id=&#34; +<br/>&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;id + &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(sql_up&#100;ate);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.executeUp&#100;ate(sql_up&#100;ate);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;2&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除方法够简单的，传进id,up&#100;ate把dep字段改成&#34;无部门&#34;就OK。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重新遍历出员工和上一个超级链接做的是一样的工作，然后还是返回刚才的页面，可以看见新的数据。<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=5" /> 
	  <id>http://www.javamilk.org/default.asp?id=5</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[人事部门管理系统(1)]]></title>
	  <author>
		 <name>Java伴侣</name>
		 <uri>http://www.javamilk.org/</uri>
		 <email>blurxx@yahoo.cn</email>
	  </author>
	  <category term="" scheme="http://www.javamilk.org/default.asp?cateID=4" label="作品" /> 
	  <updated>2007-03-17T20:14:55+08:00</updated>
	  <published>2007-03-17T20:14:55+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很长一段时间来，确切的说是两个多月，从年前开始就没有再过多的写程序。主要精力都投入在这个网站上面了，对于Java编程很少去碰。只是偶尔翻翻《核心技术》，不过是蜻蜓点水。前天本想编写一个米店(Domain)的管理系统为自己用，发现编的很吃力。本觉得瞒简单的东西，突然看来如此复杂。编了两天，决定不再写了。去温习一下从前写过的代码。我觉得，这样的话对我的帮助会很大。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面介绍我去年11月编写的一套人事部门管理系统，项目用时一周（需求分析2天，美工设计2天，其余时间为代码实现）。如图：<br/><br/><div align="center"><img src="http://www.javamilk.org/attachments/month_0703/e200731721306.jpg" border="0" alt=""/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需求文档的地址:<a href="http://www.yexu8.com/attachments/month_0703/person_xuqiu.htm" target="_blank" rel="external">http://www.yexu8.com/attachments/month_0703/person_xuqiu.htm</a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从需求文档可以看出，这个项目的布局是由Tiles框架完成的。我们要作的是首先设计出一个完成的框架布局结构页layout.jsp.然后在其中定义其他页面分布位置。此项目共有四部分组成：siderbar.jsp用来作左侧列表选择，header.jsp用来放置logo，footer.jsp用于作者声明，另外一个至关重要的部分是可变的——随着siderbar.jsp的超链接选择而变。有了这种思想以后就可以写tiles-config了：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code64784);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code64784><br/>&lt;definition name=&#34;layout-definition&#34; path=&#34;/layout.jsp&#34;&gt;<br/>&lt;put name=&#34;sidebar&#34; value=&#34;sidebar.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;put name=&#34;header&#34; value=&#34;header.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;put name=&#34;content&#34;&gt;&lt;/put&gt;<br/>&lt;put name=&#34;footer&#34; value=&#34;footer.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;/definition&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从上面可以看出内容是可变的，这段代码是接下来所有代码的父级代码，用于作继承之用。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来作一个内容页：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code9386);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code9386><br/>&lt;definition extends=&#34;layout-definition&#34; name=&#34;index-definition&#34;&gt;<br/>&lt;put name=&#34;content&#34; value=&#34;indexContent.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;/definition&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从name大致可以看出这个是为了index首页来使用的。而在index.jsp页面写入代码<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code22463);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code22463>&lt;%@ page contentType=&#34;text/html; charset=UTF-8&#34; language=&#34;java&#34; %&gt;<br/>&lt;%@ taglib uri=&#34;/WEB-INF/struts-tiles.tld&#34; prefix=&#34;tiles&#34; %&gt;<br/>&lt;tiles:ins&#101;rt definition=&#34;index-definition&#34;&gt;<br/>&lt;/tiles:ins&#101;rt&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样即可，其实我们最关心的是列表(siderbar)及其内容(contents)部分。它们之间的互动性是我们使用tiles框架的原因。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 列表的第一个超链接是&#34;添加员工&#34;：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code36349);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code36349><br/>&lt;html:link page=&#34;/link1.do&#34;&gt;&lt;font color=&#34;#000000&#34; style=&#34;text-decoration: none&#34;&gt;&lt;bean:message key=&#34;link.add.emp&#34;/&gt;&lt;/font&gt;&lt;/html:link&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link.add.emp分别对应两份bundle文件——这里使用了中英文国际化。国际化是一种反复的简单劳动，这里就不多作阐述了。我们关心的是link1.do的走向，看sturts-config：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code94691);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code94691><br/>&lt;action path=&#34;/link1&#34; parameter=&#34;link1&#34; type=&#34;companypj.AddEmployeeAction&#34; validate=&#34;false&#34;&gt;<br/>&lt;forward name=&#34;link1_success&#34; path=&#34;/link1.jsp&#34;&gt;<br/>&lt;/forward&gt;<br/></div></div><br/>进入AddEmployeeAction<br/><br/>图1-1,AddEmployeeAction全部代码:<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code19663);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code19663><br/>public class AddEmployeeAction extends Action {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public ActionForward execute(ActionMapping mapping, ActionForm form,<br/>&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; HttpServletRequest request,<br/>&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; HttpServletResponse response) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DynaValidatorForm empDynForm=(DynaValidatorForm)form;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log log=LogFactory.getLog(&#34;A&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String type=mapping.getParameter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSource ds=getDataSource(request);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(type.equals(&#34;link1&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info(&#34;return_link1..&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DepartmentBean departmentbean=new DepartmentBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Collection onlydep=departmentbean.getOnlyDepartments();//这里转入部门类，取出部门集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getSession().setAttribute(Constants.ONLYDEPARTMENTS_KEY,onlydep);//集合保存，并传入下一页面<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mapping.findForward(Constants_url.RETURN_LINK1_SUCCESS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(type.equals(&#34;link_addemp&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean=new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//String address=empDynForm.get(&#34;address&#34;).toString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empbean.addEmployee(empDynForm);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_ADD_EMP_READY);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/><br/>再来看下面的getOnlyDepartments()方法，用于取出部门的方法<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code18190);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code18190><br/>&nbsp;&nbsp;&nbsp;&nbsp;public Collection getOnlyDepartments()&nbsp;&nbsp;&nbsp;&nbsp; //只找出所有部门的集合,这个方法多此一举，都是动态数据即时更新的，所有没必要用它，当写着玩了～<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection list=new ArrayList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection departments = this.getDepartments();//跳转<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator i = departments.iterator();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(i.hasNext()) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DepartmentVO Onlydepartments=(DepartmentVO) i.next();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;Onlydep:&#34;+Onlydepartments.getName());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Onlydepartments.setName(Onlydepartments.getName()); //筛选后重新放入<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(Onlydepartments);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return list;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。。。不看不知道，当初我还写了不少没用的解释，哈哈！注意这里有个跳转，跳转到另一个方法，接着看：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code49166);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code49166><br/>public Collection getDepartments()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;提交所有部门数据集合&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.getDepartmentsHelper(Constants_sql.DEPARTMENT_ALL_SQL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个方法也只是为了层次清晰和重用性，接着把一条SQL丢给下面赶事实的方法getDepartmentsHelper()：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code56239);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code56239><br/>private Collection getDepartmentsHelper(String sql) //遍历集合 帮助方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection list=new ArrayList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn=ds.getConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stmt=conn.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rs=stmt.executeQuery(sql);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rs.next())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DepartmentVO departmentvo=new DepartmentVO();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;取部门数据开始&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setId(rs.getInt(&#34;id&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setName(rs.getString(&#34;name&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setDescription(rs.getString(&#34;description&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(rs.getString(&#34;description&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setLeader(rs.getString(&#34;leader&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setPhone(rs.getString(&#34;phone&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setAddress(rs.getString(&#34;address&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setStarttime(rs.getString(&#34;starttime&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;departmentvo.setInfo(rs.getString(&#34;info&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(departmentvo);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;取部门数据结束&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.getMessage();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return list;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK，拿到了所有部门的所有信息；回到上面那句：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code61579);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code61579>Onlydepartments.setName(Onlydepartments.getName()); //筛选后重新放入</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看来当时我是想作一个优化，减轻页面的负担，而在后台多了下些功夫，现在想来大可不必，不如直接另写一个找差name的SQL语句。。我当时大脑在想些什么哩。。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回到图1-1中的<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code45557);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code45557>request.getSession().setAttribute(Constants.ONLYDEPARTMENTS_KEY,onlydep);//集合保存，并传入下一页面</div></div><br/>存入session中，返回到添加员工表单；<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code93623);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code93623>&lt;forward name=&#34;link1_success&#34; path=&#34;/link1.jsp&#34;&gt;</div></div><br/><br/><div align="center"><img src="http://www.javamilk.org/attachments/month_0703/j2007317213038.jpg" border="0" alt=""/></div><br/>箭头所指，就是我们刚才作遍历出来的部门集合位置。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回到了link1.jsp,而在tiles中实际表单位置是Cr&#101;ateEmployee.jsp：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code22867);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code22867><br/>&lt;definition extends=&#34;layout-definition&#34; name=&#34;link1-definition&#34;&gt;<br/>&lt;put name=&#34;content&#34; value=&#34;return/Cr&#101;ateEmployee.jsp&#34;&gt;&lt;/put&gt;<br/>&lt;/definition&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面找Cr&#101;ateEmployee.jsp代码，代码太多，我把主要的写上，至于其他部分感兴趣可以去下载我整个项目来看，我提供了下载。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里是拿到部门集合在表单上的遍历：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code8577);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code8577><br/>&lt;html:sel&#101;ct property=&#34;department&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id=&#34;onlydep&#34; name=&#34;ONLYDEPARTMENTS&#34; type=&#34;companypj.DepartmentVO&#34; scope=&#34;session&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value=&#34;&lt;bean:write name=&#34;onlydep&#34; property=&#34;name&#34;/&gt;&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name=&#34;onlydep&#34; property=&#34;name&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/option&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/html:sel&#101;ct&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name拿到了集合，type转型成VO以作分类遍历，scope指定去session中拿。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再来看看表单的提交<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code78006);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code78006>&lt;html:form action=&#34;/link_addemp.do&#34; method=&#34;POST&#34;&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在struts-config中找到：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code43162);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code43162><br/>&lt;action input=&#34;/link1.jsp&#34; name=&#34;EmpForm&#34; path=&#34;/link_addemp&#34; parameter=&#34;link_addemp&#34; <br/>scope=&#34;request&#34; type=&#34;companypj.AddEmployeeAction&#34; validate=&#34;true&#34; &gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看到还是转入AddEmployeeAction,图1-1。但是validate=&#34;true&#34;，表明先要进行表单验证，那么我们就去看一下配置文件validation：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code47694);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code47694><br/>&lt;formset&gt;<br/>&lt;form name=&#34;EmpForm&#34;&gt;<br/>&lt;field property=&#34;name&#34; depends=&#34;required&#34;&gt;<br/>&lt;arg0 key=&#34;label.emp.name&#34;/&gt;<br/>&lt;/field&gt;<br/>&lt;field property=&#34;age&#34; depends=&#34;required&#34;&gt;<br/>&lt;arg0 key=&#34;label.emp.age&#34;/&gt;<br/>&lt;/field&gt;<br/>&lt;field property=&#34;salary&#34; depends=&#34;required&#34;&gt;<br/>&lt;arg0 key=&#34;label.emp.salary&#34;/&gt;<br/>&lt;/field&gt;<br/>&lt;/form&gt;<br/>&lt;/formset&gt;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 简单的让人觉得可怜哈，都不为空就行！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS:这里是作得动态表单，而下一个超链接的部门添加是用了静态表单。别的就没有太多差别，思想都一样！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果验证通过，转入Action中处理，看代码：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code87215);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code87215><br/>if(type.equals(&#34;link_addemp&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeBean empbean=new EmployeeBean(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//String address=empDynForm.get(&#34;address&#34;).toString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empbean.addEmployee(empDynForm);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward(Constants_url.RETURN_ADD_EMP_READY);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEmployee方法把form接收过去：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code42094);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code42094><br/>public void addEmployee(DynaValidatorForm empDynForm) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmployeeVO employeeVO = this.NynaIntoEmp(empDynForm);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String strSQL=&#34;{call demo_empadd(?,?,?,?,?,?,?,?,?)}&#34;;//存储过程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.executeEmpHelper(employeeVO, strSQL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里我作的是一个存储过程：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code50898);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code50898><br/>Cr&#101;ate PROCEDURE demo_empadd <br/>@inparam1 varchar(10),@inparam2 varchar(20),@inparam3 int,<br/>@inparam4 varchar(10),@inparam5 varchar(20),@inparam6 varchar(10),<br/>@inparam7 varchar(20),<br/>@inparam8 varchar(10),@inparam9 varchar(40)<br/> AS ins&#101;rt into employee(name,sex,age,salary,department,marriage,address,phone,resume)values<br/> (@inparam1,@inparam2,@inparam3,@inparam4,@inparam5,@inparam6,@inparam7,@inparam8,@inparam9)<br/>GO<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着再转到executeEmpHelper()方法来作实际工作，这时传入了一个VO，和一个存储过程的指令：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code77601);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code77601><br/>private void executeEmpHelper(EmployeeVO employeeVO, String sql) { //帮助方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection conn = ds.getConnection();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.sql.CallableStatement pstm=conn.prepareCall(sql);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PreparedStatement pstm = conn.prepareStatement(sql);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;雇员信息开始加入&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(1, employeeVO.getName());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(2, employeeVO.getSex());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setInt(3, employeeVO.getAge());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(4, employeeVO.getSalary());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(5, employeeVO.getDepartment());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(6, employeeVO.getMarriage());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(7, employeeVO.getAddress());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(8, employeeVO.getPhone());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // log.info(&#34;1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.setString(9, employeeVO.getResume());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // log.info(&#34;2&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstm.executeUp&#100;ate();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&#34;雇员信息加入结束&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK,从图1-1中的Action传回一个信号，config接收到<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code70933);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code70933>&lt;forward name=&#34;link_addemp_ready&#34; path=&#34;/link1_add_success.jsp&#34;&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加完成！]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.javamilk.org/article.asp?id=3" /> 
	  <id>http://www.javamilk.org/default.asp?id=3</id>
  </entry>	
		
</feed>
