﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;b&gt;BeanSoft's Java Blog&lt;/b&gt;-随笔分类-My Open Source Toys</title><link>http://www.blogjava.net/beansoft/category/17569.html</link><description>&lt;a href="http://www.beansoft.biz/?p=132"&gt;《MyEclipse 6 Java 开发中文教程》完整版书籍代码及配套超高清讲解视频免费下载&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 29 Sep 2010 23:47:41 GMT</lastBuildDate><pubDate>Wed, 29 Sep 2010 23:47:41 GMT</pubDate><ttl>60</ttl><item><title>SCM项目手把手开发文档 下载与在线阅读[转]</title><link>http://www.blogjava.net/beansoft/archive/2009/10/10/297672.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 10 Oct 2009 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/10/297672.html</guid><description><![CDATA[详情访问 <a href="http://www.beansoft.biz/?p=499">http://www.beansoft.biz/?p=499</a><br /><img src ="http://www.blogjava.net/beansoft/aggbug/297672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-10 14:17 <a href="http://www.blogjava.net/beansoft/archive/2009/10/10/297672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2sh项目安装运行手册(Windows) 更新到1.1 提供下载</title><link>http://www.blogjava.net/beansoft/archive/2009/09/16/295370.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 16 Sep 2009 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/09/16/295370.html</guid><description><![CDATA[
		<p>针对有人留言提出的无法运行, 什么数据库问题啊, 还有 EL 无法正确显示的问题, 可以这样讲, 这个程序本身是100%可以运行, 经过测试的, 只是大家没将运行环境配置好. 推荐新手双击 配置发布向导(需要先安装JRE).exe 来进行配置和运行. 此文档也纠正了部分小错误, 主要是手工操作部分的.</p>
		<p>文档地址: </p>
		<p>
				<a href="http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.pdf">1.struts2sh项目安装运行手册.pdf</a> 1.6MB 
