﻿<?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-藏经阁-文章分类-原创</title><link>http://www.blogjava.net/zhouf/category/36476.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 24 Oct 2018 03:55:06 GMT</lastBuildDate><pubDate>Wed, 24 Oct 2018 03:55:06 GMT</pubDate><ttl>60</ttl><item><title>Tomcat配置cgi运行python脚本</title><link>http://www.blogjava.net/zhouf/articles/433448.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sat, 20 Oct 2018 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/433448.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/433448.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/433448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/433448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/433448.html</trackback:ping><description><![CDATA[今天折腾一下如何在Tomcat环境下运行python脚本，查阅了一些文档，把实现的过程小结如下，当前实验环境，Tomcat8，Eclipse。python环境是Anaconda，因为之前有安装这个东东，也就没有重新安装python环境了。首先在Eclipse中创建新工程，并可以在Tomcat中运行起来，接下来才是配置cgi的步骤<br /><br /><div>1、在web工程WEB-INF目录下创建目录cgi，当然也可以是别的名字</div><div></div><div>2、修改web.xml，开启如下设置，默认情况是注释掉的<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span>cgi<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span>org.apache.catalina.servlets.CGIServlet<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>clientinputTimeout<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>100<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>debug<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>passShellEnvironment<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>true<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>cgiPathPrefix<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>WEB-INF/cgi<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>executable<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>D:/Anaconda3/python.exe<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span>5<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span></div><div>注意修改python的路径</div><div>cgiPathPrefix: 与Server能够访问的脚本目录有关，与之前创建的目录相对应<br /><br /><div>3、开启cgi的mapping映射，修改web.xml，开启如下设置<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span>cgi<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span>/cgi-bin/*<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span></div></div></div><div>访问路径可以修改为自定义字符<br /><div></div><div>4、修改content.xml文件，在Context中添加privileged属性<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Context&nbsp;</span><span style="color: #FF0000; ">privileged</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">&gt;</span></div><br /><div>5、在工程cgi目录写python文件，如hello.py<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">'</span><span style="color: #800000; ">Content-type:&nbsp;text/plain\n\n</span><span style="color: #800000; ">'</span>)<br /><br /><span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">'</span><span style="color: #800000; ">Hello&nbsp;python</span><span style="color: #800000; ">'</span>)</div></div><div>输出text/plain说明这是一个普通文本，一定注意之后要有两个换行（小心坑啦）！！！</div><div><br /><div></div><div>6、运行工程并测试</div><div>http://localhost:8080/prj/cgi-bin/hello.py</div></div></div></div><br />所见结果，通过这种方法可以在Tomcat环境下运行python脚本了，如果是已经用python脚本做好了服务的话，还是可以考虑通过服务调用的方式与Tomcat工程进行整合，在此记录一下</div><img src ="http://www.blogjava.net/zhouf/aggbug/433448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2018-10-20 10:34 <a href="http://www.blogjava.net/zhouf/articles/433448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网页语音播报的实现</title><link>http://www.blogjava.net/zhouf/articles/432483.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 25 Apr 2017 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/432483.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432483.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/432483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432483.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432483.html</trackback:ping><description><![CDATA[<div>因为需要实现在页面中进行语音提示，有点像美团那个外卖的提示音&#8220;您有新的订单，请注意查收&#8221;，于是开始搜寻方法，最后发现一个开源项目，https://github.com/wenco/speech 用来实现语音播报，上面有文档说明。先clone下来试试</div><div>按照所给的代码，运行起来没有问题，需要在页面中放入一个标签，并写入要转换为语音的内容。为了后面为了调用方便，下面进行了一些调整。</div><div>把播放按钮隐藏起来，让事件触发播放。</div><div>修改jQuery.speech.min.js，因页面引用的文件是这个，也可以单独创建一个js在页面中引入，写入以下内容<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008000; ">//</span><span style="color: #008000; ">语音内容放在页面元素中，如果没有则创建&lt;div&nbsp;style="display:&nbsp;none"&nbsp;id="tts_content"&gt;&lt;/div&gt;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">function</span>&nbsp;say(arg)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">处理页面元素</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>($("#tts_content").length&nbsp;==&nbsp;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">存在元素</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("&lt;div&nbsp;style='display:&nbsp;none'&nbsp;id='tts_content'&gt;&lt;/div&gt;").appendTo("body");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">处理传入参数</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(arg){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#tts_content').text(arg);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#tts_content').text("您有新的消息，请注意查收");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">转化为语音</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;$('#tts_content').speech({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"speech":&nbsp;<span style="color: #0000FF; ">false</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"speed":&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;});<br />}</div><div>调整了播报速度，在程序中自动创建需要的标签，需要播报的内容根据参数传入，没有参数也可以播报默认的消息，经过这样简单的封装后，在调用时，就只需要调用say()方法即可，不需要在页面中放入标签，也方便放入其他事件中，然后页面就可以这样了<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;html</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">meta&nbsp;</span><span style="color: #FF0000; ">charset</span><span style="color: #0000FF; ">="utf-8"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span>语音播报<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/css"</span><span style="color: #0000FF; ">&gt;</span><span style="background-color: #F5F5F5; color: #800000; "><br />body</span><span style="background-color: #f5f5f5;">{</span><span style="background-color: #F5F5F5; color: #FF0000; ">background-color</span><span style="background-color: #f5f5f5;">:</span><span style="background-color: #F5F5F5; color: #0000FF; ">#fff</span><span style="background-color: #f5f5f5;">;</span><span style="background-color: #F5F5F5; color: #FF0000; ">padding-top</span><span style="background-color: #f5f5f5;">:</span><span style="background-color: #F5F5F5; color: #0000FF; ">50px</span><span style="background-color: #f5f5f5;">;</span><span style="background-color: #f5f5f5;">}</span><span style="background-color: #F5F5F5; color: #800000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="js/jQuery/jQuery-2.1.4.min.js"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="js/speech/jQuery.speech.min.js"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">button&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="kk"</span><span style="color: #0000FF; ">&gt;</span>说一个<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">button</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><span style="background-color: #f5f5f5;"><br />$(</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">#kk</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">).click(</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #f5f5f5;">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;say(</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">您有新的订单，请注意查收</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">say();</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #f5f5f5;">});<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span></div>添加按钮只是为了演示事件触发，需要说什么内容就传入什么参数，如果不传入参数，则播报默认内容。这样的调用，甚是简单，终于完成了这样的功能，很帅，哈哈:D</div><div></div><div>致谢https://github.com/wenco/speech</div></div><img src ="http://www.blogjava.net/zhouf/aggbug/432483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2017-04-25 18:48 <a href="http://www.blogjava.net/zhouf/articles/432483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在webapp中使用嵌入式数据库hsqldb</title><link>http://www.blogjava.net/zhouf/articles/432477.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Mon, 24 Apr 2017 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/432477.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432477.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/432477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432477.html</trackback:ping><description><![CDATA[<div>HSQLDB启动方便，不用安装，在之前的文档里已介绍过如何以服务器模式启动，并且通过JDBC连接，接下来介绍如何在webapp中嵌入hsqldb，让其可以随应用一起启动，比如和Tomcat服务器一起启动，不用单独启动数据库。这里有两种模式可以选择</div><div>一种是进程模式启动，按文件方式加载数据库，只有与Tomcat服务器在同一JVM中才能访问</div><div>另一种是用JAVA程序来启动服务器，以网络方式提供数据库服务，可以在Tomcat之外用hsqldb客户端来连接，方便调试</div><div>这两种数据文件都建议放在工程里，如下案例中是将数据库放在WEB-INF/db/目录下<br /><br /></div><div></div><div>1.加载hsqldb.jar</div><div>将hsqldb.jar文件加入到现有webapp工程中，拷贝hsqldb.jar至WEB-INF/lib/hsqldb.jar<br /><br /></div><div></div><div>2.创建WEB-INF/db/目录</div><div>在开发阶段，需要把数据文件放在工程中，而不是tomcat里，这样处理对打包，版本控制管理也方便</div><div>为了方便启动数据库，可以写一个批处理，如WEB-INF/startdb.bat，大家可根据自己的路径修改，内容如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->cd&nbsp;db<br />@java&nbsp;-classpath&nbsp;../lib/hsqldb.jar&nbsp;org.hsqldb.server.Server&nbsp;--database.0&nbsp;file:mycms&nbsp;--dbname.0&nbsp;mycmsdb</div>文件名和数据库名可以不同，此处文件名为mycms，而数据库名为mycmsdb<br /><br /><div>3.使用Servlet启动数据库</div><div>可以创建一个自启动Servlet，用于启动数据库，这种方式可以使用客户端工具连接到应用数据库上，主要用于在线调试，或远程管理<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.zhouf.mydb;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;javax.servlet.ServletConfig;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.servlet.ServletException;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.servlet.annotation.WebServlet;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.servlet.http.HttpServlet;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;org.hsqldb.server.Server;<br /><br />@WebServlet(loadOnStartup=1)<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;HsqldbServlet&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;HttpServlet&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;serialVersionUID&nbsp;=&nbsp;1L;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Server&nbsp;server&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Server();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;HsqldbServlet()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;constructor&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;init(ServletConfig&nbsp;config)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;ServletException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>.init(config);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path=<span style="color: #0000FF; ">this</span>.getServletContext().getRealPath("/WEB-INF/db/mycms");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("dbpath["+path+"]");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.setDatabaseName(0,&nbsp;"mycmsdb");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.setDatabasePath(0,&nbsp;path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.setPort(9001);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.setSilent(<span style="color: #0000FF; ">true</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;thread=<span style="color: #0000FF; ">new</span>&nbsp;Thread(<span style="color: #0000FF; ">new</span>&nbsp;Runnable(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;run()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.start();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;destroy()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>.destroy();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.shutdown();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}</div>注意服务端口不要冲突<br /><br /><div>4.完成一个数据库连接类，用于处理数据库连接管理<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;DBManage&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;Connection&nbsp;getConnection()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">根据连接配置获取数据库连接</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName("org.hsqldb.jdbcDriver").newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">连接Hsqldb&nbsp;Server</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn=&nbsp;DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/mycmsdb;shutdown=true","SA","");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//直接获得In-process连接<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path&nbsp;=&nbsp;DBManage.class.getResource("").toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;dbpath&nbsp;=&nbsp;path.substring(0,path.indexOf("classes"))&nbsp;+&nbsp;"db/mycms";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;DriverManager.getConnection("jdbc:hsqldb:"+dbpath,"SA","");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;conn;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div>上面的连接管理两种方式都支持，可选用，这样应用可以发布到tomcat里独立运行，也可以打包成war发布，这样一个带war文件就可以演示，相当愉快:D</div></div></div><img src ="http://www.blogjava.net/zhouf/aggbug/432477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2017-04-24 22:23 <a href="http://www.blogjava.net/zhouf/articles/432477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HSQLDB数据库使用介绍</title><link>http://www.blogjava.net/zhouf/articles/432476.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 23 Apr 2017 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/432476.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432476.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/432476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432476.html</trackback:ping><description><![CDATA[用过HSQLDB一段时间，其作为一个小型数据库，很是小巧，jar包也就1M多，麻省虽小，五脏俱全。对于一此网站系统或是小型的应用系统，应该足够满足要求了，主要是绿色环保，不需要进行安装，这点我很喜欢，特别是直接打包到web应用里，可以直接使用，用不着更换运行环境后，重新配置数据库连接。下面就介绍一下hsqldb的一些简单的使用<br /><br />下载HSQLDB<br />首先下载hsqldb，其官方网站为hsqldb.org，目前最新版本是2.4.0，最早用过1.9版本的，就觉得甚是喜欢，主页界面上有下载的链接，就一个压缩文件包，不需要区分操作系统。下载后解压即可<br /><br />目录结构介绍<br />bin:存放运行的批处理，可以参照着放入自己的批处理用于启动或管理数据库<br />data:用于存放数据文件的地方，新解压时为空，后面自己用的时候，可能放在里面，也可以放在其他地方<br />doc:文档，与数据库操作的所有文档都在里面，很详细，有什么问题可以在里面找找<br />lib:jar文件，HSQLDB核心的jar包<br />sample:一些配置的模板<br /><br />数据库启动<br />HSQLDB运行分为三种模式，分别为内存模式，进程模式，和服务器模式。<br />在内存模式下，所有的数据都将在内存中完成，如果程序退出，则相应的数据也将同时被销毁。连接JDBC的实例为：jdbc:hsqldb:mem:dbname<br />在进程模式下，是直接以文件方式进行操作，所有文件均写入文件，关闭数据库后数据可以保留，这种模式下不能接受其他程序访问<br />服务器模式，常用，又分为三种，即Servet,WebServer,Servlet，详见官方文档，服务器模式单独启动一个JVM用于提供数据库服务，并开放连接端口，其他程序可以通过jdbc或客户端连接，这也是在开发和调试中常用的一种方式，在上线运行后，可采用进程模式<br />以Server方式启动服务器<br />修改bin/runServer.bat，另存为myBookServer<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->cd&nbsp;..\data<br />@java&nbsp;-classpath&nbsp;../lib/hsqldb.jar&nbsp;org.hsqldb.server.Server&nbsp;--database.0&nbsp;file:book&nbsp;--dbname.0&nbsp;bookdb</div>即在data目录下创建数据文件，文件名为book，启动服务的数据库名为bookdb，如果需要修改监听端口，可以使用--poot 9002，如果不修改端口，可以不用添加这个参数，默认端口为9001，启动后的显示如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->D:\hsqldb-2.4.0\hsqldb\bin&gt;myBookServer.bat<br /><br />D:\hsqldb-2.4.0\hsqldb\bin&gt;cd&nbsp;..\data<br />[Server@4517d9a3]:&nbsp;Startup&nbsp;sequence&nbsp;initiated&nbsp;from&nbsp;main()&nbsp;method<br />[Server@4517d9a3]:&nbsp;Could&nbsp;not&nbsp;load&nbsp;properties&nbsp;from&nbsp;file<br />[Server@4517d9a3]:&nbsp;Using&nbsp;cli/<span style="color: #0000FF; ">default</span>&nbsp;properties&nbsp;only<br />[Server@4517d9a3]:&nbsp;Initiating&nbsp;startup&nbsp;sequence<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />[Server@4517d9a3]:&nbsp;Server&nbsp;socket&nbsp;opened&nbsp;successfully&nbsp;in&nbsp;6&nbsp;ms.<br />[Server@4517d9a3]:&nbsp;Database&nbsp;[index=0,&nbsp;id=0,&nbsp;db=file:book,&nbsp;alias=bookdb]&nbsp;opened&nbsp;successfully&nbsp;in&nbsp;354&nbsp;ms.<br />[Server@4517d9a3]:&nbsp;Startup&nbsp;sequence&nbsp;completed&nbsp;in&nbsp;362&nbsp;ms.<br />[Server@4517d9a3]:&nbsp;2017-04-23&nbsp;15:22:33.599&nbsp;HSQLDB&nbsp;server&nbsp;2.4.0&nbsp;is&nbsp;online&nbsp;on&nbsp;port&nbsp;9001<br />[Server@4517d9a3]:&nbsp;To&nbsp;close&nbsp;normally,&nbsp;connect&nbsp;and&nbsp;execute&nbsp;SHUTDOWN&nbsp;SQL<br />[Server@4517d9a3]:&nbsp;From&nbsp;command&nbsp;line,&nbsp;use&nbsp;[Ctrl]+[C]&nbsp;to&nbsp;abort&nbsp;abruptly</div>看到这个提示，说明数据库已经启动好了，并开启了监听端口9001，现在可以通过客户端程序连接了<br />在bin目录下，有一个runManager.bat和一个runManagerSwing.bat，这两个批处理都可以打开自带的客户端程序，只是界面风格有所不同，runManager要简洁些，下面介绍一下runManagerSwing的使用，双击打开后，需要填写连接信息，当然也可以在命令行里通过参数的方式进行连接，在弹出对话框里输入连接信息<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/runManagerSwingLogin.png" width="350" height="221" alt="" /><br />mybook是为当前配置取的名字，URL里添加上bookdb，如果不是9001端口的话，还需要添加端口，如//localhost:9001/bookdb，登录后，就可以进入到管理界面了<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/hsql_manager.png" width="400" height="297" alt="" /><br />在这里操作HSQLDB，比如创建表，修改数据之类的，如果需要修改密码之类的操作，文档里有详解<br />创建表，插入数据，可以上图界面中运行如下命令<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->CREATE&nbsp;TABLE&nbsp;TB_BOOKS(BOOKID&nbsp;INTEGER&nbsp;GENERATED&nbsp;BY&nbsp;DEFAULT&nbsp;AS&nbsp;IDENTITY&nbsp;NOT&nbsp;NULL&nbsp;PRIMARY&nbsp;KEY,BOOKNAME&nbsp;VARCHAR(30),AUTHOR&nbsp;VARCHAR(30));</div>创建一个book表，分别为bookid,bookname,author<br /><br />JDBC访问<br />接下来用JAVA写入数据并测试<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.zhouf.hsql;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Connection;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.DriverManager;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.ResultSet;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.SQLException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Statement;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;HsqlTest&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;SQLException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">initData();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;getConnection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;=&nbsp;conn.createStatement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;=&nbsp;stmt.executeQuery("select&nbsp;*&nbsp;from&nbsp;tb_books");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(rs.next()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getString("bookname")&nbsp;+&nbsp;"=&gt;"&nbsp;+&nbsp;rs.getString("author"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;Connection&nbsp;getConnection(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName("org.hsqldb.jdbcDriver");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/bookdb",&nbsp;"SA",&nbsp;"");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(SQLException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;conn;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;initData()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;SQLException{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;getConnection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;=&nbsp;conn.createStatement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;10;&nbsp;i&nbsp;&lt;&nbsp;30;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;"insert&nbsp;into&nbsp;tb_books(bookname,author)&nbsp;values('BookName"+i+"','Author"+i+"')";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.addBatch(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.executeBatch();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div>先调用initData()初始化数据，就可以在管理界面中看到数据了，再运行java可以读取数据，JDBC连接没有问题，记得一定要在工程里引用lib/hsqldb.jar库<br />此时在data目录下有很多book开头的文件，只是后缀有所不同，有临时文件，日志文件，属性文件以及脚本文件等，如果运行了shutdown命令，则其他文件会自动清理，仅保留properties和script文件，如果要带走数据库，把这两个文件带走就好了。<br />如果不希望每次打开管理界面都弹出对话框要求输入内容，可以在命令行里添加参数，拷贝一份bin/runManagerSwing.bat并修改为如下内容<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->cd&nbsp;..\data<br />@java&nbsp;-classpath&nbsp;..\lib\hsqldb.jar&nbsp;org.hsqldb.util.DatabaseManagerSwing&nbsp;--url&nbsp;jdbc:hsqldb:hsql:<span style="color: #008000; ">//</span><span style="color: #008000;">localhost/bookdb&nbsp;--user&nbsp;SA<br /></span></div>另存为myBookManager.bat，下次直接运行这个批处理就可能直接连接到数据库服务器，不用再弹出连接对话框了，前提是服务器正在运行中，如果运行了shutdown关闭了服务器，则需要重新启动服务器进行连接。<br />至此，基本的hsqldb的使用就完成了，文档里还有其它更多的配置和连接方式，详细情况请参阅doc目录下的文档。<br />如果需要把hsqldb嵌入到webapp中运行，不用单独启动服务器，请关注后续文档，稍后整理好再发布。自己码了一下午才整理好这一篇，看来得提高效率了，如果这篇文档能对大家所有帮助，那就太好了。<img src ="http://www.blogjava.net/zhouf/aggbug/432476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2017-04-23 16:41 <a href="http://www.blogjava.net/zhouf/articles/432476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaDB数据库使用笔记</title><link>http://www.blogjava.net/zhouf/articles/432256.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 10 Jan 2017 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/432256.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432256.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/432256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432256.html</trackback:ping><description><![CDATA[<div>在做一些小的应用系统时，用过嵌入式数据库，使用过HSQLDB，这个比较小巧，在做了几个应用之后觉得挺好用的，因为数据量不多，也能够满足要求，也就在嵌入式数据库这条路上越走越远了。</div><div>在JAVA里也有一个嵌入式数据库，也想尝试着用一下，便有了下面这篇日志。在安装jdk的时候会提示安装一个数据库，如果勾选的话，则会在安装Java嵌入式数据库JavaDB，在JAVA_HOME目录下多出一个db的目录（在jdk6版本里目录名为JavaDB），里面就是与数据库有关的文件了，如果安装jdk时没有选择安装，可以在官网<a href="http://db.apache.org/derby/derby_downloads.html" target="_blank">http://db.apache.org/derby/derby_downloads.html</a>上下载解压即可，经过了一段时间的摸索，现小结如下。<br /><br /><h3>1.配置环境变量</h3><div>在使用之前，需要配置环境变量DERBY_HOME指向db所在目录，本机JAVA_HOME为G:\Java\jdk1.8.0_73,则DERBY_HOME应该配置为G:\Java\jdk1.8.0_73\db，或%JAVA_HOME%\db，如果希望后面在命令行里用起来方便点，也可以将%DERBY_HOME%\db\bin添加到path里去<br /><br /><h3>2.目录介绍</h3><div>在DERBY_HOME目录下有两个目录bin和lib</div><div>bin:存放执行批处理文件，用于查看，启动和停止数据库的脚本</div><div>lib:存放所用到的jar包</div><div>bin目录下有几个主要的文件，有两个不同的方式，没有.bat后缀的文件为Linux平台下运行的脚本，bat文件为Windows平台使用的批处理</div><div>dblook:用于查看数据库的基本信息及DDL语句</div><div>ij:命令行客户端程序，提供与数据库的交互</div><div>NetworkServerControl:提供网络服务，主要被startNetworkServer和stopNetworkServer调用</div><div>startNetworkServer:启动网络数据库模式，开启监听</div><div>stopNetworkServer:关闭网络数据库模式，停止监听</div><div>sysinfo:查看当前系统信息，可用于检测数据库是否正确安装</div><div>几个以CP结束的批处理，主要用于在不同模式下设置CLASSPATH用的，如果把lib目录下的jar文件添加到CLASSPATH中，就可以不用通过执行批处理来设置CLASSPATH了<br /><br /><h3>3.用命令行方式开启数据库</h3><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->G:\Java\jdk1.8.0_73\db\bin&gt;ij<br />ij&nbsp;版本&nbsp;10.11<br />ij&gt;&nbsp;connect&nbsp;'jdbc:derby:mydb;create=true';</div></div><div>加上create=true表明如果库mydb不存在，则创建，数据库文件存放位置为当前目录，接下来创建一个表，可以把三个字段定义信息写在一行里面，结束时要加分号</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ij&gt;&nbsp;create&nbsp;table&nbsp;stu(id&nbsp;int&nbsp;not&nbsp;null&nbsp;generated&nbsp;by&nbsp;default&nbsp;as&nbsp;identity,<br />&gt;&nbsp;stuname&nbsp;varchar(20),<br />&gt;&nbsp;email&nbsp;varchar(30));<br />已插入/更新/删除&nbsp;0&nbsp;行</div></div><div>向表中写入一条记录，并进行查询</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ij&gt;&nbsp;insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('Tom','tom@test.com');<br />已插入/更新/删除&nbsp;1&nbsp;行<br />ij&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;stu;<br />ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|STUNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|EMAIL<br />---------------------------------------------------------------<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Tom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|tom@test.com<br /><br />已选择&nbsp;1&nbsp;行</div></div><div>退出命令行状态</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ij&gt;&nbsp;exit;</div></div><div>重新进入命令行方式，进行数据验证</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->G:\Java\jdk1.8.0_73\db\bin&gt;ij<br />ij&nbsp;版本&nbsp;10.11<br />ij&gt;&nbsp;connect&nbsp;'jdbc:derby:mydb';<br />ij&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;stu;<br />ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|STUNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|EMAIL<br />---------------------------------------------------------------<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Tom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|tom@test.com<br /><br />已选择&nbsp;1&nbsp;行</div></div><div>查看当前表结构可以用describe &lt;表名&gt;</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ij&gt;&nbsp;describe&nbsp;stu;<br />COLUMN_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|TYPE_NAME|DEC&amp;|NUM&amp;|COLUM&amp;|COLUMN_DEF|CHAR_OCTE&amp;|IS_NULL&amp;<br />------------------------------------------------------------------------------<br />ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|INTEGER&nbsp;&nbsp;|0&nbsp;&nbsp;&nbsp;|10&nbsp;&nbsp;|10&nbsp;&nbsp;&nbsp;&nbsp;|GENERATED&amp;|NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|NO<br />STUNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|VARCHAR&nbsp;&nbsp;|NULL|NULL|20&nbsp;&nbsp;&nbsp;&nbsp;|NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|YES<br />EMAIL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|VARCHAR&nbsp;&nbsp;|NULL|NULL|30&nbsp;&nbsp;&nbsp;&nbsp;|NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|YES<br /><br />已选择&nbsp;3&nbsp;行<br />ij&gt;</div></div>这是在命令行方式下的基本使用<br /><br /><h3>4.在Java工程中使用JavaDB</h3><div>在Eclipse中创建一个Java工程，导入derby.jar包，代码如下</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.db;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Connection;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.DriverManager;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Statement;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;EmbedDB&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;driver&nbsp;=&nbsp;"org.apache.derby.jdbc.EmbeddedDriver";<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;protocol&nbsp;=&nbsp;"jdbc:derby:db3;create=true";&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;在工程目录下创建数据库<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;private&nbsp;static&nbsp;String&nbsp;protocol&nbsp;=&nbsp;"jdbc:derby:db/db3;create=true";&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">在工程目录下db目录中创建数据库<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;private&nbsp;static&nbsp;String&nbsp;protocol&nbsp;=&nbsp;"jdbc:derby:D:/mydbs/db3;create=true";&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">在D:/mydbs/目录下创建数据库</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver).newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Loaded&nbsp;the&nbsp;appropriate&nbsp;driver");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;DriverManager.getConnection(protocol);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;=&nbsp;conn.createStatement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.executeUpdate("create&nbsp;table&nbsp;stu(id&nbsp;int&nbsp;not&nbsp;null&nbsp;generated&nbsp;by&nbsp;default&nbsp;as&nbsp;identity,stuname&nbsp;varchar(20),email&nbsp;varchar(30))");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(String&nbsp;str&nbsp;:&nbsp;"one,two,three,four,five".split(","))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;"insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('"&nbsp;+&nbsp;str&nbsp;+&nbsp;"','"&nbsp;+&nbsp;str&nbsp;+&nbsp;"@test.com')";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.addBatch(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.executeBatch();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("insert&nbsp;over");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.commit();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><div>运行结果<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Loaded&nbsp;the&nbsp;appropriate&nbsp;driver<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('one','one@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('two','two@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('three','three@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('four','four@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('five','five@test.com')<br />insert&nbsp;over</div><br /><h3>5.网络数据库模式</h3><div>JavaDB是跑在JVM中的，如果此时再开启一个新的窗口，打开当前数据库，会报错，如果希望有多个客户端连接，如开发阶段，一边在Eclipse里运行程序，一边在命令行里查看数据记录，这种情况就可以使用JavaDB的网络启动模式<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->G:\Java\jdk1.8.0_73\db\bin&gt;startNetworkServer<br />Tue&nbsp;Jan&nbsp;10&nbsp;09:10:54&nbsp;CST&nbsp;2017&nbsp;:&nbsp;已使用基本服务器安全策略安装了&nbsp;Security&nbsp;Manager。<br />Tue&nbsp;Jan&nbsp;10&nbsp;09:11:04&nbsp;CST&nbsp;2017&nbsp;:&nbsp;Apache&nbsp;Derby&nbsp;网络服务器&nbsp;-&nbsp;10.11.1.2&nbsp;-&nbsp;(1629631)&nbsp;已启动并准备接受端口&nbsp;1527&nbsp;上的连接</div></div><div>表示当前窗口正在监听，即网络服务已开启</div><div>查看数据库的基本情况可以用dblook<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->G:\Java\jdk1.8.0_73\db\bin&gt;dblook&nbsp;-d&nbsp;'jdbc:derby://localhost:1527/mydb'<br />--&nbsp;时间戳记：2017-01-10&nbsp;09:18:30.232<br />--&nbsp;源数据库为：mydb<br />--&nbsp;连接&nbsp;URL&nbsp;为：jdbc:derby://localhost:1527/mydb<br />--&nbsp;appendLogs:&nbsp;false<br /><br />--&nbsp;----------------------------------------------<br />--&nbsp;表的&nbsp;DDL&nbsp;语句<br />--&nbsp;----------------------------------------------<br /><br />CREATE&nbsp;TABLE&nbsp;"APP"."STU"&nbsp;("ID"&nbsp;INTEGER&nbsp;NOT&nbsp;NULL&nbsp;GENERATED&nbsp;BY&nbsp;DEFAULT&nbsp;AS&nbsp;IDENTITY&nbsp;(START&nbsp;WITH&nbsp;1,&nbsp;INCREMENT&nbsp;BY&nbsp;1),&nbsp;"STUNAME"&nbsp;VARCHAR(20),&nbsp;"EMAIL"&nbsp;VARCHAR(30));</div></div>以命令行方式进行数据库连接并测试<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->G:\Java\jdk1.8.0_73\db\bin&gt;ij<br />ij&nbsp;版本&nbsp;10.11<br />ij&gt;&nbsp;connect&nbsp;'jdbc:derby://localhost:1527/mydb'<br />ij&gt;&nbsp;show&nbsp;tables&nbsp;in&nbsp;app;<br />TABLE_SCHEM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|TABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|REMARKS<br />------------------------------------------------------------------------<br />APP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|STU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br /><br />已选择&nbsp;1&nbsp;行<br />ij&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;stu;<br />ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|STUNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|EMAIL<br />---------------------------------------------------------------<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Tom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|tom@test.com<br /><br />已选择&nbsp;1&nbsp;行<br />ij&gt;</div><div>此时也可以在Eclipse中使用Java程序进行数据库访问，需要加载derbyclient.jar包，代码如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.db;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Connection;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.DriverManager;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.sql.Statement;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;ClientDB&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;driver&nbsp;=&nbsp;"org.apache.derby.jdbc.ClientDriver";<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;protocol&nbsp;=&nbsp;"jdbc:derby://localhost:1527/mydb";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver).newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Loaded&nbsp;the&nbsp;appropriate&nbsp;driver");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;DriverManager.getConnection(protocol);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;=&nbsp;conn.createStatement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;&nbsp;10;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;"insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user"&nbsp;+&nbsp;i&nbsp;+&nbsp;"','user"&nbsp;+&nbsp;i&nbsp;+&nbsp;"@test.com')";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.addBatch(sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.executeBatch();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("insert&nbsp;over");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.commit();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><div>控制以输出结果为<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Loaded&nbsp;the&nbsp;appropriate&nbsp;driver<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user1','user1@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user2','user2@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user3','user3@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user4','user4@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user5','user5@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user6','user6@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user7','user7@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user8','user8@test.com')<br />insert&nbsp;into&nbsp;stu(stuname,email)&nbsp;values('user9','user9@test.com')<br />insert&nbsp;over</div></div><div>此时查看数据库内容为<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ij&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;stu;<br />ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|STUNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|EMAIL<br />---------------------------------------------------------------<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Tom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|tom@test.com<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user1@test.com<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user2@test.com<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user3@test.com<br />5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user4@test.com<br />6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user5@test.com<br />7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user6@test.com<br />8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user7@test.com<br />9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user8@test.com<br />10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|user9@test.com<br /><br />已选择&nbsp;10&nbsp;行<br />ij&gt;</div></div><br /><h3>小结</h3>终于学习了JavaDB，又尝试了一种嵌入式数据库，在做一些小项目或是应用演示时很方便。在了解过JavaDB后，觉得JavaDB也是个不错的选择，很多操作都做成了批处理方式，在HSQLDB中也可以自己构造批处理，在HSQLDB中有个图形界面可以用，相对直观一些，对于体积来说，HSQLDB好像更小巧点，他们都支持内存数据库，目前在数据库性能上没有做比较。总的来说，JavaDB是个不错的选择，使用起来比较方便。此文仅做简单介绍，如果希望了解得更多，可参考官方文档http://db.apache.org/derby/manuals/index.html#latest</div><div>有几个不同部分的文档，与SQL相关的部分如创建删除表的SQL怎么写，可以参考其中的《Derby Reference Manual》<br />另外在学习JavaDB里找了一些资料，下面这一篇我觉得还不错，一并附上<br />参考资料：<a href="http://www.codejava.net/java-se/jdbc/connect-to-apache-derby-java-db-via-jdbc" target="_blank">http://www.codejava.net/java-se/jdbc/connect-to-apache-derby-java-db-via-jdbc</a></div></div></div></div></div><img src ="http://www.blogjava.net/zhouf/aggbug/432256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2017-01-10 10:48 <a href="http://www.blogjava.net/zhouf/articles/432256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat+Eclipse环境下使用Jenkins2.38搭建持续集成(CI)环境</title><link>http://www.blogjava.net/zhouf/articles/432234.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Mon, 02 Jan 2017 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/432234.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432234.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/432234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432234.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432234.html</trackback:ping><description><![CDATA[在网上看到很多关于使用Jenkins构建持续集成环境的文章，在有空的时候也希望尝试一下，这样可以在测试服务器上看到提交的最新版本<br />
<h3>1.下载安装Jenkins</h3>
可以在<a href="http://mirrors.jenkins-ci.org" target="_blank">http://mirrors.jenkins-ci.org</a>上下载安装包，也可以选择在官网（<a href="https://jenkins.io" target="_blank">https://jenkins.io</a>）上下载war包(<a href="http://mirrors.jenkins.io/war-stable/latest/jenkins.war" target="_blank">http://mirrors.jenkins.io/war-stable/latest/jenkins.war</a>)或是安装包(<a href="http://mirrors.jenkins-ci.org/windows/jenkins-2.38.zip" target="_blank">http://mirrors.jenkins-ci.org/windows/jenkins-2.38.zip</a>)，写这篇文章时最新版本为2.38。如果选择安装包方式，下载后安装即可，安装完成后会自动启动浏览器向导，根据提示操作完成安装<br />
本机下载安装包，安装到C:\Jenkins，如下配置也是基于此目录进行，下载及安装过程截图如下<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/download_jenkins.png" width="600" height="333" alt="" /><br />
选择Download Jenkins<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/download.png" width="600" height="447" alt="" /><br />
下拉选择相应的操作系统版本，也可以直接下载war包，本文下载Windows版本的安装包，安装过程指定安装目录即可，安装完成后，会自动启动浏览器进行配置<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/unlock_jenkins.png" width="600" height="564" alt="" /><br />
根据页面提示，在文件中找到密码填入<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/select_plugins.png" width="600" height="564" alt="" /><br />
选择插件，本例选择第二项，自己定义插件，打开第二项里的默认选择和推荐插件一样，如果不做修改，就相当于选择推荐插件安装<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/install_plugins2.png" width="600" height="562" alt="" /><br />
安装完成后，设置管理员账号<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/admin_account.png" width="600" height="566" alt="" /><br />
保存结束安装<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/finish.png" width="600" height="561" alt="" /><br />
点击开始进入Jenkins界面<br />
<img src="http://www.blogjava.net/images/blogjava_net/zhouf/jenkins_index.png" border="0" alt="" /><br />
<h3>2.启动Jenkins</h3>
Jenkins默认工作目录会在当前用户目录下创建.jenkins目录，也可以通过设置环境变量来修改，例如：
<div>set JENKINS_HOME=C:\jenkins</div>
<div>然后重新启动jenkins，可以放在与安装目录不同的地方<br />
进入安装目录C:\Jenkins，用命令行方式启动<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->java&nbsp;-jar&nbsp;jenkins.war</div>
</div>
默认端口为8080，如果需要指定端口，可以使用如下参数指定，如指定端口为9000<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->java&nbsp;-jar&nbsp;jenkins.war&nbsp;--httpPort=9000</div>
也可以修改目录下的jenkins.xml配置文件，将其中的httpPort修改即可<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span>-Xrs&nbsp;-Xmx256m&nbsp;-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle&nbsp;-jar&nbsp;"%BASE%\jenkins.war"&nbsp;--httpPort=8080&nbsp;--webroot="%BASE%\war"<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span></div>
<h3>3.部署应用到Jenkins</h3>
之前的工程是基于Tomcat+Eclipse开发的，工程不是用Maven管理的，后面就对工程进行了改造，用Ant编译，添加了build.xml文件，在Ant中需要找到Tomcat目录，为了灵活一点，在系统里添加了Tomcat的环境变量CATALINA_HOME，以及Ant环境的安装，这是对原有工程的改造，如果新的工程采用Maven方式的话，应该会没有这么麻烦，附上build.xml<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;standalone="no"</span><span style="color: #0000FF; ">?&gt;</span><br />
<br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project&nbsp;</span><span style="color: #FF0000; ">basedir</span><span style="color: #0000FF; ">="."</span><span style="color: #FF0000; ">&nbsp;default</span><span style="color: #0000FF; ">="build"</span><span style="color: #FF0000; ">&nbsp;name</span><span style="color: #0000FF; ">="xi"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">environment</span><span style="color: #0000FF; ">="env"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="tomcat.home"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${env.CATALINA_HOME}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="tomcat.lib"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${env.CATALINA_HOME}/lib"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="web.root"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${env.CATALINA_HOME}/webapps"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="ant.home"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${env.ANT_HOME}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="debuglevel"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="source,lines,vars"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="target"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="1.7"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="source"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="1.7"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="webRoot.dir"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${basedir}/WebContent"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="src.dir"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${basedir}/src"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="lib.dir"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${webRoot.dir}/WEB-INF/lib"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="log.file"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${tomcat.home}/webapps/log.info"</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tstamp</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">format&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="build.time"</span><span style="color: #FF0000; ">&nbsp;pattern</span><span style="color: #0000FF; ">="yyyy-MM-dd&nbsp;HH:mm:ss"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tstamp</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">path&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="prj.classpath"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">pathelement&nbsp;</span><span style="color: #FF0000; ">location</span><span style="color: #0000FF; ">="build/classes"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileset&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tomcat.lib}"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="*.jar"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileset</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileset&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${lib.dir}"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="*.jar"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileset</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">path</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">path&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="tomcat.classpath"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileset&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tomcat.lib}"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="*.jar"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileset</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileset&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tomcat.home}/bin"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="*.jar"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileset</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">path</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="init"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo&nbsp;</span><span style="color: #FF0000; ">message</span><span style="color: #0000FF; ">="----------&nbsp;init&nbsp;----------"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mkdir&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="build/classes"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">copy&nbsp;</span><span style="color: #FF0000; ">includeemptydirs</span><span style="color: #0000FF; ">="false"</span><span style="color: #FF0000; ">&nbsp;todir</span><span style="color: #0000FF; ">="build/classes"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileset&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="src"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">exclude&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="**/*.java"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileset</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">copy</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="clean"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo&nbsp;</span><span style="color: #FF0000; ">message</span><span style="color: #0000FF; ">="----------&nbsp;clean&nbsp;----------"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="build/classes"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="build/${ant.project.name}.war"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">delete</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="compile"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="init"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo&nbsp;</span><span style="color: #FF0000; ">message</span><span style="color: #0000FF; ">="${ant.project.name}:&nbsp;${ant.file}"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javac&nbsp;</span><span style="color: #FF0000; ">debug</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;debuglevel</span><span style="color: #0000FF; ">="${debuglevel}"</span><span style="color: #FF0000; ">&nbsp;destdir</span><span style="color: #0000FF; ">="build/classes"</span><span style="color: #FF0000; ">&nbsp;includeantruntime</span><span style="color: #0000FF; ">="false"</span><span style="color: #FF0000; ">&nbsp;&nbsp;encoding</span><span style="color: #0000FF; ">="UTF-8"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">src&nbsp;</span><span style="color: #FF0000; ">path</span><span style="color: #0000FF; ">="src"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">classpath&nbsp;</span><span style="color: #FF0000; ">refid</span><span style="color: #0000FF; ">="prj.classpath"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">javac</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="build/classes/gen-conf.xml"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="build"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="compile"</span><span style="color: #FF0000; ">&nbsp;description</span><span style="color: #0000FF; ">="make&nbsp;war"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">war&nbsp;</span><span style="color: #FF0000; ">destfile</span><span style="color: #0000FF; ">="build/${ant.project.name}.war"</span><span style="color: #FF0000; ">&nbsp;basedir</span><span style="color: #0000FF; ">="WebContent"</span><span style="color: #FF0000; ">&nbsp;webxml</span><span style="color: #0000FF; ">="WebContent/WEB-INF/web.xml"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;lib&nbsp;dir="${lib.dir}"&gt;&lt;/lib&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">classes&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${basedir}/build/classes"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">classes</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">war</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="deploy"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="build"</span><span style="color: #FF0000; ">&nbsp;description</span><span style="color: #0000FF; ">="deploy&nbsp;to&nbsp;tomcat"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo&nbsp;</span><span style="color: #FF0000; ">message</span><span style="color: #0000FF; ">="----------deploy&nbsp;to&nbsp;tomcat----------"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="${tomcat.home}/webapps/${ant.project.name}.war"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tomcat.home}/webapps/${ant.project.name}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">copy&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="build/${ant.project.name}.war"</span><span style="color: #FF0000; ">&nbsp;todir</span><span style="color: #0000FF; ">="${tomcat.home}/webapps"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="undeploy"</span><span style="color: #FF0000; ">&nbsp;description</span><span style="color: #0000FF; ">="deploy&nbsp;to&nbsp;tomcat"</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo&nbsp;</span><span style="color: #FF0000; ">message</span><span style="color: #0000FF; ">="----------&nbsp;undeploy&nbsp;project&nbsp;----------"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="${tomcat.home}/webapps/${ant.project.name}.war"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tomcat.home}/webapps/${ant.project.name}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span></div>
这样写是为了在Jenkins里调用Ant完成编译和部署的工作。<br />
在Jenkins里创建项目，当前选择的是自由项目，写好项目名称，后续就是对项目进行配置，如果不希望保留过多的旧构建，可以设置丢弃。另外还需要获取源码的服务器，默认支持CVS和Subversion，也可以通过插件支持Git，因当前项目托管于SVN，配置如下图<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/job_conf1.png" width="586" height="745" border="1" alt="" style="border-color: #808080;" /><br />
后面是如何触发的配置，如下设置为每天6:30进行构建，每一个小时检查一下源码，主要是获取到代码后的动作设置<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/job_conf.png" width="317" height="651" border="1" alt="" style="border-color: #808080;" /><br />
在动作设置里用Windows的批处理方式进行，原本考虑在服务器上做一个批处理，由Jenkins调用，经测试需要用绝对路径，不知是不是某个地方没配置好，后来就改用这种方式，对服务进行启动停止控制，对工程进行部署<br />
经测试，此方式可以用，当前用来解决Tomcat+Eclipse环境下的工程自动构建问题，写在这个地方做个记录，如果有机会，尝试一下Maven，看看是不是要简单点<img src ="http://www.blogjava.net/zhouf/aggbug/432234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2017-01-02 11:51 <a href="http://www.blogjava.net/zhouf/articles/432234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将Tomcat8日志配置为log4j日志系统</title><link>http://www.blogjava.net/zhouf/articles/Tomcat8-log4j-config.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sat, 30 Apr 2016 11:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/Tomcat8-log4j-config.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/430314.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/Tomcat8-log4j-config.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/430314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/430314.html</trackback:ping><description><![CDATA[<div>Tomcat控制台启动日志是由java.util.logging.Logger实现的，我只是希望能自己定义输出格式，找了下文档，发现在%CATALINA_HOME%\conf目录下面有个logging.properties文件，里面有项内容为：</div><div>java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</div><div>这里的formatter需要通过类来实现，要是能在这里直接写formatter格式字串就好了，继续研究下吧。</div><div><br />电脑上安装的是Tomcat8，找了下官网上的文档，有关于使用Log4j作为日志的配置</div><div>http://tomcat.apache.org/tomcat-8.0-doc/logging.html#Using_Log4j</div><div>就试下了，下面是官网的实现步骤，文中描述的%CATALINA_HOME%是指Tomcat安装目录<br /><br />1. 准备日志配置文件</div><div>官网上有一个配置文件，先拿来用下，后面根据自己的需要再慢慢作调整，保存到%CATALINA_HOME%\lib\log4j.properties<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->log4j.rootLogger=INFO,&nbsp;CATALINA<br /><br />#&nbsp;Define&nbsp;all&nbsp;the&nbsp;appenders<br />log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender<br />log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.<br />log4j.appender.CATALINA.Append=true<br />log4j.appender.CATALINA.Encoding=UTF-8<br />#&nbsp;Roll-over&nbsp;the&nbsp;log&nbsp;once&nbsp;per&nbsp;day<br />log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'<br />log4j.appender.CATALINA.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout<br />log4j.appender.CATALINA.layout.ConversionPattern&nbsp;=&nbsp;%d&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">%t</span><span style="color: #800000; font-weight: bold; ">]</span>&nbsp;%-5p&nbsp;%c-&nbsp;%m%n<br /><br />log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender<br />log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.<br />log4j.appender.LOCALHOST.Append=true<br />log4j.appender.LOCALHOST.Encoding=UTF-8<br />log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'<br />log4j.appender.LOCALHOST.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout<br />log4j.appender.LOCALHOST.layout.ConversionPattern&nbsp;=&nbsp;%d&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">%t</span><span style="color: #800000; font-weight: bold; ">]</span>&nbsp;%-5p&nbsp;%c-&nbsp;%m%n<br /><br />log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender<br />log4j.appender.MANAGER.File=${catalina.base}/logs/manager.<br />log4j.appender.MANAGER.Append=true<br />log4j.appender.MANAGER.Encoding=UTF-8<br />log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'<br />log4j.appender.MANAGER.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout<br />log4j.appender.MANAGER.layout.ConversionPattern&nbsp;=&nbsp;%d&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">%t</span><span style="color: #800000; font-weight: bold; ">]</span>&nbsp;%-5p&nbsp;%c-&nbsp;%m%n<br /><br />log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender<br />log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.<br />log4j.appender.HOST-MANAGER.Append=true<br />log4j.appender.HOST-MANAGER.Encoding=UTF-8<br />log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'<br />log4j.appender.HOST-MANAGER.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout<br />log4j.appender.HOST-MANAGER.layout.ConversionPattern&nbsp;=&nbsp;%d&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">%t</span><span style="color: #800000; font-weight: bold; ">]</span>&nbsp;%-5p&nbsp;%c-&nbsp;%m%n<br /><br />log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender<br />log4j.appender.CONSOLE.Encoding=UTF-8<br />log4j.appender.CONSOLE.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout<br />log4j.appender.CONSOLE.layout.ConversionPattern&nbsp;=&nbsp;%d&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">%t</span><span style="color: #800000; font-weight: bold; ">]</span>&nbsp;%-5p&nbsp;%c-&nbsp;%m%n<br /><br />#&nbsp;Configure&nbsp;which&nbsp;loggers&nbsp;log&nbsp;to&nbsp;which&nbsp;appenders<br />log4j.logger.org.apache.catalina.core.ContainerBase.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Catalina</span><span style="color: #800000; font-weight: bold; ">]</span>.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">localhost</span><span style="color: #800000; font-weight: bold; ">]</span>=INFO,&nbsp;LOCALHOST<br />log4j.logger.org.apache.catalina.core.ContainerBase.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Catalina</span><span style="color: #800000; font-weight: bold; ">]</span>.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">localhost</span><span style="color: #800000; font-weight: bold; ">]</span>.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">/manager</span><span style="color: #800000; font-weight: bold; ">]</span>=INFO,&nbsp;MANAGER<br />log4j.logger.org.apache.catalina.core.ContainerBase.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Catalina</span><span style="color: #800000; font-weight: bold; ">]</span>.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">localhost</span><span style="color: #800000; font-weight: bold; ">]</span>.<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">/host-manager</span><span style="color: #800000; font-weight: bold; ">]</span>=INFO,&nbsp;HOST-MANAGER</div><br /><div>2. 需要下载Log4j的jar包</div><div>1.2的版本下载如下</div><div>http://logging.apache.org/log4j/1.2/download.html</div><div></div><div>3. 下载Tomcat8的扩展组件</div><div>就是在下载Tomcat8的那个页面<a href="http://tomcat.apache.org/download-80.cgi">http://tomcat.apache.org/download-80.cgi</a>，下面点有个Extras，里面有两项<a href="http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.33/bin/extras/tomcat-juli-adapters.jar">JULI adapters jar</a> 和 <a href="http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.33/bin/extras/tomcat-juli.jar">JULI log4j jar</a>的下载，下载后的两个文件为tomcat-juli.jar，tomcat-juli-adapters.jar</div><div></div><div>4. 准备和替换</div><div>把下载的log4j.jar和tomcat-juli-adapters.jar放到%CATALINA_HOME%\lib</div><div>把下载的tomcat-juli.jar替换掉%CATALINA_HOME%\bin\tomcat-juli.jar</div><div></div><div>5. 删除%CATALINA_HOME%\conf\logging.properties文件</div><div></div><div>6. 重新启动Tomcat<br /><hr /><div>上面就是官网给出的操作步骤，结果可行，只是第一次运行时，控制台什么都没有，原来日志配置文件里的</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->log4j.rootLogger=INFO,&nbsp;CATALINA</div></div><div>就输出到文件里去了，把CONSOLE加上</div><div><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->log4j.rootLogger=INFO,&nbsp;CATALINA,CONSOLE</div></div><div>这里重新启动Tomcat，就可以看到原来的日志信息了。</div><div>到此，将Tomcat配置为log4j日志系统就改造结束了，要实现自己定义日志格式，那就折腾一下这个log4j.properties吧</div></div></div><img src ="http://www.blogjava.net/zhouf/aggbug/430314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2016-04-30 19:48 <a href="http://www.blogjava.net/zhouf/articles/Tomcat8-log4j-config.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF示例及Logic源代码</title><link>http://www.blogjava.net/zhouf/articles/386992.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 04 Sep 2012 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/386992.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/386992.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/386992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/386992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/386992.html</trackback:ping><description><![CDATA[在参照网上的一些资料学习了一下GEF，算是有点眉目了，可总想看看示例的源代码，就是官方的一些示例。之前在网上找了很多，本以为是一个单独的工程，可总是没找到，很无语，在一些博客里也一两句话就带过去了，感觉很轻松似的。可是我却看得很模糊，在经过一番努力后，终于找到了在什么地方了<br />原来GEF的源代码是和插件一起发布的，安装好GEF插件后，在系统工程里就会有，大概步骤如下<br />在新建工程里选择New-&gt;Example<br /><img src="http://www.blogjava.net/images/blogjava_net/zhouf/gef.JPG" border="0" alt="" width="500" height="474" /><br />然后选择如上图所示的GEF(Graphical Editing Framework)Plug-ins下面的Logic，这就是我找寻很久的Logic示例工程，当然还有其它的几个工程也是这样的，然后下一步会生成一个系统默认的工程名：org.eclipse.gef.examples.logic 这是一个可以运行的工程，所有源代码就在其中，这下可以运行起来再看看代码啦，也可以试着改改看看效果。<br />在运行出来的一个Eclipse窗口里面，创建一个新的工程，具体是什么工程好像没有什么影响吧，我创建的是一个JAVA工程，然后创建一个文件，类型选择如上图所示的Logic Diagram文件，取好文件名后就可以确定了，这时就会看到一个打开的.logic的文件，里面什么都没有，刚开始，我到这里就迷惑了，这下怎么开始呢，怎么不像网上说的那样可以画点东西出来呢，原来这里的面板是浮动的，是靠编辑器的右侧浮动，把鼠标移动到靠近Outline面板的位置，浮动工具箱就会出来，然后，就可以开始拖点什么出来了。<br />接下来嘛，就可以好好学习，天天上网啦:D<img src ="http://www.blogjava.net/zhouf/aggbug/386992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2012-09-04 19:12 <a href="http://www.blogjava.net/zhouf/articles/386992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习一下GEF开发</title><link>http://www.blogjava.net/zhouf/articles/386848.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Mon, 03 Sep 2012 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/386848.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/386848.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/386848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/386848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/386848.html</trackback:ping><description><![CDATA[最近接触了一下Eclipse的插件开发，需要学习GEF，据说有点难度，所以还是有心理准备的，在网上找了很多的资料，都没发现比较好容易入手的，看过《八进制》的BLOG，也找过PDF，Google,Baidu找出来的东东基本上都看过，都看得昏昏的，后来找到一个资料叫《GEF开发指南-插件开发.pdf》，下载好Eclipse和GEF插件后就可以开工了，至于GEF插件的安装，我就不在这里写出来的，网上很多的，开发环境配置好后，就可以开始入手了。<br />那文档有一百多页，分了几个部分，根着指导一步一步做下来，再加上学习和理解的过程，差不多花了一周时间，好漫长呀，不过做完之后，就可以对GEF的体系结构有个入门的了解了，接下来想看看带的一些官方示例，想从那里再学习一下，可总找不到，网上很多文档都写得很简单，一两句话就说过去了，也没看出来是怎么出来的。无奈，就只有自己慢慢的摸索了，看来GEF这样的东东确实不好对付，还得继续战斗<img src ="http://www.blogjava.net/zhouf/aggbug/386848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2012-09-03 11:22 <a href="http://www.blogjava.net/zhouf/articles/386848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyBatis代码生成工具mybatis-generator的使用</title><link>http://www.blogjava.net/zhouf/articles/383720.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 22 Jul 2012 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/383720.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/383720.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/383720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/383720.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/383720.html</trackback:ping><description><![CDATA[在用MyBatis的时候，会涉及到POJO类的编写，Mapper接口的编写，还有一些xml配置文件，数据库的创建也得自己完成，这样只是把数据库访问方式换成了ORM的方式进行，工作量并没有减少，在MyBatis主页里有看到提供的代码生成工具，便试了一下，写好配置文件后，执行一条命令便生成了之前我们手工完成的这些文件，很酷哇。<br />首先在网上下载<a href="http://code.google.com/p/mybatis/downloads/detail?name=mybatis-generator-core-1.3.1-bundle.zip&amp;can=3&amp;q=Product%3DGenerator">mybatis-generator</a>，此处下载的是3.1.1的版本的一个zip包，下载好后解压<br />解压后有个doc目录和一个lib目录，doc目录提供了一个使用说明文档，lib目录是我们需要的jar文件，当然还有提供源代码和文档jar，这些可以导入MyEclipse里用<br />进入到lib目录中（当然也可以在别处创建一个目录，只不过在使用时要指定jar文件路径，此处为了方便点，就把文件生成在这个目录里了），创建一个配置文件，如conf.xml，此处文件名自己命名，没有命名方面的特殊要求，我是参考doc文档里的配置文件写的，如下<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;generatorConfiguration<br />&nbsp;&nbsp;PUBLIC&nbsp;"-//mybatis.org//DTD&nbsp;MyBatis&nbsp;Generator&nbsp;Configuration&nbsp;1.0//EN"<br />&nbsp;&nbsp;"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">generatorConfiguration</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; ">classPathEntry&nbsp;</span><span style="color: #FF0000; ">location</span><span style="color: #0000FF; ">="mysql-connector-java-3.1.13-bin.jar"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;<br /></span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="mysqlTables"</span><span style="color: #FF0000; ">&nbsp;targetRuntime</span><span style="color: #0000FF; ">="MyBatis3"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">jdbcConnection&nbsp;</span><span style="color: #FF0000; ">driverClass</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionURL</span><span style="color: #0000FF; ">="jdbc:mysql://localhost/bbs"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userId</span><span style="color: #0000FF; ">="root"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000FF; ">="1233"</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; ">jdbcConnection</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javaTypeResolver&nbsp;</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="forceBigDecimals"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="false"</span><span style="color: #FF0000; ">&nbsp;</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; ">javaTypeResolver</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javaModelGenerator&nbsp;</span><span style="color: #FF0000; ">targetPackage</span><span style="color: #0000FF; ">="test.model"</span><span style="color: #FF0000; ">&nbsp;targetProject</span><span style="color: #0000FF; ">="src"</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="trimStrings"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">javaModelGenerator</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">sqlMapGenerator&nbsp;</span><span style="color: #FF0000; ">targetPackage</span><span style="color: #0000FF; ">="test.xml"</span><span style="color: #FF0000; ">&nbsp;&nbsp;targetProject</span><span style="color: #0000FF; ">="src"</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">sqlMapGenerator</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javaClientGenerator&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="XMLMAPPER"</span><span style="color: #FF0000; ">&nbsp;targetPackage</span><span style="color: #0000FF; ">="test.dao"</span><span style="color: #FF0000; ">&nbsp;&nbsp;targetProject</span><span style="color: #0000FF; ">="src"</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">javaClientGenerator</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">table&nbsp;</span><span style="color: #FF0000; ">tableName</span><span style="color: #0000FF; ">="tb_users"</span><span style="color: #FF0000; ">&nbsp;</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; ">table</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">context</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">generatorConfiguration</span><span style="color: #0000FF; ">&gt;</span></div>&lt;table&gt;标签里指定要生成的相关数据表，如果有多个表的话，需要配置多个&lt;table&gt;<br />数据库还是用之前创建好的数据库和表，并指定了要生成文件的相关表，因为要用到与数据库的连接，得加载数据库驱动，可以将mysql的驱动放在系统环境变量的classpath里，也可以在配置文件里指定路径，此处为了配置文件方便，把mysql的驱动jar包拷贝到lib目录下了，并创建一个用于存放生成文件的src文件夹<br />在命令窗口模式下，进入到lib目录，执行如下命令<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">java&nbsp;-jar&nbsp;mybatis-generator-core-1.3.1.jar&nbsp;-configfile&nbsp;conf.xml&nbsp;-overwrite</span></div><div>命令执行完成后，便可在src目录下看到生成的一些文件了，大概看了一下生成的代码，自己写的话，还是要花一点时间的，有好的工具，可真是方便呀，不过发现一个问题，生成的代码里的好多的注释，感觉注释比可用代码都多，我查了一下配置文件，找到了一个去掉生成注释的地方，把它加在了配置文件里，大概位置如下，我之前放错了地方，就没法运行<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="mysqlTables"</span><span style="color: #FF0000; ">&nbsp;targetRuntime</span><span style="color: #0000FF; ">="MyBatis3"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">commentGenerator</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="suppressAllComments"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="suppressDate"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</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; ">commentGenerator</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">jdbcConnection&nbsp;</span><span style="color: #FF0000; ">driverClass</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; "><br /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span></div>这样改了之后，生成的代码就没有注释了，这下清爽了许多，至于&lt;commentGenerator&gt;标签和里面的两个属性的含义，doc文档里有详细的说明，我就不贴在这里了，如果要把生成的文件放到工程应用里，注意改下相关的路径及包名，应该就可以了。<br />用了一下，感觉这个东东很不错，确实省事儿不少，不过我还没有在项目中尝试，写在这里了先:)</div><img src ="http://www.blogjava.net/zhouf/aggbug/383720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2012-07-22 17:12 <a href="http://www.blogjava.net/zhouf/articles/383720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初试MyBatis</title><link>http://www.blogjava.net/zhouf/articles/383711.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 22 Jul 2012 04:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/383711.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/383711.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/383711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/383711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/383711.html</trackback:ping><description><![CDATA[虽然MyBatis发布已经有一段时间了，一直想试试，可总是被中断，这次总算是跑了一下，对MyBatis有所了解。<br />在www.mybatis.org上可以找到下载链接，我下载的是mybatis-3.1.1这个版本，下载一个zip包，里面包含有主要的库文件mybatis-3.1.1.jar，还有一些引用的jar，一个PDF说明文档，这个说明文档提供的是E文版，可以在网上找到相应的中文版，下载完成后，就开始我的操作了。<br />在MyEclipse里创建了一个java工程，本来是打算在Web中使用的，没有创建Web工程，只是想试一下MyBatis这东东，java工程就可以了。<br />创建时引入MyBatis库和数据库驱动库，创建一个空的工程<br /><br />准备好数据库，此处用MySQL做练习，创建一个bbs数据库，创建一个tb_users表，结构如下<br /><div><div>+----------+----------+------+-----+---------+-------+</div><div>| Field &nbsp; &nbsp;| Type &nbsp; &nbsp; | Null | Key | Default | Extra |</div><div>+----------+----------+------+-----+---------+-------+</div><div>| userid &nbsp; | int(11) &nbsp;| NO &nbsp; | PRI | &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; |</div><div>| username | char(20) | NO &nbsp; | &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; |</div><div>+----------+----------+------+-----+---------+-------+</div></div><br />创建一个User类，与数据表对应<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.cuit.prj.domain;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;User&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;userid;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;userName;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;User()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;User(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;userid,&nbsp;String&nbsp;userName)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.userid&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;userid;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.userName&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;userName;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getUserid()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;userid;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setUserid(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;userid)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.userid&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;userid;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getUserName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;userName;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setUserName(String&nbsp;userName)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.userName&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;userName;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div>再创建一个UserMapper接口，里面提供了对User的相关操作<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.cuit.prj.presistence;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.cuit.prj.domain.User;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">interface</span><span style="color: #000000; ">&nbsp;UserMapper&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;selectUser(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;userid);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;insertUser(User&nbsp;user);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;updateUser(User&nbsp;user);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;deleteUser(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;userid);<br />}<br /></span></div>再创建一个UserMapper.xml，与UserMapper.java对应的一个配置文件，经本例测试，其中的id要和接口中的方法名一致<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;mapper<br />PUBLIC&nbsp;"-//mybatis.org//DTD&nbsp;Mapper&nbsp;3.0//EN"<br />"http://mybatis.org/dtd/mybatis-3-mapper.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">namespace</span><span style="color: #0000FF; ">="com.cuit.prj.presistence.UserMapper"</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; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="selectUser"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #FF0000; ">&nbsp;resultType</span><span style="color: #0000FF; ">="com.cuit.prj.domain.User"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;tb_users&nbsp;where&nbsp;userid&nbsp;=&nbsp;#{userid}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">insert&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="insertUser"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="com.cuit.prj.domain.User"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;tb_users(userid,username)&nbsp;values&nbsp;(#{userid},#{userName})<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">insert</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">update&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="updateUser"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="com.cuit.prj.domain.User"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;tb_users&nbsp;set&nbsp;username&nbsp;=&nbsp;#{userName}&nbsp;where&nbsp;userid&nbsp;=&nbsp;#{userid}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">update</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="deleteUser"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;from&nbsp;tb_users&nbsp;where&nbsp;userid&nbsp;=&nbsp;#{userid}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">delete</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mapper</span><span style="color: #0000FF; ">&gt;</span></div><div>在src下面创建MyBatis配置文件mybatis-conf.xml，配置文件名没有特殊规定，因为在后面的代码里需要指定文件名<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;configuration<br />PUBLIC&nbsp;"-//mybatis.org//DTD&nbsp;Config&nbsp;3.0//EN"<br />"http://mybatis.org/dtd/mybatis-3-config.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">configuration</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; ">environments&nbsp;</span><span style="color: #FF0000; ">default</span><span style="color: #0000FF; ">="development"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">environment&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="development"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">transactionManager&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="JDBC"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dataSource&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="POOLED"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="driver"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="url"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="jdbc:mysql://localhost/bbs"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="username"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="root"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="password"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="1233"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dataSource</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">environment</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; ">environments</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; ">mappers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">resource</span><span style="color: #0000FF; ">="com/cuit/prj/presistence/UserMapper.xml"</span><span style="color: #FF0000; ">&nbsp;</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; ">mappers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span></div></div>创建一个获取连接的SessionFactory的类<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.cuit.prj.sessionfactory;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.IOException;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.Reader;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.io.Resources;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSession;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSessionFactory;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSessionFactoryBuilder;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;SessionFactory&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;SqlSession&nbsp;getSession(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;resource&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">mybatis-conf.xml</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reader&nbsp;reader&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Resources.getResourceAsReader(resource);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSessionFactory&nbsp;sqlMapper&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SqlSessionFactoryBuilder().build(reader);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlMapper.openSession();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;session;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div>做好上述准备后，写一个主方法调用测试，如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.cuit.prj;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSession;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.cuit.prj.domain.User;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.cuit.prj.presistence.UserMapper;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.cuit.prj.sessionfactory.SessionFactory;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;AppTest&nbsp;{<br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Hello</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;SessionFactory.getSession();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserMapper&nbsp;mapper&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;session.getMapper(UserMapper.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mapper.selectUser(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(user.getUserName());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">finally</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div>在数据库中添加两条记录，并提交<br /><div><div>+--------+----------+</div><div>| userid | username |</div><div>+--------+----------+</div><div>| 1 &nbsp; &nbsp; &nbsp;| user1 &nbsp; &nbsp;|</div><div>| 2 &nbsp; &nbsp; &nbsp;| user2 &nbsp; &nbsp;|</div><div>+--------+----------+</div></div>接下来就可以运行看看结果了。输出如下：<br /><div><div>Hello</div><div>user2</div></div><div>终于跑起来了，在处理了一系列的Exception之后看到的结果，上面的测试只是做了一个读取数据的操作，如果有新增或修改数据，需要调用session.commit()操作。<br />大概小结一下，用了MyBatis感觉还是很不错的，把SQL语句和JAVA代码分离开，喜欢自己掌控SQL语句的人们可能会喜欢MyBatis一些，不像Hibernate那样可以完全不用写SQL语句。只是配置文件和接口写起来还是有些麻烦，还有POJO类的生成，工作量还是不小哇，网上找到一个生成工具，下次研究一下再补充上来。</div><img src ="http://www.blogjava.net/zhouf/aggbug/383711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2012-07-22 12:48 <a href="http://www.blogjava.net/zhouf/articles/383711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HSQLDB外键使用</title><link>http://www.blogjava.net/zhouf/articles/367357.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 27 Dec 2011 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/367357.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/367357.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/367357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/367357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/367357.html</trackback:ping><description><![CDATA[前段时间用了HSQLDB，感觉这个东东还不错，这两天在把一个以前MYSQL上的东东转到HSQLDB上来，除了一些类型需要转换以外，还有就是外键的处理，着实让我折腾了一番。因为是系统改造，没有使用ORM映射，若是使用Hibernate或MyBatis之类的来做，应该会避免这个语句的问题<br />在此用三个表的创建为例记录一下外键的写法<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">create</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">table</span><span style="color: #000000; ">&nbsp;notice(<br />&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold; ">integer</span><span style="color: #000000; ">&nbsp;generated&nbsp;</span><span style="color: #0000FF; ">by</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">default</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">as</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">primary</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">key</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">30</span><span style="color: #000000; ">)<br />)<br /><br /></span><span style="color: #0000FF; ">create</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">table</span><span style="color: #000000; ">&nbsp;tbuser(<br />&nbsp;&nbsp;&nbsp;&nbsp;userid&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">primary</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">key</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">30</span><span style="color: #000000; ">)<br />)<br /><br /></span><span style="color: #0000FF; ">create</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">table</span><span style="color: #000000; ">&nbsp;noticecheck(<br />&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold; ">integer</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">references</span><span style="color: #000000; ">&nbsp;notice(id)&nbsp;</span><span style="color: #0000FF; ">on</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">delete</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">cascade</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;userid&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">references</span><span style="color: #000000; ">&nbsp;tbuser(userid)&nbsp;</span><span style="color: #0000FF; ">on</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">delete</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">cascade</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;checktime&nbsp;</span><span style="color: #000000; font-weight: bold; ">timestamp</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">default</span><span style="color: #000000; ">&nbsp;</span><span style="color: #FF00FF; ">current_timestamp</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">unique</span><span style="color: #000000; ">(id,userid)<br />)</span></div>另外noticecheck也可以使用如下的方式写语句<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">create</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">table</span><span style="color: #000000; ">&nbsp;noticecheck(<br />&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold; ">integer</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;userid&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">),<br />&nbsp;&nbsp;&nbsp;&nbsp;checktime&nbsp;</span><span style="color: #000000; font-weight: bold; ">timestamp</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">default</span><span style="color: #000000; ">&nbsp;</span><span style="color: #FF00FF; ">current_timestamp</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">unique</span><span style="color: #000000; ">(id,userid),<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">constraint</span><span style="color: #000000; ">&nbsp;noticecheck_fk_1&nbsp;</span><span style="color: #0000FF; ">foreign</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">key</span><span style="color: #000000; ">(id)&nbsp;</span><span style="color: #0000FF; ">references</span><span style="color: #000000; ">&nbsp;notice(id)&nbsp;</span><span style="color: #0000FF; ">on</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">delete</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">cascade</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">constraint</span><span style="color: #000000; ">&nbsp;noticecheck_fk_2&nbsp;</span><span style="color: #0000FF; ">foreign</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">key</span><span style="color: #000000; ">(userid)&nbsp;</span><span style="color: #0000FF; ">references</span><span style="color: #000000; ">&nbsp;tbuser(userid)&nbsp;</span><span style="color: #0000FF; ">on</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">delete</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">cascade</span><span style="color: #000000; "><br />)</span></div>好啦，就这样，官方所给的文档全E文的，费劲。网上也少有这方面的资料，看来使用HSQLDB的还不多，记在这里了先：）<img src ="http://www.blogjava.net/zhouf/aggbug/367357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2011-12-27 17:59 <a href="http://www.blogjava.net/zhouf/articles/367357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SimpleDateFormat进行月分转换（MMM）异常的问题</title><link>http://www.blogjava.net/zhouf/articles/363792.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 15 Nov 2011 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/363792.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/363792.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/363792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/363792.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/363792.html</trackback:ping><description><![CDATA[在做一个任务时，需要对日期进行转换，源始字串格式为：Tue Nov 15 09:17:35 CST 2011<br />希望转换成日期类型，写了如下代码<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Date&nbsp;pubd&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SimpleDateFormat(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">EEE&nbsp;MMM&nbsp;dd&nbsp;HH:mm:ss&nbsp;zzz&nbsp;yyyy</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)).parse(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Tue&nbsp;Nov&nbsp;15&nbsp;09:17:35&nbsp;CST&nbsp;2011</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);</span></div>没想到出现了异常提示<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">java.text.ParseException:&nbsp;Unparseable&nbsp;date:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Tue&nbsp;Nov&nbsp;15&nbsp;09:17:35&nbsp;CST&nbsp;2011</span><span style="color: #000000; ">"</span></div>我逐步排查，最后发现是MMM的问题，因为最后将代码精简到只剩MMM时还是出现这样的问题<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Date&nbsp;pubd&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SimpleDateFormat(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">MMM</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)).parse(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Nov</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);</span></div>在网上查了些文档，也多半是讲解怎样用SimpleDateFormat进行日期转换的，好像遇到这样异常的还不多，最后看到JAVA文档里还有一个构造函数<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">SimpleDateFormat(String&nbsp;pattern,&nbsp;Locale&nbsp;locale)</span></div>结合网上的一些提示，Nov是英文中的表示方法，就试着在构造函数里添加一个Locale.US，结果如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Date&nbsp;pubd&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SimpleDateFormat(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">EEE&nbsp;MMM&nbsp;dd&nbsp;HH:mm:ss&nbsp;zzz&nbsp;yyyy</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,Locale.US)).parse(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Tue&nbsp;Nov&nbsp;15&nbsp;09:17:35&nbsp;CST&nbsp;2011</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);</span></div>终于解决了这个问题，也许这对于有经验的老手来说，算不上什么。暂时记在这里先，如果有朋友再碰到这样的问题，希望能很快解决<img src ="http://www.blogjava.net/zhouf/aggbug/363792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2011-11-15 10:10 <a href="http://www.blogjava.net/zhouf/articles/363792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浮动QQ客服的实现</title><link>http://www.blogjava.net/zhouf/articles/362729.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sat, 05 Nov 2011 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/362729.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/362729.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/362729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/362729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/362729.html</trackback:ping><description><![CDATA[这个功能是最近的一个东东需要，所以关注了一下，在网上找了一些，感觉都有点复杂，经过一段时间的学习后，终于实现了一个稍微简洁的版本<br />我是用的wp.qq.com官方网站上的提示完成了，在页面里定义一个DIV，里面的内容安排就自己确定了，我的代码如下<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;在线客服部分&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="online_box"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="title"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;联系我们<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="qqlist"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">电话:</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">&amp;nbsp;&amp;nbsp;&amp;nbsp;</span><span style="color: #000000; ">(028)1234567</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">&amp;nbsp;&amp;nbsp;&amp;nbsp;</span><span style="color: #000000; ">(028)1234567</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在线咨询:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客服1　</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; ">&nbsp;href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&amp;uin=111111&amp;site=qq&amp;menu=yes"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">img&nbsp;</span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:111111:41"</span><span style="color: #FF0000; ">&nbsp;alt</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #FF0000; ">&nbsp;title</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客服2　</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; ">&nbsp;href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&amp;uin=222222&amp;site=qq&amp;menu=yes"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">img&nbsp;</span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:222222:41"</span><span style="color: #FF0000; ">&nbsp;alt</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #FF0000; ">&nbsp;title</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客服3　</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; ">&nbsp;href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&amp;uin=333333&amp;site=qq&amp;menu=yes"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">img&nbsp;</span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:333333:41"</span><span style="color: #FF0000; ">&nbsp;alt</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #FF0000; ">&nbsp;title</span><span style="color: #0000FF; ">="点击这里给我发消息"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">div</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; ">div</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;在线客服部分结束&nbsp;</span><span style="color: #008000; ">--&gt;</span></div>那部分&lt;a&gt;...&lt;/a&gt;的代码是在wp.qq.com上拷贝的，网站上还有很多的样式供选择，为了适应本来的页面样式，还得定义该层的样式，确定显示位置等，使其更规范些，我的样式定义如下<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">*******************在线服务部分*********************</span><span style="color: #008000; ">*/</span><span style="color: #800000; "><br />#online_box</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;position</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;absolute</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;float</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;right</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;left</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;5px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;top</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;200px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;z-index</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;10</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;1px&nbsp;solid&nbsp;#0168b7</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;170px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;background-color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;white</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;text-align</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;left</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box&nbsp;#title</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;background-color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;#0168b7</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;white</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;font-size</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;12</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;font-weight</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;bold</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;10px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box&nbsp;#qqlist</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;font-size</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;12</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">&nbsp;20px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box&nbsp;#qqlist&nbsp;img</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;vertical-align</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">middle</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span></div>接下来就是对页面滚动的处理，实现层的浮动，我借用了jQuery来完成的，库的引入就不必再写了，下面附上写的脚本<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">$(document).ready(</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(){<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;selfHeight&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;$(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).height();<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;window.pageYOffset&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined')&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;window.pageYOffset;<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;document.compatMode&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined'&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;document.compatMode&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'BackCompat')&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.documentElement.scrollTop;<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;document.body&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined')&nbsp;{<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.body.scrollTop;<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).css(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">top</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;bodyTop</span><span style="color: #000000; ">+</span><span style="color: #000000; ">document.body.clientHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">selfHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">});<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">$(window).scroll(</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">()&nbsp;{<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;selfHeight&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;$(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).height();<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;window.pageYOffset&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined')&nbsp;{<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;window.pageYOffset;<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;document.compatMode&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined'&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;document.compatMode&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'BackCompat')&nbsp;{<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.documentElement.scrollTop;<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">&nbsp;document.body&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;'undefined')&nbsp;{<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyTop&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.body.scrollTop;<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">靠上端方式</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">$("#online_box").css("top",&nbsp;100&nbsp;+&nbsp;bodyTop);</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">靠下端方式</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).css(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">top</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;bodyTop</span><span style="color: #000000; ">+</span><span style="color: #000000; ">document.body.clientHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">selfHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">});</span></div>我采用靠左下的方式显示，直接在CSS中无法确定靠下显示的页面显示高度，所以在ready()里做了一次定位，如果是按上对齐方式，这部分可以不写，直接把TOP写在CSS里就行了，下面的滚动定位也会简单些<br />好啦，任务完成，收工，今天周六，把前几天完成的事情记录一下先:)<img src ="http://www.blogjava.net/zhouf/aggbug/362729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2011-11-05 10:01 <a href="http://www.blogjava.net/zhouf/articles/362729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CKeditor3.3配置记录</title><link>http://www.blogjava.net/zhouf/articles/322282.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 30 May 2010 16:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/322282.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/322282.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/322282.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/322282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/322282.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 记录新的CKEditor3.3的一些配置,以及中文问题的处理&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouf/articles/322282.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouf/aggbug/322282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2010-05-31 00:30 <a href="http://www.blogjava.net/zhouf/articles/322282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在MyEclipse中使设置JSP页面编码及注释</title><link>http://www.blogjava.net/zhouf/articles/319604.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 28 Apr 2010 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/319604.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/319604.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/319604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/319604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/319604.html</trackback:ping><description><![CDATA[在前面的一篇文章里有写到在MyEclipse中更改JSP的页面编码,那种方法在新版的MyEclipse中似乎不太有效,经查资料找到以下方法可以设置JSP页面的默认编码,windows-&gt;Preferences-&gt;MyEclipse-&gt;Files &amp; Editors-&gt;JSP-&gt;encoding:设置为ISO10646/Unicode(UTF-8)<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/jsp_char_1.PNG" height="529" width="650" /><br />
<br />
在MyEclipse中设置注释<br />
MyEclipse有很多自动化的功能,可以方便我们开发,其中快速插入注释就很好用,减少了很多重复的劳动,MyEclipse中有很多已定义好的注释格式,如果我们觉得不够满意,可以自己修改或是重新定义,其操作步骤如下:windows -&gt;Preferences -&gt; Java -&gt;Code Style -&gt;Code Templates -&gt;Comments -&gt;Types -&gt;edit(编辑)<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/code_templates2.PNG" height="547" width="679" /><br />
在"Insert Variable..."里还可以添加时间等变量,修改为自己合适的方式<br />
如果希望每次新建类或是方法时自动按照这种定义好的格式添加好注释的话,可以选中下面的复选框(Automatically add Comments for new Methods and types),点击Apply 确认即可<br />
<br />
让MyEclipse显示行号<br />
我刚安装好的MyEclipse 8.0M1默认是不显示行号的,但可以通过以下设置显示行号: windows -&gt;Preferences -&gt;General -&gt;Editor -&gt;Text Editors -&gt;Show line numbers(勾选)<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/line_number.PNG" height="775" width="887" /><br />
另外还有一个简单的方法,就是在编辑器的行号显示的位置点击鼠标右键,在菜单中选择"Show Line Numbers"即可<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/319604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2010-04-28 15:26 <a href="http://www.blogjava.net/zhouf/articles/319604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在MyEclipse中使用模板</title><link>http://www.blogjava.net/zhouf/articles/319034.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 21 Apr 2010 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/319034.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/319034.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/319034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/319034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/319034.html</trackback:ping><description><![CDATA[在MyEclipse中使用模板可以大大提高我们的编程效率，在Eclipse或MyEclipse中默认使用的是Alt+/调出模板，如果调不出模板的话，可能是快捷键存在冲突，可以通过如下方法设置 Window-&gt;Preferences-&gt;General-&gt;Keys 打开如下界面（我用的版本是MyEclipse 8.0M1)<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/1.PNG" height="550" width="939" /><br />
在界面中找到Content Assist,可以看到默认绑定到Alt+/，可以通过下面的Binding:重新设置绑定键，建议使用不常用的，可以在Binding里单击列排序，可看到设定的键有没有重复，当设定好后点击OK确定，这步就完成了<br />
下面进行模板的定义<br />
选择Window-&gt;Preferences-&gt;Java-&gt;Editor-&gt;Templates进入如下界面<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/2.PNG" /><br />
在这里可以看到系统已定义好的模板，输入模板名后按Alt+/或是前面设定好的热键即可根据模板替换文本，如系统自带有sysout模板，如下<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/3.PNG" /><br />
那么我们在写java文件时就可以输入sysout然后打入Alt+/或是前面设定好的热键，就可以替换成Pattern里的文本，另外界面里还有个设置Automatically insert的地方，如果选中将其设置为on，那么在使用模板替换时就不会出现提示对话框，直接替换，若该状态不是on，在执行模板替换时会出现询问的提示<br />
如果觉得这些不够用，我们也可以自己定义模板，选择旁边的New...即可，如下图<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/zhouf/4.PNG" /><br />
建了一个mytmp的模板，定义了五行文本，这里通过&#8220;Insert Variable...&#8221;插入了几个变量，它们分别代表不同的含义<br />
${enclosing_package} 表示当前文件的包名<br />
${enclosing_type} 表示当前类名<br />
${enclosing_method} 表示当前的方法名<br />
${cursor} 表示光标的位置<br />
另外，在&#8220;Insert Variable...&#8221;里还有很多可选择的东东，大家看下英文的变量名就能应该能理解的<br />
此时，当我们在编写java文件时，输入mytmp后按Alt+/或是前面设定好的热键，就可以替换为上面定义的五行文本，这样的操作真是太帅了<img src="/CuteSoft_Client/CuteEditor/images/emwink.gif" alt="" align="absmiddle" border="0" /><br />
其实它自带模板的已经很多了，定义好热键及个性化的模板，可以大大加快我们写代码的速度，高效哇！！！<br />
MyEclipse真是个好东东，看来还有很多值得研究的东西，把这点东东记录在这里，供还在钻研的朋友们参考一下<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/319034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2010-04-21 22:21 <a href="http://www.blogjava.net/zhouf/articles/319034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将数据源的连接配置改为从配置文件读取</title><link>http://www.blogjava.net/zhouf/articles/299437.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 22 Oct 2009 16:14:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/299437.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/299437.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/299437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/299437.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/299437.html</trackback:ping><description><![CDATA[最近因一个项目需要迁移到另一个服务器上,而迁移的目标服务器是公用的服务器,需要将原有的数据源配置改为从自定义的配置文件读取,服务器都是用的Tomcat,以前的项目是在Tomcat里配置数据源,然后在程序中获取数据源里的连接,而新的服务器只提供了一个上传JSP文件的FTP方式,这种方式是没办法修改Tomcat配置文件配置数据源的,也就只好修改程序,将数据连接的部分改为读取自定义的配置文件<br />
<br />
在此,考虑了几种方法<br />
方法一:用Spring框架,将数据连接配置写在Spring的配置文件里,用Spring的注入方式生成对象,供程序调用<br />
方法二:自定义一个xml文件,在数据连接写在xml中,写一个JavaBean读取xml<br />
方法三:用Property方式定义配置配置文件,用JavaBean来读取设置<br />
因为是一个很小的东东,为此一项而使用Spring框架,似乎有点浪费,用xml来作配置文件,自己写读取方法时也不算简单,最简单的还是第三种,也不想为这点改动用大刀,简单的就是最好的:)<br />
<br />
首先新建一个读取配置文件的DBConfig.java(省略了包及getter,setter方法)<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;*&nbsp;这是一个获取数据库配置的类<br />
&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);">&nbsp;ZF<br />
&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;DBConfig&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;url;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;driver;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;userName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;password;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBConfig&nbsp;conf&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;DBConfig();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;在构造函数里读取配置文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;DBConfig(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;prop</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Properties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">目录指到根目录的上级,是为了将配置文件放在WEB-INF目录下<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果直接放在根目录下,则需将配置文件放在classes目录下</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;getClass().getResourceAsStream(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/../dbconfig.property</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.load(is);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(is</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.setDriver(prop.getProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Driver</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.setUrl(prop.getProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">URL</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.setUserName(prop.getProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">user</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.setPassword(prop.getProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">password</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0, 0, 255);">// getters()... and&nbsp; setters()...</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
<br />
然后在WEB-INF目录下新建配置文件dbconfig.property<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">Driver</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">com.mysql.jdbc.Driver<br />
URL</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">jdbc:mysql://localhost/tsoa<br />
user</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">mysqluser<br />
password</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">mysqlpassword</span></div>
修改获取数据连接的代码<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">获取数据库连接配置</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">DBConfig&nbsp;dbconf&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;DBConfig();<br />
<br />
</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">根据连接配置获取数据库连接</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">Class.forName(dbconf.getDriver()).newInstance();<br />
conn</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;DriverManager.getConnection(dbconf.getUrl(),dbconf.getUserName(),dbconf.getPassword());<br />
</span></div>
测试通过,OK,在此记录一下<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/299437.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-10-23 00:14 <a href="http://www.blogjava.net/zhouf/articles/299437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搞定SUSE下安装Mplayer</title><link>http://www.blogjava.net/zhouf/articles/289089.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 30 Jul 2009 05:05:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/289089.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/289089.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/289089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/289089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/289089.html</trackback:ping><description><![CDATA[折腾了很久，终于还是安装上了MPlayer，试过通过源代码编译，用yast安装，用yum安装，都没有成功，最后还是用zypper装好的，下面把重要的步骤记录下来就是了，那些曲折的路线就不用写了<br />
<br />
安装Mplayer需要另外有packman的源.安装源可以在<a href="http://en.opensuse.org/Additional_YaST_Package_Repositories" target="_blank"> http://en.opensuse.org/Additional_YaST_Package_Repositories</a> 找到<br />
添加安装源在线安装方为妙策.<br />
#zypper ar  URL Packman<br />
#zypper install mplayer<br />
以上URL为Packman的源<br />
<br />
现在还是觉得zypper是个好东东<br />
<br />
安装好之后，播放avi没有问题，可让界面全屏时，窗口倒是全屏了，可播放的画面还是原始大小，修改~/.mplayer/config为以下状态<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">zoom</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">yes</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br />
sub-fuzziness</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />
subcp</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">cp936<br />
</span></div>
第一行为解决缩放全屏的问题<br />
第二行为解决自动加载字幕的问题<br />
第三行为中文字幕指定一个字符集<br />
这样设置后,播放有中文字幕的视频就没有问题了<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/289089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-07-30 13:05 <a href="http://www.blogjava.net/zhouf/articles/289089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搞定FCKeditor2.6.4上传中文图片的问题</title><link>http://www.blogjava.net/zhouf/articles/279808.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 03 Jun 2009 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/279808.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/279808.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/279808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/279808.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/279808.html</trackback:ping><description><![CDATA[昨天配置好了FCKeditor,可以上传图片和文件了,可有一个问题还没有解决,那就是上传中文图片的时候会出现乱码,我的工程里用的编码都是UTF-8的,在网上找了好些资料,都搞不定,最后下载了<a href="http://sourceforge.net/project/showfiles.php?group_id=75348&amp;package_id=129511">fckeditor-java-2.4.1-src.zip</a>(在http://www.fckeditor.net/download上也有下载).解压缩之后,把源文件部署到工程里,可启动老是报错,不知道是啥回事儿,后来换成了手动的,操作如下<br />
找到源文件中的 net.fckeditor.connector.ConnectorServlet.java,将其中的部分代码改掉,我们先搞定图片中文问题,需要做如下修改,大概在240多行的位置<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">String&nbsp;newFilename&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />
FileItemFactory&nbsp;factory&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;DiskFileItemFactory();<br />
ServletFileUpload&nbsp;upload&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;ServletFileUpload(factory);<br />
</span></div>
在其后添加一行,指定编码为UTF-8的格式,如下<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">String&nbsp;newFilename&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />
FileItemFactory&nbsp;factory&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;DiskFileItemFactory();<br />
ServletFileUpload&nbsp;upload&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;ServletFileUpload(factory);<br />
upload.setHeaderEncoding(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">UTF-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
</span></div>
代码是改掉了,可怎么部署到应用里面呢,前面有说到,直接将java源文件放在工程里编译启动里会报错,不知道是我哪里没弄好还是怎么回事,反正也没去折腾了,改用土办法<br />
解压fckeditor-java-core-2.4.1.jar里面的class放在WEB-INF/classes下,然后手工将新生成的ConnectorServlet.class文件替换掉 WEB-INF/classes/net/fckeditor/connector/ConnectorServlet.class ,再启动服务器,如果没有报错的话,中文图片的上传问题就能搞定了<br />
<br />
今天为了解决这个问题查了一天的资料,也顺便看了很多文档,好像是FCKeditor2.4之后可以配置上传文件自动重命名的地方,我只看到一篇文档上提到过一次,在官方网站上也没有找到相关的说明,也就不去找什么配置了,反正源代码已经改动过了,不如把重命名也一起改了,找到net.fckeditor.connector.ConnectorServlet.java大概250行左右<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;We&nbsp;upload&nbsp;only&nbsp;one&nbsp;file&nbsp;at&nbsp;the&nbsp;same&nbsp;time</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">FileItem&nbsp;uplFile&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;items.get(</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />
String&nbsp;rawName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;UtilsFile.sanitizeFileName(uplFile.getName());<br />
String&nbsp;filename&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;FilenameUtils.getName(rawName);<br />
String&nbsp;baseName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;FilenameUtils.removeExtension(filename);<br />
String&nbsp;extension&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;FilenameUtils.getExtension(filename);<br />
</span></div>
将上面的代码改为<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;We&nbsp;upload&nbsp;only&nbsp;one&nbsp;file&nbsp;at&nbsp;the&nbsp;same&nbsp;time</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">FileItem&nbsp;uplFile&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;items.get(</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />
String&nbsp;rawName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;UtilsFile.sanitizeFileName(uplFile.getName());<br />
<br />
String&nbsp;randTimer&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;String.valueOf(Calendar.getInstance().getTimeInMillis());<br />
String&nbsp;randVal&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;String.valueOf(Math.abs((</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Random()).nextInt()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
String&nbsp;filename&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;FilenameUtils.getName(rawName);<br />
String&nbsp;baseName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;randTimer&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;randVal;<br />
String&nbsp;extension&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;FilenameUtils.getExtension(filename);<br />
filename&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;baseName.concat(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).concat(extension);</span></div>
即可,此处我是用时间的毫秒串再加上一个随机数串构成的新文件名,当然也可以改成你自己喜欢的格式,如将毫秒改成日期时间字串,则只需修改<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">String&nbsp;randTimer&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;SimpleDateFormat(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">yyyyMMddHHmmss</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)).format(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Date());</span></div>
改好了之后,重新生成class文件,按照上面的做法部署到应用中去<br />
<br />
为了方便使用,可以把修改后的class文件重新做成jar包,将WEB-INF/classes下的net和org目录拷贝到一个新的空目录中,然后在命令提示符下转到该目录,用如下命令可以生成新的jar包<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">jar -cvf&nbsp;fckeditor-java-</span><span style="color: rgb(0, 0, 0);">2.4.1</span><span style="color: rgb(0, 0, 0);">-rename.jar&nbsp;*.*</span></div>
此处为生成一个fckeditor-java-2.4.1-rename.jar,当然,名字可以自己定义<br />
<br />
上面的做法可能不是很先进,在Eclipse里也有打包jar的操作,也许更新一个java源文件不会是这么麻烦,但总算这样是搞定了,记录在这里先<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/279808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-06-03 14:41 <a href="http://www.blogjava.net/zhouf/articles/279808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决从JBOSS迁移到TOMCAT下的MYSQL乱码问题</title><link>http://www.blogjava.net/zhouf/articles/278085.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 26 May 2009 13:10:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/278085.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/278085.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/278085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/278085.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/278085.html</trackback:ping><description><![CDATA[弄了老半天,终于是把这个问题给搞定了,一个在JOBSS下跑得很好的程序,因为某些原因需要迁移到TOMCAT下面,可老是出现乱码的问题,情况如下<br />
数据库:MYSQL5.0<br />
数据库编码:UTF-8<br />
所有页面编码都统一用UTF-8<br />
在JBOSS下配置数据源,即修改mysql-ds.xml<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">datasources</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">local-tx-datasource</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">jndi-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">app</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">jndi-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">connection-url</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">jdbc:mysql://localhost/app</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">connection-url</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">driver-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">com.mysql.jdbc.Driver</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">driver-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">user-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">user</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">user-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">password</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">pwd</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">password</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">metadata</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">type-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">mySQL</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">type-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">metadata</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">local-tx-datasource</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">datasources</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
当把应用迁移到TOMCAT6下时,配置好TOMCAT下的数据源(修改contex.xml文件)<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version='1.0'&nbsp;encoding='utf-8'</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;The&nbsp;contents&nbsp;of&nbsp;this&nbsp;file&nbsp;will&nbsp;be&nbsp;loaded&nbsp;for&nbsp;each&nbsp;web&nbsp;application&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Resource&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="jdbc/app"</span><span style="color: rgb(255, 0, 0);">&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth</span><span style="color: rgb(0, 0, 255);">="Container"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0, 0, 255);">="javax.sql.DataSource"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: rgb(0, 0, 255);">="com.mysql.jdbc.Driver"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: rgb(0, 0, 255);">="jdbc:mysql://localhost/app"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: rgb(0, 0, 255);">="user"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: rgb(0, 0, 255);">="pwd"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeAbandoned</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeAbandonedTimeout</span><span style="color: rgb(0, 0, 255);">="60"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logAbandoned</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: rgb(0, 0, 255);">="700"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: rgb(0, 0, 255);">="30"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: rgb(0, 0, 255);">="10000"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;Default&nbsp;set&nbsp;of&nbsp;monitored&nbsp;resources&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">WatchedResource</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">WEB-INF/web.xml</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">WatchedResource</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
因JBOSS和TOMCAT获取数据源连接的方式不同,又修改了获取连接的代码,启动之后是可以运行,页面读取数据正常,但写入数据库时,出现了乱码,我尝试着修改写入数据库的SQL语句的编码,但不管怎么修改都不能正常显示,后来试着通过URL直接修改连接的编码试试,于是把TOMCAT数据源配置里的URL指定为UTF-8的字符集<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);"> url="jdbc:mysql://localhost/app?useUnicode=true</span><span style="color: rgb(255, 0, 0);">&amp;amp;</span><span style="color: rgb(0, 0, 0);">characterEncoding=utf-8"<br />
</span></div>
这里再重新启动TOMCAT,运行后,数据写入正常,这个困扰我多天的问题终于解决了,之前没有想到这样的问题,以为JBOSS里也是用的TOMCAT,在JBOSS里配置的数据源都没有在URL里指定编码,没想到单独使用TOMCAT时会出现这样的问题,把今天的处理在这里作个记录,以便以后备查<br />
<br />
小结:<br />
当用MYSQL作数据库时,将应用程序从JBOSS迁移到TOMCAT,如果存在乱码的问题,可以考虑修改URL指定字符集<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/278085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-05-26 21:10 <a href="http://www.blogjava.net/zhouf/articles/278085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>取消Eclipse的自动代码格式化</title><link>http://www.blogjava.net/zhouf/articles/266910.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 22 Apr 2009 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/266910.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/266910.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/266910.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/266910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/266910.html</trackback:ping><description><![CDATA[前段时间在Eclipse里面设置了java文件保存时自动格式化,在java-&gt;Code Style-&gt;Formatter里设置了自定义的格式化的样式,这样每次保存后都会自动格式化代码,用了一段时间感觉还不错,高科技,自动化<br />
后来小组开发使用了SVN后,困为格式化的样式不一致,所以每次比较文件时总会有很多不匹配的地方,想取消自动格式化的设置,找了很久,没找到在哪里设置,当时一个不小心设置好后就忘记地方了,今天把Preferences里的东东翻了个遍,终于找着了,修改<br />
java-&gt;editor-&gt;Save Actions-&gt;Format Source Code<br />
取消勾选,即取消了保存时自动格式化的功能,终于恢复正常了,在这里记录一下,怕哪天又给忘记了<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/266910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-04-22 10:13 <a href="http://www.blogjava.net/zhouf/articles/266910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为JBOSS的远程控制台加锁</title><link>http://www.blogjava.net/zhouf/articles/264884.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Fri, 10 Apr 2009 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/264884.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/264884.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/264884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/264884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/264884.html</trackback:ping><description><![CDATA[下午看到一篇文章,说是JBOSS服务器可以通过远程的方式关闭服务,因为默认情况控制台的用户密码都为空,见前一篇文章,看到这个消息后,吃了一惊,因为我们有个东东正在用JBOSS做服务器,测试了一下,确实存在这样的问题,赶紧照着材料补了一下<br />
我用的JBOSS版本是Version: 4.0.4CR2,操作如下<br />
一、为jms-console加上认证<br />
修改jboss4\server\default\deploy\jmx-console.war\WEB-INF下的web.xml和jboss-web.xml<br />
在web.xml中把&lt;security-constraint&gt;的注释去掉<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp; </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">security-constraint</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">web-resource-collection</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">web-resource-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">HtmlAdaptor</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">web-resource-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">description</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">An&nbsp;example&nbsp;security&nbsp;config&nbsp;that&nbsp;only&nbsp;allows&nbsp;users&nbsp;with&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role&nbsp;JBossAdmin&nbsp;to&nbsp;access&nbsp;the&nbsp;HTML&nbsp;JMX&nbsp;console&nbsp;web&nbsp;application<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">description</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/*</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">http-method</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">GET</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">http-method</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">http-method</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">POST</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">http-method</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">web-resource-collection</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">auth-constraint</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">role-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">JBossAdmin</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">role-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">auth-constraint</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">security-constraint</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
在jboss-web.xml中把&lt;security-domain&gt;注释去掉<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">jboss-web</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;Uncomment&nbsp;the&nbsp;security-domain&nbsp;to&nbsp;enable&nbsp;security.&nbsp;You&nbsp;will<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;need&nbsp;to&nbsp;edit&nbsp;the&nbsp;htmladaptor&nbsp;login&nbsp;configuration&nbsp;to&nbsp;setup&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;login&nbsp;modules&nbsp;used&nbsp;to&nbsp;authentication&nbsp;users.<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">security-domain</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">java:/jaas/jmx-console</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">security-domain</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">jboss-web</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
然后修改jboss4\server\default\conf\props下的两个配置文件jmx-console-roles.properties和jmx-console-users.properties,添加用户和密码,搞定上面的配置之后,访问jms-console就需要认证了,下面继续web-console的配置<br />
二、为web-console加上认证<br />
在deploy目录下面没有看到web-console,就通过查找,结果找到了两个地方,分别是<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">jboss4\server\default\deploy\management\console-mgr.sar\web-console.war\<br />
jboss4\server\all\deploy\management\console-mgr.sar\web-console.war\</span></div>
我也没搞清楚倒底是哪个起作用,我改了其中一个试试,没效果,干脆两个都改了,改的步骤都是相同的,下面就对其中一个的配置进行说明了<br />
找到 WEB-INF\下面的jboss-web.xml和web.xml,修改的方法同上,去掉两个注释<br />
认证的文件放在了 WEB-INF\classes\下面,分别是web-console-roles.properties和web-console-users.properties,把用户的认证信息添加到里面即可,重新启动JBOSS,此时登录控制台会要求输入密码,我测试后发现有效的密码是default下面的配置,也搞不懂为什么要两个都改了才会弹出要求身份认证的对话框<br />
先暂时就记在这里吧,如果哪位有做深入的研究,希望可以多提意见完善这个文档<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/264884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-04-10 17:01 <a href="http://www.blogjava.net/zhouf/articles/264884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在TOMCAT下自定义404错误页面</title><link>http://www.blogjava.net/zhouf/articles/264639.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 09 Apr 2009 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/264639.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/264639.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/264639.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/264639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/264639.html</trackback:ping><description><![CDATA[在Tomcat安装目录下的conf/web.xml最后的&lt;/web-app&gt;之前增加如下代码<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">error-page</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">error-code</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">404</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">error-code</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">location</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/web404.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">location</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">error-page</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
也可以在应用的WEB-INF/web.xml下加入上述代码<br />
然后建立web404.jsp自定义的页面,在页面里显示提示信息3秒后转到起始页面,我写的页面代码如下<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">@&nbsp;page&nbsp;language</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;contentType</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/html;&nbsp;charset=UTF-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;pageEncoding</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">UTF-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;!</span><span style="color: rgb(0, 0, 0);">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">http://www.w3.org/TR/html4/loose.dtd</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);"><br />
String&nbsp;path&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;request.getContextPath();<br />
String&nbsp;basePath&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;request.getScheme()</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">://</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">request.getServerName()</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">request.getServerPort()</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">path</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">html</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">meta&nbsp;http</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">equiv</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Content-Type</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;content</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/html;&nbsp;charset=UTF-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">meta&nbsp;http</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">equiv</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">refresh</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;content</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3;url=&lt;%=basePath%&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">title</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">资源错误</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">title</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">body</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">div&nbsp;align</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">center</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;&lt;</span><span style="color: rgb(0, 0, 0);">h1</span><span style="color: rgb(0, 0, 0);">&gt;&lt;</span><span style="color: rgb(0, 0, 0);">font&nbsp;color</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">#800000</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">对不起,你所访问的页面不存在</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">font</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">h1</span><span style="color: rgb(0, 0, 0);">&gt;&lt;/</span><span style="color: rgb(0, 0, 0);">div</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">body</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">html</span><span style="color: rgb(0, 0, 0);">&gt;</span></div>
经测试,访问一个不存在的页面,则转到自定义的页面,3秒后转到起始页,只要自定义页面能够被访问,那么是否进行跳转或是要进行其它什么操作就由你自己决定了<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/264639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-04-09 14:46 <a href="http://www.blogjava.net/zhouf/articles/264639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将应用程序部署到Tomcat的根</title><link>http://www.blogjava.net/zhouf/articles/251646.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Fri, 16 Jan 2009 16:05:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/251646.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/251646.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/251646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/251646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/251646.html</trackback:ping><description><![CDATA[在Tomcat下部署应用的时候,访问时会在地址栏加上应用名如:htt://host:8000/prj<br />
有时我们希望通过如下方式访问http://host<br />
为此,有两个地方需要进行修改,一是修改Tomcat服务端口,二是修改应用的访问路径<br />
修改服务端口只需改到Tomcat\conf\server.xml<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;Define&nbsp;a&nbsp;non-SSL&nbsp;Coyote&nbsp;HTTP/1.1&nbsp;Connector&nbsp;on&nbsp;the&nbsp;port&nbsp;specified&nbsp;during&nbsp;installation&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Connector&nbsp;</span><span style="color: rgb(255, 0, 0);">port</span><span style="color: rgb(0, 0, 255);">="80"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxThreads</span><span style="color: rgb(0, 0, 255);">="150"</span><span style="color: rgb(255, 0, 0);">&nbsp;minSpareThreads</span><span style="color: rgb(0, 0, 255);">="25"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxSpareThreads</span><span style="color: rgb(0, 0, 255);">="75"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;redirectPort</span><span style="color: rgb(0, 0, 255);">="8443"</span><span style="color: rgb(255, 0, 0);">&nbsp;acceptCount</span><span style="color: rgb(0, 0, 255);">="100"</span><span style="color: rgb(255, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug</span><span style="color: rgb(0, 0, 255);">="0"</span><span style="color: rgb(255, 0, 0);">&nbsp;connectionTimeout</span><span style="color: rgb(0, 0, 255);">="20000"</span><span style="color: rgb(255, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disableUploadTimeout</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span></div>
将port的值改为80即可,前提是80端口没有被使用,如果已被占用,启动Tomcat时会出现端口被占用的提示信息<br />
<br />
下一步是修改应用程序访问路径<br />
方法一:<br />
在Tomcat\conf\Catalina\localhost\目录下找到对应工程的xml文件,如此处为Tomcat\conf\Catalina\localhost\prj.xml<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version='1.0'&nbsp;encoding='utf-8'</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Context&nbsp;</span><span style="color: rgb(255, 0, 0);">displayName</span><span style="color: rgb(0, 0, 255);">="prj Name"</span><span style="color: rgb(255, 0, 0);">&nbsp;docBase</span><span style="color: rgb(0, 0, 255);">="prj"</span><span style="color: rgb(255, 0, 0);">&nbsp;path</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
将其path的值改为空,另外还要将Tomcat\conf\Catalina\localhost\ROOT.xml 的path值改为另一个值,要不启动Tomcat时会有冲突,如改成以下的状态<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version='1.0'&nbsp;encoding='utf-8'</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Context&nbsp;</span><span style="color: rgb(255, 0, 0);">displayName</span><span style="color: rgb(0, 0, 255);">="Welcome&nbsp;to&nbsp;Tomcat"</span><span style="color: rgb(255, 0, 0);">&nbsp;docBase</span><span style="color: rgb(0, 0, 255);">="ROOT"</span><span style="color: rgb(255, 0, 0);">&nbsp;path</span><span style="color: rgb(0, 0, 255);">="/ROOT"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span></div>
在完成上述改动后,就可以通过主机地址的方式访问应用程序了,如http://host<br />
<br />
方法二:<br />
如果按上面的方法配置不成功,还可以试试修改server.xml,在&lt;Host&gt;...&lt;/Host&gt;里加上如下信息<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Context&nbsp;</span><span style="color: rgb(255, 0, 0);">displayName</span><span style="color: rgb(0, 0, 255);">="prj&nbsp;Name"</span><span style="color: rgb(255, 0, 0);">&nbsp;docBase</span><span style="color: rgb(0, 0, 255);">="prj"</span><span style="color: rgb(255, 0, 0);">&nbsp;path</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
这样就不用管Tomcat\conf\Catalina\localhos目录了<br />
刚做完上面的测试,把过程做一个记录写在这里,以便以后查阅<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/251646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-01-17 00:05 <a href="http://www.blogjava.net/zhouf/articles/251646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UrlRewrite的使用记录</title><link>http://www.blogjava.net/zhouf/articles/251531.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Fri, 16 Jan 2009 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/251531.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/251531.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/251531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/251531.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/251531.html</trackback:ping><description><![CDATA[为了不在地址栏里暴露过多的信息,想到了做一个地址的隐藏,在网上找了一些资料,决定试试UrlRewriet<br />
在网上下载了<a href="http://tuckey.org/urlrewrite/">urlrewrite</a>的包,我下载的是urlrewritefilter-2.6-src.zip<br />
打开压缩包,将里面的urlrewrite-2.6.0.jar放在工程的/WEB-INF/lib/目录下<br />
将里面的urlrewrite.xml放在工程的/WEB-INF/目录下<br />
修改/WEB-INF/web.xml,加入过滤器<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">logLevel</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">WARN</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/*</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
在urlrewrite.xml里加入规则,如:<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;rule&nbsp;means&nbsp;that&nbsp;requests&nbsp;to&nbsp;/page/pagea.html&nbsp;will&nbsp;be&nbsp;redirected&nbsp;to&nbsp;/pagea.jsp<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/html/([a-z]+).html</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
此时在浏览器里访问/html/pagea.html会显示/pagea.jsp的内容,OK,搞定<br />
如果这种地址隐藏可行,那么可以把jsp页面伪装成asp或是php页面,改写规则如下<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;rule&nbsp;means&nbsp;that&nbsp;requests&nbsp;to&nbsp;/html/pagea.html&nbsp;will&nbsp;be&nbsp;redirected&nbsp;to&nbsp;/pagea.jsp<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/html/([a-z]+).html</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;rule&nbsp;means&nbsp;that&nbsp;requests&nbsp;to&nbsp;/asp/pagea.asp&nbsp;will&nbsp;be&nbsp;redirected&nbsp;to&nbsp;/pagea.jsp<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/asp/([a-z]+).asp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;rule&nbsp;means&nbsp;that&nbsp;requests&nbsp;to&nbsp;/php/pagea.php&nbsp;will&nbsp;be&nbsp;redirected&nbsp;to&nbsp;/pagea.jsp<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/php/([a-z]+).php</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span></div>
此时,在浏览器里输入<br />
/html/pagea.html<br />
/asp/pagea.asp<br />
/php/pagea.php<br />
均可以访问页面pagea.jsp<br />
几个月前我写了一篇笔记做地址伪装的,看来完全可以用这个东东代替了,上次写的那个还有一些问题没有完全解决,用urlrewrite做地址隐藏,真是感觉很专业,完美呀,初次使用,可能有些高级的功能还没有用到,不过通过这样的试验,已感觉出它的强大,这应该是一个很好的解决方案.<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/251531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-01-16 09:50 <a href="http://www.blogjava.net/zhouf/articles/251531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 数据源</title><link>http://www.blogjava.net/zhouf/articles/251413.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 15 Jan 2009 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/251413.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/251413.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/251413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/251413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/251413.html</trackback:ping><description><![CDATA[前面写了一段在Tomcat中配置数据连接池的操作,那是在网上找的一篇,在此把我的操作过程记录一下<br />
将jdbc数据库驱动包放到%Tomcat_Home%\common\lib下面<br />
打开%Tomcat_Home%\conf\server.xml,在&lt;/host&gt;前添加如下信息<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Context&nbsp;</span><span style="color: rgb(255, 0, 0);">path</span><span style="color: rgb(0, 0, 255);">="/lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;docBase</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Resource&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="jdbc/lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;scope</span><span style="color: rgb(0, 0, 255);">="Shareable"</span><span style="color: rgb(255, 0, 0);">&nbsp;type</span><span style="color: rgb(0, 0, 255);">="javax.sql.DataSource"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ResourceParams&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="jdbc/lib"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">factory</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">org.apache.commons.dbcp.BasicDataSourceFactory</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;DBCP&nbsp;database&nbsp;connection&nbsp;settings&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">url</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">jdbc:mysql://localhost/lib</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">driverClassName</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">com.mysql.jdbc.Driver</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">root</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">password</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">password</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;DBCP&nbsp;connection&nbsp;pooling&nbsp;options&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">maxWait</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">3000</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">maxIdle</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">maxActive</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">parameter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">ResourceParams</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br />
&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Context</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"> <br />
</span></div>
在其应用工程的WEB.XML中添加数据源的引用<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">resource-ref</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">res-ref-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">jdbc/lib</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">res-ref-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">res-type</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">javax.sql.DataSource</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">res-type</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">res-auth</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Container</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">res-auth</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">resource-ref</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
然后写一个测试的页面<br />
需要三个包<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">java.sql.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"><br />
javax.naming.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"><br />
javax.sql.DataSource</span></div>
通过下面的方式获取连接<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">InitialContext&nbsp;ctx</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;InitialContext();<br />
DataSource&nbsp;ds</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(DataSource)ctx.lookup(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">java:comp/env/jdbc/lib</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
Connection&nbsp;&nbsp;conn</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">ds.getConnection();</span></div>
测试通过,可以获取连接,配置完成!!!<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/251413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-01-15 12:28 <a href="http://www.blogjava.net/zhouf/articles/251413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Grails的Domain中的中文处理</title><link>http://www.blogjava.net/zhouf/articles/243635.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Mon, 01 Dec 2008 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/243635.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/243635.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/243635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/243635.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/243635.html</trackback:ping><description><![CDATA[我在Domain中做了一个inList的约束,不过却碰到了中文问题<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">inList:[</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">学生</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">老师</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">管理员</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">]</span></div>
在网上找了解决办法,便转到这里来存着,方法如下:<br />
将编辑器设置为支持UTF-8编码,并且保存文件也为UTF-8编码,如果使用UltraEdit，打开源代码后请选择&#8220;文件——转换——ASCII到UTF-8编辑&#8221;。然后正常输入汉字保存即可,照着这个办法试了一下,OK,搞定<br />
在这里记录一下,就当做点笔记吧<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/243635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-12-01 10:02 <a href="http://www.blogjava.net/zhouf/articles/243635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初试Grails和Oracle的配置</title><link>http://www.blogjava.net/zhouf/articles/243046.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 27 Nov 2008 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/243046.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/243046.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/243046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/243046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/243046.html</trackback:ping><description><![CDATA[在听说过Grails很久后,终于开始了自己的Grails之旅,下午弄了一下午的配置,碰到了很多的问题,终于把碰到的问题都搞定了<br />
首先安装好Grails,还有Oracle,这里就不用多说了<br />
Grails 1.0.2<br />
Oracle 9i<br />
JDK 1.5<br />
Groovy 1.5.4<br />
要使用Oracle数据库,则先把classes12.jar放在/grails/lib/目录下,修改配置文件/grails-app/conf/DataSource.groovy<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">dataSource&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;pooled&nbsp;=&nbsp;false<br />
&nbsp;&nbsp;&nbsp;&nbsp;driverClassName&nbsp;=&nbsp;"oracle.jdbc.driver.OracleDriver"<br />
&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;=&nbsp;"dev"<br />
&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;=&nbsp;"dev"<br />
&nbsp;&nbsp;&nbsp;&nbsp;dialect&nbsp;=&nbsp;org.hibernate.dialect.Oracle9Dialect<br />
&nbsp;&nbsp;&nbsp; //logSql = true<br />
}<br />
<br />
<br />
hibernate&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;cache.use_second_level_cache=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;cache.use_query_cache=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;cache.provider_class='org.hibernate.cache.EhCacheProvider'<br />
}</span></div>
注意加上方言:<span style="color: rgb(0, 0, 0);">dialect&nbsp;=&nbsp;org.hibernate.dialect.Oracle9Dialect<br />
如果要查看后如的SQL输出,则可以加上logSql = true<br />
</span>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">development&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSource&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbCreate&nbsp;=&nbsp;"create-drop"&nbsp;//&nbsp;one&nbsp;of&nbsp;'create',&nbsp;'create-drop','update'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;=&nbsp;"jdbc:oracle:thin:@localhost:1521:CS"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
注意url最后的那个CS是我本机安装的数据库的SID,开始我写成ORCL怎么都连不上,改了之后就OK,在连接好数据库后,就可以把主要的力量放在程序上面了,数据库这部分可以不用操心了,真是帅呀,以前一边要设计数据库,还要修改程序,现在省事多了<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">grails:\&gt;create-domain-class&nbsp;student<br />
grails:\&gt;create-controller&nbsp;student</span></div>
修改域/grails-app/domain/Student.groovy为:<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Student&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;constraints&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name(blank:</span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
定义了两个属性,并且name不允许为空<br />
修改控制器/grails-app/controllers/StudentController.groovy为:<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;StudentController&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;scaffold&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;Student<br />
}</span></div>
修改好了之后,启动服务<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">grails:\</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">run</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">app</span></div>
OK,能过,太帅气了,省去了很多工作,就写了这么点代码,CRUD操作全都有了,真是个好东东,看来我得多多的学呀<br />
争取:好好学习,天天上网<br />
<br />
补充一点:因为本机的端口冲突,我把Grails的端口改了,修改文件%GRAILS_HOME%\grails\scripts\Init.groovy 大概是第(42)行<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">serverPort&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;System.getProperty(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">server.port</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;System.getProperty(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">server.port</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">).toInteger()&nbsp;:&nbsp;</span><span style="color: rgb(0, 0, 0);">8000</span></div>
此处我把服务端口改为8000<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/243046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-11-27 17:45 <a href="http://www.blogjava.net/zhouf/articles/243046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在SUSE10.3中使用Samba的一点记录</title><link>http://www.blogjava.net/zhouf/articles/238178.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 02 Nov 2008 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/238178.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/238178.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/238178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/238178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/238178.html</trackback:ping><description><![CDATA[在Control Center中配置好Samba的服务器,在里面可以添加共享的目录和共享名,也可以禁止或允许系统里设置的共享项目<br />
然后建立一个Samba的用户<br />
#useradd suse<br />
为新增的用户suse设置密码<br />
#smbpasswd -a suse<br />
password: ******<br />
<br />
配置好了之后便可以在控制台里启动Samba的服务<br />
#/etc/init.d/smb start<br />
<br />
&nbsp;在Windows计算机上就可以通过刚设置好的用户名和密码访问了<br />
如果要设置允许Windows用户可以上传文件的话,需要设置共享的目录对Samba用户有可写的权限<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/238178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-11-02 14:59 <a href="http://www.blogjava.net/zhouf/articles/238178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>