﻿<?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-网摘-文章分类-Tomcat</title><link>http://www.blogjava.net/jvict/category/33918.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 20 Apr 2010 06:39:28 GMT</lastBuildDate><pubDate>Tue, 20 Apr 2010 06:39:28 GMT</pubDate><ttl>60</ttl><item><title>Apache Commons DbUtils 快速上手 </title><link>http://www.blogjava.net/jvict/articles/318674.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Sun, 18 Apr 2010 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/318674.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/318674.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/318674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/318674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/318674.html</trackback:ping><description><![CDATA[<div><a href="http://java.chinaitlab.com/advance/796954.html">原文：http://java.chinaitlab.com/advance/796954.html</a><br />
另文：<a href="http://topmanopensource.javaeye.com/blog/348863">http://topmanopensource.javaeye.com/blog/348863</a><br />
Hibernate太复杂，iBatis不好用，JDBC代码太垃圾，DBUtils在简单与优美之间取得了完美平衡。</div>
<div>&nbsp;</div>
<div><strong>一、概述</strong></div>
<div>&nbsp;</div>
<div>DbUtils小巧的<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>数据库操作工具，它在JDBC的基础上做了科学的封装，旨在简化JDBC代码混乱与重复。</div>
<div>&nbsp;</div>
<div>对于JDBC代码，存在很多问题，算是对<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>的批判：</div>
<div>1、操作过程复杂，代码操作一个模式，大量的重复。</div>
<div>2、结果集难以处理，拿到一个ResultSet干屁啊，一个一个度，转称JavaBean，后来形成List，太麻烦了。</div>
<div>3、到处都强制检查SQLException，烦不烦啊，影响代码的美观和可读性。</div>
<div>&nbsp;</div>
<div>当然，以上的批判不是说JDBC设计不合理，二是缺乏更高层操作API的支持。因此才产生了众多的开源数据库操作的框架和工具包。</div>
<div>&nbsp;</div>
<div><strong>二、熟悉DBUtils的API</strong></div>
<div>&nbsp;</div>
<div>针对DBUitlsAPI的包，做个简单的翻译，以便迅速掌握API的使用。</div>
<div>
<div style="border-right: #aaaaaa 1px solid; padding-right: 5px; border-top: #aaaaaa 1px solid; padding-left: 5px; padding-bottom: 5px; border-left: #aaaaaa 1px solid; padding-top: 5px; border-bottom: #aaaaaa 1px solid; background-color: #fffafa">
<div>1、------------------------------------<br />
包org.apache.commons.dbutils <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbUtils是一个为简化JDBC操作的小类库。</div>
<div>接口摘要<br />
ResultSetHandler 将ResultSet转换为别的对象的工具。<br />
RowProcessor 将ResultSet行转换为别的对象的工具。&nbsp; </div>
<div>类摘要<br />
BasicRowProcessor RowProcessor接口的基本实现类。 <br />
BeanProcessor BeanProcessor匹配列明到Bean属性名，并转换结果集列到Bean对象的属性中。<br />
DbUtils 一个JDBC辅助工具集合。 <br />
ProxyFactory 产生JDBC接口的代理实现。 <br />
QueryLoader 属性文件加载器，主要用于加载属性文件中的 SQL 到内存中。 <br />
QueryRunner 使用可插拔的策略执行SQL查询并处理结果集。<br />
ResultSetIterator 包装结果集为一个迭代器。 <br />
&nbsp; <br />
2、------------------------------------<br />
包org.apache.commons.dbutils.handlers <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSetHandler接口的实现类 </div>
<div>类摘要<br />
AbstractListHandler 将ResultSet转为List的抽象类<br />
ArrayHandler 将ResultSet转为一个Object[]的ResultSetHandler实现类<br />
ArrayListHandler 将ResultSet转换为List&lt;Object[]&gt;的ResultSetHandler实现类<br />
BeanHandler 将ResultSet行转换为一个JavaBean的ResultSetHandler实现类<br />
BeanListHandler 将ResultSet转换为List&lt;JavaBean&gt;的ResultSetHandler实现类<br />
ColumnListHandler 将ResultSet的一个列转换为List&lt;Object&gt;的ResultSetHandler实现类<br />
KeyedHandler 将ResultSet转换为Map&lt;Map&gt;的ResultSetHandler实现类<br />
MapHandler 将ResultSet的首行转换为一个Map的ResultSetHandler实现类<br />
MapListHandler 将ResultSet转换为List&lt;Map&gt;的ResultSetHandler实现类<br />
ScalarHandler 将ResultSet的一个列到一个对象。</div>
<div>&nbsp;</div>
<div>3、------------------------------------<br />
包org.apache.commons.dbutils.wrappers <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加java.sql类中功能包装类。</div>
<div>类摘要<br />
SqlNullCheckedResultSet 在每个getXXX方法上检查SQL NULL值的ResultSet包装类。<br />
StringTrimmedResultSet 取出结果集中字符串左右空格的ResultSet包装类。<br />
</div>
</div>
</div>
<div>&nbsp;</div>
<div><strong>三、环境</strong></div>
<div>&nbsp;</div>
<div>Java5</div>
<div>commons-dbutils-1.2-bin.zip</div>
<div>mysql-noinstall-5.1.40-win32.zip</div>
<div>mysql-connector-java-5.1.10.zip</div>
<div>&nbsp;</div>
<div><a class="channel_keylink" href="http://download.chinaitlab.com/" target="_blank">下载</a>地址：</div>
<div><u>http://apache.freelamp.com/commons/dbutils/binaries/commons-dbutils-1.2-bin.zip</u></div>
<div><u>http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.40-win32.zip</u></div>
<div><u><a href="http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip">http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip</a></u></div>
<img src ="http://www.blogjava.net/jvict/aggbug/318674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2010-04-18 17:30 <a href="http://www.blogjava.net/jvict/articles/318674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JFreeChart增强JSP报表的用户体验</title><link>http://www.blogjava.net/jvict/articles/318222.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Wed, 14 Apr 2010 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/318222.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/318222.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/318222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/318222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/318222.html</trackback:ping><description><![CDATA[<p><a href="http://www.sucai.com/Tech/List4/8746.htm">原文：http://www.sucai.com/Tech/List4/8746.htm</a><br />
<br />
JFreeChart是一组功能强大、灵活易用的Java绘图API，使用它可以生成多种通用性的报表，包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表，并且得到广泛的应用。本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用，来达到熟练使用JFreeChart的目的。</p>
<p>一．&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载与环境配置<br />
1. 下载JFreeChart<br />
JFreeChart是开放源代码的免费软件，但是它的支持文档需要付费才能得到。其下载地址为：http://sourceforge.net/project/showfiles.php?group_id=15494，当前最新版本为1.0.6。笔者下载的是1.0.6最新版。<br />
说明：1）source目录：为jfreechart的源码目录；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）lib目录：为包目录，我们需要关注的包为jfreechart-1.0.6.jar、gnujaxp.jar和jcommon-1.0.10.jar这三个包；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3）根目录下的jfreechart-1.0.6-demo.jar是例子程序，大家双击后可看到其中有很多例子的运行结果。<br />
2. 环境配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 笔者的开发环境如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDK：1.5<br />
MyEclipse：5.1.1 GA<br />
Tomcat：5.5.28<br />
为了后续的&#8220;用JFreeChart创建基于Web的图表&#8221;的一个例子的展示，我们在MyEclipse中创建一个名为jfreechart的Web工程。将下载的JFreeChart1.0.6下lib目录下的jar包拷贝到WebRoot/WEB-INF/lib目录下。另外还需要在web.xml文件中增加如下配置：<br />
&lt;servlet&gt;<br />
&lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />
&lt;servlet-class&gt;org.jfree.chart.servlet.DisplayChart&lt;/servlet-class&gt;<br />
&lt;/servlet&gt;<br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/DisplayChart&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
二．&nbsp;&nbsp; 柱状图</p>
<p>在WebRoot目录下建立bar目录，用来存放柱状图的各个例子。首先在该目录下建立一个sample1.jsp文件，让我们来看一个简单的柱状图的例子，修改后的sample1.jsp的内容如下所示：</p>
<p>&lt;%@ page contentType="text/html;charset=GBK"%&gt; &lt;%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart, org.jfree.chart.plot.PlotOrientation, org.jfree.chart.servlet.ServletUtilities, org.jfree.data.category.DefaultCategoryDataset"%&gt; &lt;% DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(610, "广州", "猪肉"); dataset.addValue(220, "广州", "牛肉"); dataset.addValue(530, "广州", "鸡肉"); dataset.addValue(340, "广州", "鱼肉"); JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类", "销量", dataset, PlotOrientation.VERTICAL, false, false, false); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %&gt; &lt;img src="&lt;%= graphURL %&gt;" width=500 height=300 border=0 usemap="#&lt;%= filename %&gt;"&gt; </p>
<p>在浏览器中输入地址：http://localhost:8080/jfreechart/bar/sample1.jsp，可看到如下柱状图：</p>
<div style="text-indent: 21pt"><br />
<br />
<p align="center"><img height="294" alt="用JFreeChart增强JSP报表的用户体验（图一）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563410.jpg" width="504" border="0" /></p>
</div>
<div style="text-indent: 21pt"><br />
<br />
&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt">上面的这个柱状图比较简单，稍显单调，在有些情况下，我们需要用不同颜色来表示不同的种类，或者在种类上标上具体数值，亦或需要加上3D水晶效果。下面让我们来做更深一步的探讨。接下来让我们看一个用不同颜色来表示不通种类的例子。在WebRoot的bar目录下新建sample2.jsp页面，将其代码修改如下：<br />
<br />
</div>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px">
<pre style="border-right: black 1px solid; padding-right: 4px; border-top: black 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: black 1px solid; padding-top: 4px; border-bottom: black 1px solid; background-color: #ededed">
<div>&lt;%@ page contentType="text/html;charset=GBK"%&gt;
&lt;%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities"%&gt;
&lt;%
double[][] data = new double[][] {{1310}, {720}, {1130}, {440}};
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("广州肉类销量统计图",
"肉类",
"销量",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%&gt;
&lt;img src="&lt;%= graphURL %&gt;" width=500 height=300 border=0 usemap="#&lt;%= filename %&gt;"&gt;
</div>
</pre>
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该页面的运行效果如下图所示：</div>
<div><br />
<br />
<p>&nbsp;</p>
<p align="center"><img height="277" alt="用JFreeChart增强JSP报表的用户体验（图二）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563411.jpg" width="464" border="0" /></p>
</div>
<div><br />
<br />
&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 对比该例与前例，可看出createBarChart3D的倒数第三个参数修改成了true，该参数可用来显示下方的： 。上两例我们显示的只是一个城市的肉类销量，有时候我们有对比显示多个城市的不同肉类，只要将上例稍作修改即可。例如要在图中表示广州、深圳、东莞、佛山四个城市的四个肉类的销售情况，只需要将如下三句稍做修改：<br />
<br />
</div>
<div>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px">
<pre style="border-right: black 1px solid; padding-right: 4px; border-top: black 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: black 1px solid; padding-top: 4px; border-bottom: black 1px solid; background-color: #ededed">
<div>double[][] data = new double[][] {{1310}, {720}, {1130}, {440}};
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
String[] columnKeys = {""};
例如修改成：
double[][] data = new double[][] {{1310, 1220, 1110, 1000},
{720, 700, 680, 640},
{1130, 1020, 980, 800},
{440, 400, 360, 300}};
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
String[] columnKeys = {"广州", "深圳", "东莞", "佛山"};</div>
</pre>
</div>
</div>
<div style="text-indent: 21pt">在运行该jsp页面，可看到如下界面：</div>
<div style="text-indent: 21pt">&nbsp;</div>
<div><br />
</div>
<p>&nbsp;</p>
<p align="center"><img height="301" alt="用JFreeChart增强JSP报表的用户体验（图三）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563412.jpg" width="502" border="0" /></p>
<p align="left">&nbsp;在上述几例中，在某个柱子上都没有显示相应的数值，下面让我们为每个柱子都加上它的数值，我们新建一个sample4.jsp页面，其内容如下：</p>
<p align="left">&lt;%@ page contentType="text/html;charset=GBK"%&gt; &lt;%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart, org.jfree.chart.plot.PlotOrientation, org.jfree.chart.servlet.ServletUtilities, org.jfree.data.category.CategoryDataset, org.jfree.data.general.DatasetUtilities, org.jfree.chart.plot.*, org.jfree.chart.labels.*, org.jfree.chart.renderer.category.BarRenderer3D, java.awt.*, org.jfree.ui.*, org.jfree.chart.axis.AxisLocation"%&gt; &lt;% double[][] data = new double[][] {{1310, 1220, 1110, 1000}, {720, 700, 680, 640}, {1130, 1020, 980, 800}, {440, 400, 360, 300}}; String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"}; String[] columnKeys = {"广州", "深圳", "东莞", "佛山"}; CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类", "销量", dataset, PlotOrientation.VERTICAL, true, true, false); CategoryPlot plot = chart.getCategoryPlot(); //设置网格背景颜色 plot.setBackgroundPaint(Color.white); //设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink); //设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink); //显示每个柱的数值，并修改该数值的字体属性 BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); //默认的数字显示在柱子中，通过如下两句可调整数字的显示 //注意：此句很关键，若无此句，那数字的显示会被覆盖，给人数字没有显示出来的问题 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); renderer.setItemLabelAnchorOffset(10D); //设置每个地区所包含的平行柱的之间距离 //renderer.setItemMargin(0.3); plot.setRenderer(renderer); //设置地区、销量的显示位置 //将下方的&#8220;肉类&#8221;放到上方 plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); //将默认放在左边的&#8220;销量&#8221;放到右方 plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); String filename = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %&gt; &lt;img src="&lt;%= graphURL %&gt;" width=700 height=400 border=0 usemap="#&lt;%= filename %&gt;"&gt;</p>
<p align="left">运行效果如下所示：</p>
<p align="left"><img alt="用JFreeChart增强JSP报表的用户体验（图四）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563413.jpg" width="590" border="0" /></p>
<p align="left">注意：jfreechart的很多版本不兼容，请大家在运行此例时确认下载了对应的版本。</p>
<p align="left">三．&nbsp; 饼图</p>
<p align="left">在WebRoot目录下建立名为pie的子目录，用来存放本教程中饼图的实例jsp页面。下面让我们来看一个简单的三维饼图。首先在pie目录下建立一个名为sample1.jsp的页面。<br />
在JFreeChart中，与饼图绘制密切相关的类如下：<br />
1）&nbsp; PiePlot<br />
饼图绘制类，可以用来设置饼图的相关属性。例如：<br />
PiePlot pieplot = (PiePlot)jfreechart.getPlot();<br />
pieplot.setLabelFont(new Font("SansSerif", 0, 12));<br />
pieplot.setNoDataMessage("No data available");<br />
pieplot.setCircular(false);<br />
pieplot.setLabelGap(0.02D);<br />
2）&nbsp; DefaultPieDataset<br />
默认的饼图数据集类，用来存储饼图显示的相关数据信息。例如：<br />
DefaultPieDataset dataset = new DefaultPieDataset();<br />
dataset.setValue("品德", new Double(0.2D));<br />
dataset.setValue("体育", new Double(0.2D));<br />
dataset.setValue("音乐", new Double(0.2D));<br />
dataset.setValue("其余成绩", new Double(0.4D));<br />
3）&nbsp; ChartFactory<br />
可利用该制图工厂类createPieChart来创建一个饼图的JFreeChart对象，例如：<br />
JFreeChart jfreechart = ChartFactory.createPieChart("饼图示例", dataset, true, true, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面让我们看一个简单的例子，修改sample1.jsp的内容如下：</p>
<p align="left">&lt;%@ page contentType="text/html;charset=GBK"%&gt; &lt;%@ page import="org.jfree.chart.*, org.jfree.chart.plot.PiePlot, org.jfree.data.general.DefaultPieDataset, org.jfree.chart.servlet.ServletUtilities, java.awt.*"%&gt; &lt;% //设置数据集 DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("初中高级程序员", 0.55); dataset.setValue("项目经理", 0.1); dataset.setValue("系统分析师", 0.1); dataset.setValue("软件架构师", 0.1); dataset.setValue("其他", 0.2); //通过工厂类生成JFreeChart对象 JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false); PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 12)); //没有数据的时候显示的内容 pieplot.setNoDataMessage("无数据显示"); pieplot.setCircular(false); pieplot.setLabelGap(0.02D); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %&gt; &lt;img src="&lt;%= graphURL %&gt;" width=500 height=300 border=0 usemap="#&lt;%= filename %&gt;"&gt;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以看出，饼图的绘制与柱状图的绘制类似，该例的运行效果如下：</p>
<p align="left"><img height="303" alt="用JFreeChart增强JSP报表的用户体验（图五）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563414.jpg" width="496" border="0" /></p>
<p align="left">有时候我们还想知道某块所占的具体分值，或者需要突出显示某一块。这时候需要对上例进行部分修改：dataset.setValue("其他", 0.2);后的那段改成：<br />
//通过工厂类生成JFreeChart对象<br />
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false);<br />
PiePlot pieplot = (PiePlot) chart.getPlot();<br />
pieplot.setLabelFont(new Font("宋体", 0, 12));<br />
//没有数据的时候显示的内容<br />
pieplot.setNoDataMessage("无数据显示");<br />
pieplot.setCircular(false);<br />
setExplodePercent方法很重要，它将Label为某名称的某块挖出来突出显示，而后两句实现的效果是在&#8220;初中高级程序员&#8221;等名称后加上百分比，改成&#8220;初中高级程序员=55%&#8221;等。加上如上的代码后，同时还需要将相关的两个java包：org.jfree.chart.labels.StandardPieSectionLabelGenerator和java.text.NumberFormat引入到该jsp页面中。此时的运行结果如下：</p>
<p align="left"><img height="248" alt="用JFreeChart增强JSP报表的用户体验（图六）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563415.jpg" width="416" border="0" /></p>
<p align="left">&nbsp;通过JFreeChart还可以提供漂亮的水晶饼图效果，接着让我们新建一个sample3.jsp页面来体验一下超炫美图吧。修改sample3.jsp页面如下：<br />
&lt;%@ page contentType="text/html;charset=GBK"%&gt;<br />
&lt;%@ page import="org.jfree.chart.*,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.jfree.chart.servlet.ServletUtilities,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.jfree.util.Rotation,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.jfree.data.general.DefaultPieDataset,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.jfree.chart.plot.PiePlot3D"%&gt;<br />
&lt;%<br />
//设置数据集<br />
DefaultPieDataset dataset = new DefaultPieDataset();<br />
dataset.setValue("初中高级程序员", 0.55);<br />
dataset.setValue("项目经理", 0.1);<br />
dataset.setValue("系统分析师", 0.1);<br />
dataset.setValue("软件架构师", 0.1);<br />
dataset.setValue("其他", 0.2);<br />
&nbsp;<br />
//通过工厂类生成JFreeChart对象<br />
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, true, false);<br />
//获得3D的水晶饼图对象<br />
PiePlot3D pieplot3d = (PiePlot3D) chart.getPlot();<br />
//设置开始角度<br />
pieplot3d.setStartAngle(150D);<br />
//设置方向为&#8221;顺时针方向&#8220;<br />
pieplot3d.setDirection(Rotation.CLOCKWISE);<br />
//设置透明度，0.5F为半透明，1为不透明，0为全透明<br />
pieplot3d.setForegroundAlpha(0.5F);<br />
pieplot3d.setNoDataMessage("无数据显示");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);<br />
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;<br />
%&gt;<br />
&lt;img src="&lt;%= graphURL %&gt;"width=500 height=300 border=0 usemap="#&lt;%= filename %&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用setForegroundAlpha()方法可以设置3D饼图的透明度，利用setStartAngle()可以设置其开始角度，利用setDirection()方法可以设置其方向。该例的运行效果如下图所示：<br />
&nbsp;<img height="302" alt="用JFreeChart增强JSP报表的用户体验（图七）" src="http://www.sucai.com/tech/newsfile/12000-12999/12619/080410212563416.jpg" width="500" border="0" /></p>
 <img src ="http://www.blogjava.net/jvict/aggbug/318222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2010-04-14 09:15 <a href="http://www.blogjava.net/jvict/articles/318222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FreeBSD 8 mysql apache php java整合</title><link>http://www.blogjava.net/jvict/articles/309446.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Thu, 14 Jan 2010 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/309446.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/309446.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/309446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/309446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/309446.html</trackback:ping><description><![CDATA[<strong>1.下载安装FreeBSD 8，ＤＶＤ１<br />