</p>
		<p>
				<a title="http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.pdf" href="http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.pdf">http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.pdf</a>
		</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/295370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-09-16 20:53 <a href="http://www.blogjava.net/beansoft/archive/2009/09/16/295370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2sh项目用户简明手册</title><link>http://www.blogjava.net/beansoft/archive/2009/05/07/269399.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 07 May 2009 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/05/07/269399.html</guid><description><![CDATA[<h3>struts2sh项目用户简明手册</h3> <p>本文档简要描述struts2sh系统的使用手册。 <p>作者: 刘长炯 <p>日期: 2009-5-1 <p>Emal: beansoft@126.com <h3>1 管理员界面</h3> <p>管理员界面可对系统的用户进行管理，并对网站的全局信息如站点名称，敏感词等进行配置，最重要的是还可对站点的资源进行安全访问配置。 <h4>1.1 以管理员身份登录</h4> <p>进入<a href="http://localhost:8080/struts2sh">http://localhost:8080/struts2sh</a> 站点首页后，选择<a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002_4.jpg"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="40" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002_thumb.jpg" width="104" border="0"></a>按钮即可进行登录，默认的管理员用户名和密码是 admin/123456，登录成功后即可进入后台首页。 <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image004_2.jpg"><img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="167" alt="clip_image004" src="http://www.blogjava.net/images/blogjava_net/beansoft/" width="244" border="0"></a> <h4>1.2 用户管理</h4> <p>点击左侧功能导航菜单上的用户管理，即可对用户进行增删改查。出于安全考虑，不允许对管理员用户进行删除操作。 <p>这里只能添加网上交易员和财务经理两种用户信息。 <h4>1.3 站点全局配置</h4> <p>点击左侧的<u><a href="http://localhost:8080/itcastscm/admin/app_config.jsp">站点全局设置</a></u>链接，可对站点的标题，公告，以及敏感词过滤进行配置。 <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image006_2.jpg"><img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="173" alt="clip_image006" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image006_thumb.jpg" width="244" border="0"></a> <h4>1.4 站点安全中心</h4> <p>点击左侧的站点安全中心，可对全站所有的敏感资源进行访问角色控制。也可添加和修改用户角色及资源访问许可。 <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image008_2.jpg"><img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="132" alt="clip_image008" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image008_thumb.jpg" width="244" border="0"></a> <h3>2 其它用户功能</h3> <h4>2.1 概述</h4> <p>除了管理员之外的其他用户都通过在站点首页登录后进入功能页面。能够注册的用户主要包括普通用户和供应商。 <h4>2.2 注册</h4> <p>用户进入系统之前必须进行注册，点击首页的<a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002%5B1%5D.jpg"><img title="clip_image002[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="40" alt="clip_image002[1]" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002%5B1%5D_thumb.jpg" width="104" border="0"></a>按钮即可进入登录页面，然后选择页面左下方的<u>注册</u>链接即可完成用户注册。 <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image010_2.jpg"><img title="clip_image010" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="108" alt="clip_image010" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image010_thumb.jpg" width="244" border="0"></a> <h4>2.3 登录</h4> <p>点击首页的<a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002%5B2%5D.jpg"><img title="clip_image002[2]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="40" alt="clip_image002[2]" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image002%5B2%5D_thumb.jpg" width="104" border="0"></a>按钮，选择好正确的用户类型后，即可完成登录。 <h4>2.4 商店首页</h4> <p>登录成功后进入商店首页，在此处可进行绝大多数的操作，不同角色的用户将显示不同的功能菜单。 <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image012_2.jpg"><img title="clip_image012" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="155" alt="clip_image012" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image012_thumb.jpg" width="244" border="0"></a> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image014_2.jpg"><img title="clip_image014" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="170" alt="clip_image014" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image014_thumb.jpg" width="244" border="0"></a> <h4>2.5 系统公告</h4> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image016_2.jpg"><img title="clip_image016" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="148" alt="clip_image016" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2sh_BE59/clip_image016_thumb.jpg" width="244" border="0"></a> <p>使用 ExtJS 实现. <img src ="http://www.blogjava.net/beansoft/aggbug/269399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-05-07 13:34 <a href="http://www.blogjava.net/beansoft/archive/2009/05/07/269399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源项目struts2sh安装运行手册(Windows)</title><link>http://www.blogjava.net/beansoft/archive/2009/05/06/269291.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 06 May 2009 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/05/06/269291.html</guid><description><![CDATA[
		<h3>相关文章: <a href="/beansoft/archive/2009/05/05/269039.html">sshplus项目发布第一版: Struts 2 + Spring 2 + Hibernate 3 整合演示</a></h3>
		<p>本文档描述Windows系统下如何安装和配置运行struts2sh系统。 </p>
		<p>作者: 刘长炯 </p>
		<p>日期: 2009-5-1 </p>
		<p>Email: beansoft@126.com </p>
		<h3>1 安装所需的软硬件环境</h3>
		<h4>1.1 运行环境</h4>
		<p>操作系统：Windows/Linux/Mac，支持Java环境即可 </p>
		<p>磁盘剩余空间：100MB以上 </p>
		<p>内存：最低256MB，推荐512MB或更高 </p>
		<p>CPU：PIII 800 MHz或更高 </p>
		<h4>1.2 开发环境</h4>
		<p>操作系统：Windows XP，支持Java环境即可 </p>
		<p>磁盘剩余空间：1GB以上 </p>
		<p>内存：最低512MB，推荐1GB或更高 </p>
		<p>CPU：1GHz或更高 </p>
		<h3>2 如何运行</h3>
		<h4>2.1 下载并解压缩项目</h4>
		<p>将下载得到的struts2sh.zip 解压缩到硬盘上，得到目录struts2sh，包括项目源代码和二进制文件。 </p>
		<h4>2.2 安装运行环境软件</h4>
		<h5>2.2.1 下载和安装JDK</h5>
		<p>安装JDK 1.5。 </p>
		<p>
				<b>注意:</b> 由于Struts 2和最新版的JDK 1.6有冲突, 此处不建议使用JDK 1.6. </p>
		<p>下载JDK可以访问官方网站<a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a>。双击下载后的带有 <a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image002_2.jpg"><img title="clip_image002" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="40" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image002_thumb.jpg" width="41" border="0" /></a> 图标的JDK安装程序EXE文件，接着就会使用Windows Installer开始安装过程，按照向导提示一步步进行安装即可。 </p>
		<p>
				<b>小提示</b>：您一般需要把JDK安装到一个不带空格和中文字符的目录下，例如<i>c:\JDK1.6</i>，不建议使用默认目录，因为那样可能导致服务器无法正常启动和其他异常。 </p>
		<h5>2.2.2 设置环境变量</h5>
		<p>需要配置的环境变量是<b>JAVA_HOME</b>。在<b>我的电脑</b>上点击右键, 选择 <b>属性</b>，在弹出的对话框中选择<b>高级</b>标签，然后点击<b>环境变量</b>按钮, 在出现的<b>环境变量</b>对话框的<b>系统变量</b><b>(S)</b>栏目中点击<b>新建</b>按钮, 出现新建系统环境变量的对话框, 输入变量名为<i>JAVA_HOME</i>, 值为 JDK 安装目录，例如：<i>C:\JDK1.5.0</i>(例如Tomcat需要这个环境变量来查找 JDK)。 </p>
		<h5>2.2.3 下载和安装Tomcat</h5>
		<p>安装好Tomcat 6.0(或者5.5及更高版本) </p>
		<p>
				<b>注意:</b> 由于 Struts 2和 Tomcat 5.0 有冲突, 因此不能用Tomcat 5. </p>
		<p>Tomcat是一款开源免费的JSP服务器，可以在 <a href="http://tomcat.apache.org/">http://tomcat.apache.org/</a> 下载并安装。 </p>
		<p>建议下载压缩包版本（文件名是<b>apache-tomcat-6.x.xx.zip</b>），而不是<b>Windows Service Installer</b>的EXE安装文件。 解压缩到磁盘目录，记下安装路径例如<i>c:\apache-tomcat-6.0.14</i>, 和JDK的安装一样，为了避免日后产生问题错误，解压缩的路径不要带有空格，如<i>c:\Program Files</i>。 </p>
		<p>
				<i>
				</i>
		</p>
		<h5>2.2.4 安装MySQL 5.0/6.0 数据库</h5>
		<p>可以访问 MySQL 官方网站下载原版安装程序和JDBC驱动，请访问：<a href="http://dev.mysql.com/downloads/mysql/5.0.html#win32">http://dev.mysql.com/downloads/mysql/5.0.html#win32</a>，下载安装包（如文件<i>mysql-essential-6.0.5-alpha-win32.msi</i>）双击进行安装，在最后一个屏幕点击启动Configure the MySQL Server now启动实例配置工具即可，如下图所示。 </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image004_2.jpg">
						<img title="clip_image004" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="182" alt="clip_image004" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image004_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>配置过程请参考视频<i><a href="file:///C:\Documents%20and%20Settings\BeanSoft\Application%20Data\Microsoft\Word\mysql_server_config.exe">mysql_server_config.exe</a></i>。此向导也可以通过选择菜单 <b>开始 &gt; </b><b>所有程序 &gt; MySQL &gt; MySQL Server 6.0 &gt; MySQL Server Instance Config Wizard</b>来打开。 </p>
		<h5>2.2.5 安装MySQL客户端管理软件Navicat Lite(可选)</h5>
		<p>MySQL管理工具，导航猫免费版(Navicat Lite)，可获得不低于SQL Server的易用度, 例如可视化建表, 修改表结构, 创建外键, 修改数据, 执行查询等功能,此软件的中文版可以在<a href="http://www.navicat.com.cn/download.html">http://www.navicat.com.cn/download.html</a> 下载*非商业 - 免费精简版。 </p>
		<h5>2.2.6 安装和配置邮件服务器Forward Mail Server(可选)</h5>
		<p>可以下载5用户版免费的邮件服务器 Forward Mail Server 4.175来作为项目的测试邮件服务器. 安装时候注意选择默认的安装路径 C:\Caretop\FMS , 不要修改此路径. 而且不支持Vista操作系统. </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image006_2.jpg">
						<img title="clip_image006" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="172" alt="clip_image006" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image006_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image008_2.jpg">
						<img title="clip_image008" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="172" alt="clip_image008" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image008_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image010_2.jpg">
						<img title="clip_image010" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="172" alt="clip_image010" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image010_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image012_2.jpg">
						<img title="clip_image012" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="172" alt="clip_image012" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image012_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>启动后的界面: </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image014_2.jpg">
						<img title="clip_image014" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" alt="clip_image014" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image014_thumb.jpg" width="182" border="0" />
				</a>
		</p>
		<p>启动其中的SMTP和POP3服务即可. 如果希望通过浏览器访问邮件服务器, <a name="OLE_LINK1">首页是</a><a href="http://localhost:1086/">http://localhost:1086/</a>。 </p>
		<p>在开始菜单中可启动邮件服务器配置工具，然后添加一个beansoft.cn的域名，之后再点击左侧导航中的本地邮箱，添加必要的测试用邮箱地址。 </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image016_2.jpg">
						<img title="clip_image016" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="63" alt="clip_image016" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image016_thumb.jpg" width="234" border="0" />
				</a>
		</p>
		<p>选择 Forward Mail Server Manager. </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image018_2.jpg">
						<img title="clip_image018" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="131" alt="clip_image018" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image018_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image020_2.jpg">
						<img title="clip_image020" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="172" alt="clip_image020" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image020_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>注意: 邮箱密码都是<b>1234</b>. </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image022_2.jpg">
						<img title="clip_image022" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="131" alt="clip_image022" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image022_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<h4>2.3 手工发布运行项目</h4>
		<h5>2.3.1 创建数据库</h5>
		<p>使用任意软件连接至MySQL服务器，然后创建数据库struts2sh。 </p>
		<h5>2.3.2 创建数据库表</h5>
		<p>执行文件struts2sh.sql来创建应用程序运行所需的表和基本数据。 </p>
		<h5>2.3.3 修改Hibernate配置文件中的数据库连接信息</h5>
		<p>打开文件WebRoot\WEB-INF\classes\hibernate.cfg.xml，修改文件中的数据库连接信息： </p>
		<table cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<td valign="top" width="568">
										<p>&lt;?xml version=<i>'1.0'</i> encoding=<i>'UTF-8'</i>?&gt; </p>
										<p>&lt;!DOCTYPE hibernate-configuration PUBLIC </p>
										<p>"-//Hibernate/Hibernate Configuration DTD 3.0//EN" </p>
										<p>"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt; </p>
										<p>&lt;hibernate-configuration&gt; </p>
										<p>&lt;session-factory&gt; </p>
										<p>&lt;property name=<i>"dialect"</i>&gt; </p>
										<p>org.hibernate.dialect.MySQLDialect </p>
										<p>&lt;/property&gt; </p>
										<p>&lt;property name=<i>"connection.url"</i>&gt; </p>
										<p>
												<b>jdbc:mysql://localhost:3306/struts2sh?useUnicode=true&amp;amp;characterEncoding=GBK</b>
										</p>
										<p>&lt;/property&gt; </p>
										<p>&lt;property name=<i>"connection.username"</i>&gt;<b>root</b>&lt;/property&gt; </p>
										<p>&lt;property name=<i>"connection.password"</i>&gt;<b>1234</b>&lt;/property&gt; </p>
										<p>&lt;property name=<i>"connection.driver_class"</i>&gt; </p>
										<p>com.mysql.jdbc.Driver </p>
										<p>&lt;/property&gt;</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>请将代码中红色内容修改为您自己的数据库连接IP，用户名和密码。 </p>
		<h5>2.3.4 手工发布项目</h5>
		<p>请将WebRoot目录完整复制到Tomcat安装目录/webapps下，然后将WebRoot文件夹重名为struts2sh (理论上修改为其他路径也可以运行)。 </p>
		<h5>2.3.5 使用WAR打包发布工具</h5>
		<p>双击根目录下的 <b>WAR</b><b>打包发布(</b><b>需要先安装JRE).exe</b> ，可以启动BeanSoft自行开发的WAR打包工具，启动后按照界面提示进行即可完成和打包发布工具。 </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image024_2.jpg">
						<img title="clip_image024" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="100" alt="clip_image024" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image024_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image026_2.jpg">
						<img title="clip_image026" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="100" alt="clip_image026" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image026_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image028_2.jpg">
						<img title="clip_image028" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="62" alt="clip_image028" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image028_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image030_2.jpg">
						<img title="clip_image030" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="68" alt="clip_image030" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image030_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image032_2.jpg">
						<img title="clip_image032" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="48" alt="clip_image032" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image032_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<h5>2.3.6 运行项目</h5>
		<p>启动Tomcat, 然后在浏览器键入地址 <a href="http://localhost:8080/struts2sh/index.jsp">http://localhost:8080/struts2sh/index.jsp</a>, 如果能看到正常的页面输出，那么项目即运行成功，这是因为站点的标题信息和版权信息都是通过后台数据库配置的。 </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image034_2.jpg">
						<img title="clip_image034" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="150" alt="clip_image034" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image034_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<h4>2.4 自动发布运行项目</h4>
		<p>为了方便最终用户使用、体验此软件，特地开发了自动发布向导，类似于一个安装程序。双击根目录下的 <b>配置发布向导(</b><b>需要先安装JRE).exe</b>，即可启动此向导，但是必须已经完成了JDK，Tomcat和MySQL的安装。然后安装图示一步步执行即可完成数据库设置，发布和启动服务器的过程。 </p>
		<p>注：部分截图稍有路径出入，以实际运行时为准。 </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image036_2.jpg">
						<img title="clip_image036" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image036" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image036_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image038_2.jpg">
						<img title="clip_image038" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image038" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image038_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image040_2.jpg">
						<img title="clip_image040" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image040" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image040_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image042_2.jpg">
						<img title="clip_image042" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image042" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image042_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image044_2.jpg">
						<img title="clip_image044" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image044" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image044_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image046_2.jpg">
						<img title="clip_image046" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image046" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image046_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image048_2.jpg">
						<img title="clip_image048" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image048" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image048_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image050_2.jpg">
						<img title="clip_image050" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image050" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image050_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image052_2.jpg">
						<img title="clip_image052" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image052" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image052_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image054_2.jpg">
						<img title="clip_image054" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image054" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image054_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image056_2.jpg">
						<img title="clip_image056" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="171" alt="clip_image056" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image056_thumb.jpg" width="240" border="0" />
				</a>
		</p>
		<h3>3 搭建开发环境</h3>
		<p>本系统使用MyEclipse 开发，可导入到MyEclipse 4或者更高版本，随后即可进行修改和开发。如果读者没有MyEclipse，也可导入Eclipse。 </p>
		<p>点击菜单<b>File &gt; Import</b>，然后在弹出的<b>Import</b>对话框中展开<b>General</b>目录，选择<b>Existing Projects into Workspace</b>，接着点击<b>Next</b>按钮。当选中单选钮<b>Select root directory:</b>时可以点击<b>Browse…</b>按钮选中包含项目的文件夹，如果包含项目的话就可以在中间的<b>Projects</b>列表框中显示；而当选中单选钮<b>Select archive file:</b>时可以点击<b>Browse…</b>按钮选中包含项目的ZIP压缩包，如果包含项目的话就可以在中间的<b>Projects</b>列表框中显示。最后点击<b>Finish</b>按钮就可以导入项目并打开了。如下图所示： </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image058_2.jpg">
						<img title="clip_image058" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="183" alt="clip_image058" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/struts2shWindows_12B1C/clip_image058_thumb.jpg" width="240" border="0" />
				</a>。 </p>
		<p>导入后可在MyEclipse 6.0或者6.5选择发布或者菜单 Run &gt; Run As &gt; 3 MyEclipse Server Application，然后即可启动浏览器进行测试。 </p>
<img src ="http://www.blogjava.net/beansoft/aggbug/269291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-05-06 21:16 <a href="http://www.blogjava.net/beansoft/archive/2009/05/06/269291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sshplus项目发布第一版: Struts 2 + Spring  2 + Hibernate 3 整合演示</title><link>http://www.blogjava.net/beansoft/archive/2009/05/05/269039.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 05 May 2009 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/05/05/269039.html</guid><description><![CDATA[
		<p>
				<a href="http://code.google.com/p/sshplus/">http://code.google.com/p/sshplus/</a>
		</p>
		<p>下载地址:</p>
		<p>
				<a title="http://sshplus.googlecode.com/files/struts2sh.zip" href="http://sshplus.googlecode.com/files/struts2sh.zip">http://sshplus.googlecode.com/files/struts2sh.zip</a>　27.1 MB<br />Spring, Struts2, Hibernate 整合演示项目 </p>
		<p>相关文档:</p>
		<p>
				<a style="FONT-SIZE: 140%" href="http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.pdf">
						<font color="#0000cc" size="5">1.struts2sh项目安装运行手册.pdf</font>
				</a>   1.6 MB </p>
		<p>Struts 2 + Spring  2 + Hibernate 3 整合演示 
</p>
		<p>作者: 刘长炯 beansoft@126.com<br />日期: 2009.5.1<br />官方 Blog: <a href="http://beansoft.blogjava.net/">http://beansoft.blogjava.net/</a></p>
		<p>本项目仅仅是一个简单的 demo, 不是最佳实践, 也不适宜直接作为商业项目使用. 本项目演示了 Struts 2 + Spring  2 + Hibernate 3 的整合. 