2.安装mysql 5 - 利用ports安装<br />
</strong><font size="2">cd /usr/ports/databases/mysql50-server/ <br />
make install clean # n长的编译过程 <br />
rehash <br />
mysql_install_db --user=mysql <br />
chown -R mysql /var/db/mysql/<br />
chgrp -R mysql /var/db/mysql/<br />
/usr/local/bin/mysqld_safe -user=mysql &amp;<br />
<br />
mysqld_safe－－MySQL服务器启动脚本 <br />
mysqld_safe是在Unix或是NetWare系统推荐使用来启动MySQL服务器的方法。mysqld_safe添加了许多安全的特征，例如，当发生错误时重新启动服务器，并且可以将运行时的信息写入错误日志文件<br />
<br />
<li>The port installation will put a script file mysql-server.sh<br />
in /usr/local/etc/rc.d which will has capability to start MySQL server.<br />
To enable MySQL server to start automatically after every FreeBSD<br />
server reboot, enter the following command in CLI:
<p><span style="color: red">echo &#8216;mysql_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/ rc.conf<br />
</span></p>
<p>mysqladmin -u root password newpassword (改变root帐户密码）<br />
</p>
<li>MySQL 5.0 installation done. <br />
------------------------------------------------------------------------<br />
<strong>3.安装 Apache Web Server 2.2<br />
</strong>Install Apache HTTP Server 2.20 by using FreeBSD Ports Collection: <br />
cd /usr/ports/www/apache22<br />
make install clean<br />
<li>A Apache HTTP Server script apache22.sh is located at<br />
/usr/local/etc/rc.d to provide Apache HTTP Server start and shutdown <font color="#333333">.</font> <br />
service. To enable Apache web server to automatically starts whenever<br />
after server reboots, issue the following command at CLI: <br />
<span style="color: red">echo &#8216;apache22_enable =&#8221;YES&#8221;&#8216; &gt;&gt; /etc/ rc.conf<br />
</span>
<li>To start Apache HTTP web server immediately, use: <br />
/usr/local/sbin/apachectl start<br />
or<br />
/usr/local/etc/rc.d/apache22.sh start<br />
<li>Apache installation finished. <br />
<br />
<strong>4.Installing PHP Hypertext Preprocessor Scripting Language 5 and PHP 5 Extensions<br />
</strong>
<li>Install by enter the following commands on FreeBSD OS command line,<br />
wait for previous command to finish before running the next command: cd /usr/ports/lang/php5<br />
make install clean<br />
<li>If you&#8217;re prompted, select &#8220;use Apache 2.x instead&#8221;. <br />
<li>Continue with the following commands to install PHP5 extensions and modules to enable the support of the modules in Apache: <br />
cd /usr/ports/lang/php5-extensions </font>make config<br />
<li>At Options for php5-extension 1.0 menu, select all PHP<br />
extensions and modules that you may use with Apache webserver. This is<br />
a part of the configuration for PHP, where you need to enable features<br />
of PHP that come in modules, such as ability to manage user sessions,<br />
interface with databases and many others. Default extensions such as<br />
ctype functions support, HASH Message Digest Framework support, session<br />
support and etc have been selected. Other popular extensions that you<br />
most likely to be in used are MySQL database support and GD library<br />
support. Use space bar to select or unselect the extensions and press<br />
Enter when done.
<li>Continue the installation of php5-extensions with the following commands: <br />
make install clean<br />
<li>If there are any message the pops up and prompts you to select<br />
some options or configurations, you can just accept the default<br />
settings by pressing Enter. Some modules that may prompt you for action&nbsp; <br />
include php5-gd, php5-mbstring and php5-sqlite.
<li>Edit the Apache configuration file in order to enable Apache web server to load the PHP modules when initialization: <br />
<li>Go to Apache configuration file location by cd /usr/local/etc/apache2/ <br />
<li>Edit Apache configuration file by vi httpd.conf <br />
<li>Search for LoadModule lines, after the last LoadModule line, but within the same section, add the following 2 lines: <br />
AddType application/x- httpd-php .php<br />
AddType application/x- httpd-php-source .phps<br />
<li>Optionally, copy /usr/local/etc/php.ini-recommended or<br />
/usr/local/etc/php.ini-dist to /usr/local/etc/php.ini (in same<br />
directory), which will enable you to tune and change the default<br />
settings of behaviours of PHP.
<li>Start the Apache HTTP web server by using apachectl start<br />
(or restart Apache HTTP web server by using apachectl restart).<br />
apachectl is located in /usr/local/sbin, if you encounter Command not<br />
found problem, try to change directory to its location.
<li>PHP5 installation done. <font color="#333333">。</font> <br />
A web server has been setup with the FreeBSD with Apache, MySQL and<br />
PHP. The document root of the web server (where you should put your<br />
HTML and PHP files is at /usr/local/www/apache22/data/ and you will<br />
need a SecureFTP (SFTP) client such as WinSCP to upload your files to<br />
web server securely.
<p><br />
<strong>5.安装php后若apache不能启动：<br />
</strong>在 FreeBSD 下安装 apache22 会出现类似的 warming:<br />
No such file or directory: Failed to enable the 'httpready' Accept Filter</p>
<p>解决方案：<br />
#kldload accf_http并在 /boot/defaults/loader.conf 中加入下面 2 行，以便下次启动自动装载模块<br />
accf_data_load="YES"<br />
accf_http_load="YES"<br />
<br />
<strong>问题</strong><br />
[root@freebsd ~]# apachectl -t<br />
httpd: Could not reliably determine the server's fully qualified domain name, using freebsd.web for ServerName</p>
<p>解决方案：<br />
vi /usr/local/etc/apache22/httpd.conf<br />
添加这么一行：<span style="color: red">ServerName 127.0.0.1:80</span></p>
</li>
<img src ="http://www.blogjava.net/jvict/aggbug/309446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2010-01-14 13:47 <a href="http://www.blogjava.net/jvict/articles/309446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cent OS OpenJava 1.6 Apache 2.x Tomcat 6.x JK-1.2.28(Apache Tomcat Connectors )整合</title><link>http://www.blogjava.net/jvict/articles/309345.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Wed, 13 Jan 2010 10:32:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/309345.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/309345.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/309345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/309345.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/309345.html</trackback:ping><description><![CDATA[<strong>问题：当从apache 2.2.14换成apache 2.2.3时，已配好的jsp环境无法正常运行，mod_jk.so不能使用<br />
</strong>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">重新用yum 安装了httpd-devel套件生成了apxs后，重新对tomcat-connector源程序进行make clean,.configurage,make,make install后用新生成的mod_jk.so即可正常。当系统增加虚拟主机后，httpd.conf配置文件也要进行相应改变。下面有详细说明。</span><br />
<strong>1.下载解压&nbsp;Apache安装至 /usr/local/apache<br />
2.下载解压tomcat安装至 /usr/local/tomcat<br />
3.下载JK-1.2.28源文件(Apache Tomcat Connectors ) 在Tomcat官网界面上有相应连接<br />
4. 编译JK-1.2.28<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;进入native目录<br />
　　./configure -with-apxs=/home2/local/apache/bin/apxs<br />
　　make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp ./apache-2.0/mod_jk.so /usr/local/apache/modules<br />
<strong>5.修改apache配置文件httpd.conf<br />
</strong>#增加index.jsp&nbsp;&nbsp;&nbsp;&nbsp;<br />
&lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp;&nbsp; DirectoryIndex index.html index.php index.jsp<br />
&lt;/IfModule&gt;<br />
<br />
<p>LoadModule jk_module&nbsp;&nbsp;&nbsp; modules/mod_jk.so<br />
<br />
JkWorkersFile /usr/local/apache/conf/workers.properties<br />
JkLogFile&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/apache/logs/mod_jk.log<br />
JkLogLevel&nbsp;&nbsp;&nbsp; info<br />
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "<br />
JkMount /*.jsp worker1<br />
JkMount /*.do worker1 // 此项为配置servlet, 在web.xml中可自由配置路径如<span style="color: red">：&lt;url-pattern&gt;/servlet/login&lt;/url-pattern&gt;<br />
</span>// 此时不宜配置成/*, 否则将会屏蔽掉php等其它脚本解析。<br />
<br />
# 以下两项可以省略不要<br />
#JkMount /servlet/* worker1<br />
#JkMount&nbsp; /*.do* worker1<br />
<br />
<span style="color: red"><strong>如果存在虚拟主机，需要进行单独配置，如下所示：<br />
</strong><span style="color: #000000">&lt;VirtualHost *:80&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot /var/www/html/<br />
&nbsp;&nbsp;&nbsp; ServerName&nbsp;<a href="http://www.example.com/">www.example.com</a><br />
&nbsp;&nbsp;&nbsp; ServerAlias&nbsp;example.com<br />
&nbsp;<span style="color: #0000ff">&nbsp;&nbsp; &lt;Location "/*.jsp"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JkMount worker1<br />
&nbsp;&nbsp;&nbsp; &lt;/Location&gt;<br />
</span>&lt;/VirtualHost&gt;<br />
</span></span><br />
<br />
<strong>6. 在apache/conf中增加workers.properties</strong><br />
# Define 1 real worker using ajp13<br />
worker.list=worker1</p>
<p># Set properties for worker1 (ajp13)<br />
worker.worker1.type=ajp13<br />
worker.worker1.host=localhost<br />
worker.worker1.port=8009</p>
<strong>7. 修改Tomcat/conf中的server.xml配置文件，在host中增加路径映射<br />
</strong>&lt;Context path="" docBase="/usr/local/apache/htdocs" debug="0" reloadable="true" crossContext="true" /&gt; <br />
<br />
<strong>8.配置tomcat为服务</strong><br />
编写tomcat脚本，chkconfig --list 显示已有服务，chkconfig --add 添加服务 <br />
<br />
<strong>9.自定义访问找不到相应页面时，tomcat的404错误。</strong>400错误设置方法相同<br />
编辑tomcat安装目录中conf中的web.xml在最后加入<br />
&nbsp;&nbsp;&nbsp; &lt;error-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error-code&gt;404&lt;/error-code&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location&gt;/404.html&lt;/location&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/error-page&gt;<br />
<img src ="http://www.blogjava.net/jvict/aggbug/309345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2010-01-13 18:32 <a href="http://www.blogjava.net/jvict/articles/309345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat 6.0的连接池配置及测试程序 </title><link>http://www.blogjava.net/jvict/articles/226270.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Tue, 02 Sep 2008 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/226270.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/226270.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/226270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/226270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/226270.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&lt;Context path="/test" docBase="D:\workspace\DocMIS\WebRoot" reloadable="true" &gt;<br />
&nbsp;&nbsp;&nbsp;&lt;Resource<br />
&nbsp;&nbsp;&nbsp;&nbsp;name="jdbc/mysql"<br />
&nbsp;&nbsp;&nbsp;&nbsp;type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;username="test"<br />
&nbsp;&nbsp;&nbsp;&nbsp;password="test"<br />
&nbsp;&nbsp;&nbsp;&nbsp;driverClassName="org.gjt.mm.mysql.Driver"<br />
&nbsp;&nbsp;&nbsp;&nbsp;maxIdle="2"<br />
&nbsp;&nbsp;&nbsp;&nbsp;maxWait="5000"<br />
&nbsp;&nbsp;&nbsp;&nbsp;url="jdbc:mysql://localhost:3306/test"<br />
&nbsp;&nbsp;&nbsp;&nbsp;maxActive="4" /&gt;<br />
&nbsp;&nbsp;&lt;/Context&gt;<br />
<br />
<div class="postText">
<p>连接池配置需要在应用部署文件的&lt;Context&gt;节点内添加&lt;Resource&gt;描述。</p>
<p>对于Tomcat5和Tomcat6，官方建议不要将&lt;Context&gt;的配置直接写在server.xml中，使用单独的xml文件部署应用的方法请参见：<a href="http://www.blogjava.net/fastunit/archive/2008/05/22/202112.html" target="_blank">http://www.blogjava.net/fastunit/archive/2008/05/22/202112.html</a><br />
<br />
本文的测试环境：<br />
应用程序根路径：D:/fastunit<br />
数据库：oracle9i<br />
<br />
</p>
<p><strong>一、拷贝数据库驱动jar文件放到Tomcat下<br />
</strong><br />
1、Tomcat4/Tomcat5：放到/common/lib/下<br />
2、Tomcat6：放到/lib/下<br />
对于oralce9i，需要拷贝的jar文件位于/oralce安装路径/ora92/jdbc/lib/classes12.jar<br />
<br />
</p>
<p><strong>二、Tomcat连接池配置</strong></p>
<p>设置参数时，driverClassName、url、username、password的值根据实际情况设定。<br />
本例将jndi名称设为&#8220;dstest&#8221;。<br />
<br />
</p>
<p>1、Tomcat4<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">=""</span><span style="color: #ff0000">&nbsp;docBase</span><span style="color: #0000ff">="D:/fastunit"</span><span style="color: #ff0000">&nbsp;privileged</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dstest"</span><span style="color: #ff0000">&nbsp;auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ResourceParams&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dstest"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">factory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.apache.commons.dbcp.BasicDataSourceFactory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxActive</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxIdle</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">30</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxWait</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">10000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">username</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">app</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">password</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">app</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">driverClassName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">oracle.jdbc.driver.OracleDriver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">url</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:oracle:thin:@127.0.0.1:1521:orcl</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ResourceParams</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></div>
<p>2、Tomcat5/Tomcat6</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">=""</span><span style="color: #ff0000">&nbsp;docBase</span><span style="color: #0000ff">="D:/fastunit"</span><span style="color: #ff0000">&nbsp;privileged</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dstest"</span><span style="color: #ff0000">&nbsp;auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff">="100"</span><span style="color: #ff0000">&nbsp;maxIdle</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;maxWait</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="app"</span><span style="color: #ff0000">&nbsp;password</span><span style="color: #0000ff">="app"</span><span style="color: #ff0000">&nbsp;driverClassName</span><span style="color: #0000ff">="oracle.jdbc.driver.OracleDriver"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:oracle:thin:@127.0.0.1:1521:orcl"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp;<strong>三、连接池测试<br />
</strong><br />
下面的jsp文件中ctx.lookup("java:comp/env/dstest")，&#8220;dstest&#8221;对应为&lt;Resource&gt;节点的&#8220;name&#8221;属性值。<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">@&nbsp;page&nbsp;import</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">java.sql.*,javax.sql.*,javax.naming.*</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5"><br />
&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Context&nbsp;ctx&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">new</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;InitialContext();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataSource&nbsp;ds&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;(DataSource)ctx.lookup(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">java:comp/env/dstest</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;ds.getConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">connection&nbsp;pool&nbsp;connected&nbsp;!</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;}catch&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}finally&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(conn!</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">)&nbsp;&nbsp;conn.close();<br />
&nbsp;&nbsp;}<br />
</span><span style="color: #000000; background-color: #ffff00">%&gt;</span></div>
<p><strong>四、&lt;Resource&gt;节点参数说明</strong></p>
<p>1、<strong>name</strong>：数据源名称<br />
2、<strong>driverClassName</strong>：JDBC驱动的类路径<br />
3、<strong>url</strong>：数据库连接URL<br />
4、<strong>username</strong>/<strong>password</strong>：数据库的用户名和密码<br />
5、其他参数，请参考相应版本的官方说明：<br />
<a href="http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html" target="_blank">http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html</a><br />
<a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html" target="_blank"><a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html" target="_blank"><a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html" target="_blank"><a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html" target="_blank">http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html</a><br />
</a></a></a><a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html" target="_blank">http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html</a></p>
</div>
<br />
<img src ="http://www.blogjava.net/jvict/aggbug/226270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-09-02 09:50 <a href="http://www.blogjava.net/jvict/articles/226270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts、dao、hibernate项目中遇到的问题</title><link>http://www.blogjava.net/jvict/articles/225671.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 29 Aug 2008 16:34:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225671.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225671.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225671.html</trackback:ping><description><![CDATA[<p>&#183;内容部份使用<span  style="color: #4b4b4b; font-family: georgia; font-size: 14px; font-weight: bold; line-height: 20px; "><a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" class="postTitle2" href="http://www.blogjava.net/jvict/archive/2008/09/11/228373.html" style="text-decoration: none; margin-top: 0px; padding-top: 0px; color: #638f27; ">FCKeditor</a><a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" class="postTitle2" href="http://www.blogjava.net/jvict/archive/2008/09/11/228373.html" style="text-decoration: none; margin-top: 0px; padding-top: 0px; "><font  color="#000000" face="Simsun" size="4"><span  style="font-size: 16px; font-weight: normal; line-height: normal;">来进行操作Word等带格式文档</span></font></a></span></p>
<p>&#183;<span style="color: red">一个容易忽略的问题，使用Hibernate SessionFactory连接数据库并创建了session时</span><br />
buildSessionFactory.openSession<br />
　&#160;&#160;&#160;&#160;当使用完关闭 session.close()后，连接依然处于打开状态，只有当SessionFactory(工厂并闭时才真正关闭）<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;即SessionFactory.close()后才ＯＫ，不然访问到达指定连接数后就会打不开数据库连接报错，Ｔoo many connections<br />
<br />
&#183;使用EL表达式输出日期格式配合JSTL (详细：<a href="http://bbs.163jsp.com/posts/listByUser/127.html">http://bbs.163jsp.com/posts/listByUser/127.html</a> ）<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;fmt:formatDate value="${param.date}" pattern="yyyy-MM-dd" /><br />
<br />
&#183;<span style="color: red">mysql中文问题，开始一直无法插入中文，怎么改变字符集都不行</span>。<br />
　　是因为改变字符集后没有重新用新的字符集建表，原来创建的表还是老的字符集。重新创建后即可决<br />
<br />
<br />
&#183;在页面中无法使用EL表达式语言,<br />
<font color="#ff0000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;原因与解决方法：<br />
</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可能是使用了JSTL<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在jsp的开头需要加一条指令如下：<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;%@&#160;page&#160;isELIgnored="false"%><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样EL就可以正常显示了,可以同时使用JSP 2.0 EL与JSTL了<br />
<br />
&#183;<span style="color: red">缺少javaee.jar包</span>引起Tomcat 异常出错<br />
</p>
<p><br />
&#183;<span style="color: red">tomcat java.lang.NoClassDefFoundError: javax/el/ExpressionFactory</span><br />
&#160;　　少了包:el-api.jar, el-ri.jar<br />
<br />
&#183;Hibernate调试没有问题，当采用Struts或Web页面前台调用时出错，原因为Hibernate和struts包不一致，<br />
下载新的commons-collections-2.1.1.jar包更新后正常</p>
<br />
&#183;ActionErrors 无法显示：ApplicationResources.properties 没有在指定的目录中，cn.....struts目录<br />
<br />
&#183;Action中向外传递错误信息时，需要使用下面格式：<br />
&#160;&#160;&#160;&#160;&#160;&#160;<span style="color: #3366ff">&#160;ActionErrors errors =new ActionErrors();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;errors.add(errors.GLOBAL_MESSAGE, new ActionMessage("failure"));<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.saveErrors(request, errors);<br />
</span>
<img src ="http://www.blogjava.net/jvict/aggbug/225671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-30 00:34 <a href="http://www.blogjava.net/jvict/articles/225671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于MyEclipse 6.0.0 GA开发SSH应用的 Error Creating SessionFactory %%%% java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'异常的解决方案 </title><link>http://www.blogjava.net/jvict/articles/225659.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 29 Aug 2008 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225659.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225659.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225659.html</trackback:ping><description><![CDATA[<p>替换 commons-collections-2.1.1 后正常。<br />
<br />
昨天有读者提到用 MyEclipse 6.0.0 开发 Struts + Hibernate应用的时候，单独测试Hibernate的类没有问题，但是当Web层和Struts整合后，就抛出如下异常：</p>
<p>%%%% Error Creating SessionFactory %%%%&nbsp; java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package&nbsp; </p>
<p>因为我用的6.0.1，所以怎么也没出现这个异常。后来Google搜到很多人遇到了这个故障，猜测是commons-collections.jar的问题，可能和MyEclipse 6.0.0自带的包有问题导致。例如下面的是一个解决方案：<a title="http://ttitfly.javaeye.com/blog/131955" href="http://ttitfly.javaeye.com/blog/131955">http://ttitfly.javaeye.com/blog/131955</a></p>
<p>&nbsp;</p>
<p>解决方案：</p>
<p>1）下载 MyEclipse 6.0.1 来开发；</p>
<p>2）或者去<a title="http://commons.apache.org/collections/ " href="http://commons.apache.org/collections/%20">http://commons.apache.org/collections/ </a>下载一个新的包，把原来的commons-collections-xxx.jar给删了，然后用新的包替换。注意：一定要到应用的发布目录去做这个工作，而且替换后不能重新发布应用，然后立即重启Tomcat再测试。</p>
<p>&nbsp;</p>
<p>如果再报下面的错误： <br />
ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User <br />
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V <br />
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) <br />
则是： <br />
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar即可</p>
<img src ="http://www.blogjava.net/jvict/aggbug/225659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-29 22:13 <a href="http://www.blogjava.net/jvict/articles/225659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat严重错误,日志里出现: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory </title><link>http://www.blogjava.net/jvict/articles/225646.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 29 Aug 2008 11:39:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225646.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225646.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225646.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225646.html</trackback:ping><description><![CDATA[发布工程时，抛出以下异常：<br />
java.lang.NoClassDefFoundError: javax/el/ExpressionFactory<br />
Apache Tomcat/5.0.28<br />
<br />
则将javaee.jar包再copy一份放在tomcat目录的common\lib下就不会了。<br />
关于用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar这四个包可以通过myeclipse中获得，这四个包的所在的目录是：<br />
D:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5
<img src ="http://www.blogjava.net/jvict/aggbug/225646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-29 19:39 <a href="http://www.blogjava.net/jvict/articles/225646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>