</p>
		<p>本项目是以 JSP 为核心, 提供基于SSH的后台, 并兼顾表示层, 给开发人员提供开发参考. 
</p>
		<p>相关项目:<br />前台: ExtJS(一点点, 公告) EasyValidation(现名 RapidValidation) jQuery CSSMenu XloadTree FckEditor 
</p>
		<p>开发工具为 MyEclipse 6.0, 也可导入其它开发工具编译运行. 
</p>
		<p>相关文档 struts2sh 手把手开发文档以及 Struts 1 版本的整合即将陆续出炉, 敬请密切关注. 
</p>
		<p>许可协议: LGPL, 详情参考 LGPL-LICENSE.txt. 
</p>
		<p>建议您阅读目录 struts2sh\文档 下的文档 
</p>
		<p>推荐的开发用配套软件 MySQL 5 绿色精简版( Portable MySQL 5, JDBC Driver, MySQL-Front ):<br /><a href="http://tomcatmonitor.googlecode.com/files/portable_mysql5.exe">http://tomcatmonitor.googlecode.com/files/portable_mysql5.exe</a></p>
		<p> </p>
		<p>
				<a href="http://sshplus.googlecode.com/files/1.struts2sh%E9%A1%B9%E7%9B%AE%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C%E6%89%8B%E5%86%8C.doc">
				</a>
		</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/269039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-05-05 18:13 <a href="http://www.blogjava.net/beansoft/archive/2009/05/05/269039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源项目 SSHPlus 成立</title><link>http://www.blogjava.net/beansoft/archive/2009/03/26/262231.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 26 Mar 2009 12:17:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/03/26/262231.html</guid><description><![CDATA[<p><a href="http://code.google.com/p/sshplus/">http://code.google.com/p/sshplus/</a>&nbsp;</p> <p>Spring, Struts1/2, Hibernate 整合的演示参考实现框架.</p> <p>&nbsp;</p> <p>暂时未发布文件.</p><img src ="http://www.blogjava.net/beansoft/aggbug/262231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-03-26 20:17 <a href="http://www.blogjava.net/beansoft/archive/2009/03/26/262231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP实现简易的SQL报表</title><link>http://www.blogjava.net/beansoft/archive/2008/11/26/242879.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 26 Nov 2008 13:22:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/11/26/242879.html</guid><description><![CDATA[<p>这个内容也是根据企业学员的要求准备的. 其实这个小项目是刚毕业时候做的, 很多时候我们希望执行下面的SQL/HQL然后得到一个HTML表格输出:</p> <p>输入: select ID as 编号, NAME as 姓名, AGE as 年龄 from XXX</p> <p>输出:</p> <table cellspacing="0" cellpadding="2" width="400" border="1"> <tbody> <tr> <td valign="top" width="133">编号</td> <td valign="top" width="133">姓名</td> <td valign="top" width="133">年龄</td></tr> <tr> <td valign="top" width="133">&nbsp;</td> <td valign="top" width="133">&nbsp;</td> <td valign="top" width="133">&nbsp;</td></tr></tbody></table> <p>要求是如果SQL变动, 仍然要显示出来所有的别名字段信息和数据.</p> <p>因为现在Hibernate用的比较广泛, 所以优先考虑用Hibernate来实现, 结果发现如果是实体映射查询语句, 可以方便的用:List&lt;String&gt; Query.getReturnAliases() 获得别名, 然而我们知道查询时有时候语句是很复杂的, 不全是HQL, 这时候用SQLQuery的时候, 惊讶的提示这个方法尚未实现(最新版的Hibernate 3.3 是否实现尚未测试), 用的版本是Hibernate 3.2, 对应的代码是:</p> <p>DAO</p> <div><pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #008000">/**</span>
<span style="color: #008000"> * 根据查询语句返回结果, 并包含结果的列名</span>
<span style="color: #008000"> * @param hql</span>
<span style="color: #008000"> * @param args</span>
<span style="color: #008000"> * @return</span>
<span style="color: #008000"> */</span>
<span style="color: #0000ff">public</span> List queryAllForReport( final String hql, final Object... args) {
    List list = getHibernateTemplate().executeFind(<span style="color: #0000ff">new</span> HibernateCallback() {
         <span style="color: #0000ff">public</span> Object doInHibernate(Session session)
         throws HibernateException, SQLException {
         Query query = session.createQuery(hql);
         
         <span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i =0; i &lt; args.length; i++) {
             query.setParameter(i, args[i]);
         }
         

         List list = query.list();
         list.add(0, query.getReturnAliases());
         
         <span style="color: #0000ff">return</span> list;
         }
        });
    
    <span style="color: #008000">// Hibernate做count计算返回一般都是对象</span>
    
    <span style="color: #0000ff">return</span> list;        
}</pre></div>
<p></p>
<p>测试代码:</p>
<div><pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">List&lt;Object[]&gt; list = dao.queryAllForReport(<span style="color: #006080">"select id as 编号, name as 登录名, address as 地址, realName from User"</span>);

  System.<span style="color: #0000ff">out</span>.println(list.size());

<span style="color: #0000ff">for</span>(Object[] row : list) {
    <span style="color: #0000ff">for</span>(Object v : row) {
        System.<span style="color: #0000ff">out</span>.print(v + <span style="color: #006080">"\t"</span>);
        
    }
    
    System.<span style="color: #0000ff">out</span>.println();
}</pre></div>
<p>最后不得不回到JDBC, 用 ResultSet和ResultSetMetaData实现了这个功能, 详细代码(自己进行修改即可实现)如下:</p>
<div><pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">&lt;%@ page language=<span style="color: #006080">"java"</span> import=<span style="color: #006080">"java.util.*, java.sql.*"</span> pageEncoding=<span style="color: #006080">"UTF-8"</span>%&gt;
&lt;%@ taglib prefix=<span style="color: #006080">"c"</span> uri=<span style="color: #006080">"http://java.sun.com/jsp/jstl/core"</span> %&gt;

&lt;!DOCTYPE HTML PUBLIC <span style="color: #006080">"-//W3C//DTD HTML 4.01 Transitional//EN"</span>&gt;
&lt;html&gt;
  &lt;head&gt;
    
    &lt;title&gt;SQL报表&lt;/title&gt;
    
    &lt;meta http-equiv=<span style="color: #006080">"pragma"</span> content=<span style="color: #006080">"no-cache"</span>&gt;
    &lt;meta http-equiv=<span style="color: #006080">"cache-control"</span> content=<span style="color: #006080">"no-cache"</span>&gt;
    &lt;meta http-equiv=<span style="color: #006080">"expires"</span> content=<span style="color: #006080">"0"</span>&gt;    


  &lt;/head&gt;
  
  &lt;body&gt;
   &lt;form action=<span style="color: #006080">""</span>&gt;
   &lt;textarea name=sql cols=80 rows=10&gt;${param.sql}&lt;/textarea&gt;&lt;br&gt;
   &lt;input type=submit <span style="color: #0000ff">value</span>=查询&gt;
   &lt;/form&gt;
   
  &lt;c:<span style="color: #0000ff">if</span> test=<span style="color: #006080">"${!empty param.sql}"</span>&gt;

   &lt;%
  <span style="color: #008000">//new oracle.jdbc.driver.OracleDriver();</span>
   Connection conn = DriverManager.getConnection(<span style="color: #006080">"jdbc:oracle:thin:@192.168.1.41:1521:xe"</span>, <span style="color: #006080">"hr"</span>, <span style="color: #006080">"hr"</span>);
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery(request.getParameter(<span style="color: #006080">"sql"</span>));
   
   <span style="color: #0000ff">if</span>(rs == <span style="color: #0000ff">null</span>) {
       stmt.close();
       conn.close();
       <span style="color: #0000ff">return</span>;
   }
   
   <span style="color: #008000">// 取列名</span>
   ResultSetMetaData meta = rs.getMetaData();
   <span style="color: #0000ff">int</span> cols = meta.getColumnCount();
   ArrayList colNames = <span style="color: #0000ff">new</span> ArrayList();
   
   <span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i = 1; i &lt;= cols; i++) {
       colNames.add(meta.getColumnLabel(i));
   }
   
   request.setAttribute(<span style="color: #006080">"colNames"</span>, colNames);
   %&gt;
   &lt;table border=<span style="color: #006080">"1"</span>  cellpadding=<span style="color: #006080">"0"</span> style=<span style="color: #006080">"border-collapse: collapse; "</span>  width=<span style="color: #006080">"100%"</span> bordercolor=<span style="color: #006080">"#000000"</span> align=center &gt;
   
   &lt;tr&gt;
       &lt;c:forEach items=<span style="color: #006080">"${colNames}"</span> var=<span style="color: #006080">"c"</span>&gt;
       &lt;td&gt;${c}&lt;/td&gt;
       &lt;/c:forEach&gt;
       &lt;/tr&gt;
       
   &lt;%
  <span style="color: #0000ff">while</span>(rs.next()) {
      colNames.clear();
      
       <span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i = 1; i &lt;= cols; i++) {
           Object <span style="color: #0000ff">value</span> = rs.getObject(i);
           System.<span style="color: #0000ff">out</span>.println(<span style="color: #0000ff">value</span>.getClass());
           
           <span style="color: #008000">// TODO 更多格式化控制</span>
           <span style="color: #0000ff">if</span>(<span style="color: #0000ff">value</span> instanceof java.sql.Date) {
               <span style="color: #0000ff">value</span> = rs.getTimestamp(i);<span style="color: #008000">// 取出精确日期</span>
               java.text.SimpleDateFormat df = <span style="color: #0000ff">new</span> java.text.SimpleDateFormat(<span style="color: #006080">"yyyy年MM月dd日HH点mm分ss秒EEE"</span>);
               <span style="color: #0000ff">value</span> = df.format(<span style="color: #0000ff">value</span>);
           }
           
           <span style="color: #0000ff">if</span>(<span style="color: #0000ff">value</span> instanceof java.math.BigDecimal) {
               java.math.BigDecimal v = (java.math.BigDecimal)<span style="color: #0000ff">value</span>;
               <span style="color: #0000ff">value</span> = v.doubleValue();
                <span style="color: #008000">// 要求输出时候最少显示两位小数, 最多输出小数点后3个数</span>
                java.text.NumberFormat format = java.text.NumberFormat.getInstance();<span style="color: #008000">// 只对小数格式化</span>
                format.setMaximumFractionDigits(2);<span style="color: #008000">// 最多3位小数</span>
                format.setMinimumFractionDigits(1);<span style="color: #008000">// 最少2位小数</span>
                <span style="color: #0000ff">value</span> = format.format(<span style="color: #0000ff">value</span>);<span style="color: #008000">// ==&gt; String</span>
           }
           
           colNames.add(<span style="color: #0000ff">value</span>);
       }
       
      request.setAttribute(<span style="color: #006080">"colNames"</span>, colNames);
      
      %&gt;
      &lt;tr&gt;
           &lt;c:forEach items=<span style="color: #006080">"${colNames}"</span> var=<span style="color: #006080">"c"</span>&gt;
           &lt;td&gt;${c}&lt;/td&gt;
           &lt;/c:forEach&gt;
         &lt;/tr&gt;
      &lt;%
      
  }
   
   rs.close();
   stmt.close();
   conn.close();
   %&gt;
   &lt;/table&gt;
   &lt;/c:<span style="color: #0000ff">if</span>&gt;
  &lt;/body&gt;
&lt;/html&gt;

</pre></div>
<p></p>
<p>用到了JSTL和EL, 总的来说要改版还是很方便的. 但是运行需要比较高的Tomcat版本, 如5.5以上, 并需要JSTL类库. 不过, 类似的模版项目开源框架应该是很多很多的, 例如众多的Report框架.</p><img src ="http://www.blogjava.net/beansoft/aggbug/242879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-11-26 21:22 <a href="http://www.blogjava.net/beansoft/archive/2008/11/26/242879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>