﻿<?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/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 01 May 2026 08:00:40 GMT</lastBuildDate><pubDate>Fri, 01 May 2026 08:00:40 GMT</pubDate><ttl>60</ttl><item><title>使用Maven创建项目模板</title><link>http://www.blogjava.net/zhouf/articles/433940.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Mon, 24 Jun 2019 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/433940.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/433940.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/433940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/433940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/433940.html</trackback:ping><description><![CDATA[<div>在开发项目的时候，有许多项目结构都是差不多的，使用的框架也一样，spring配置文件也一样的，只是每个项目的名称，包名等不同，如果按照之前的方法，可以拷贝一个项目，然后再做一些修改就好了。这也不是不可以，只是我觉得，应该还有更帅的招，Maven可以使用archetype创建项目，那是否也可以创建自定义结构的项目了，所以就了解了一下通过Maven使用现有项目创建项目模板。尝试了一下，很不错，可以自动处理包名等转换，几个命令就可以生成雷同结构的项目，在此记录一下过程<br /><h2>1 准备好一个现有的项目</h2><div>既然做为模板项目，里面的配置都是做好了的，是一个可以用的项目，加入了Eclipse支持，项目中包含一些Eclipse配置文件，本例中项目目录为<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:\workspace\myprj</div><h2>2 创建模板工程</h2><div>进入项目目录后，运行生成archetype命令<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:\workspace\myprj&gt;mvn&nbsp;archetype:create-from-project</div></div><div>会在myprj目录下生成target目录，其下生成如下目录<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 />-->classes<br />generated-sources<br />generated-test-sources<br />m2e-wtp<br />maven-status<br />surefire-reports<br />test-classes</div></div><div>模板代码主要位于generated-sources目录中<br /><h2>3 修改模板代码</h2><div>项目中的所有代码都会自动替换为占位符，除了Eclipse配置文件之外，接下来修改模板，进入target\generated-sources\archetype\src\main\resources\archetype-resources\目录，将Eclipse配置文件也加入占位符，以方便新项目的生成，比如修改下面两个文件，加入占位符artifactId</div><div></div><div>文件1：.project<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 />-->#set(&nbsp;$symbol_pound&nbsp;=&nbsp;'#'&nbsp;)<br />#set(&nbsp;$symbol_dollar&nbsp;=&nbsp;'$'&nbsp;)<br />#set(&nbsp;$symbol_escape&nbsp;=&nbsp;'\'&nbsp;)<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><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">projectDescription</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; ">name</span><span style="color: #0000FF; ">&gt;</span>${artifactId}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">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; ">comment</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">comment</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; ">projects</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; ">projects</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; ">buildSpec</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; ">buildCommand</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.jdt.core.javabuilder<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">arguments</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; ">buildCommand</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; ">buildCommand</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.wst.common.project.facet.core.builder<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">arguments</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; ">buildCommand</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; ">buildCommand</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.wst.validation.validationbuilder<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">arguments</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; ">buildCommand</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; ">buildCommand</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.m2e.core.maven2Builder<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">arguments</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">arguments</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; ">buildCommand</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; ">buildSpec</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; ">natures</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.jem.workbench.JavaEMFNature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.wst.common.modulecore.ModuleCoreNature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.jdt.core.javanature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.m2e.core.maven2Nature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.wst.common.project.facet.core.nature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">nature</span><span style="color: #0000FF; ">&gt;</span>org.eclipse.wst.jsdt.core.jsNature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nature</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; ">natures</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">projectDescription</span><span style="color: #0000ff;">&gt;</span></div></div></div><div>文件2：.settings\org.eclipse.wst.common.component<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"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project-modules&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="moduleCoreId"</span><span style="color: #FF0000; ">&nbsp;project-version</span><span style="color: #0000FF; ">="1.5.0"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">wb-module&nbsp;</span><span style="color: #FF0000; ">deploy-name</span><span style="color: #0000FF; ">="${artifactId}"</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; ">wb-resource&nbsp;</span><span style="color: #FF0000; ">deploy-path</span><span style="color: #0000FF; ">="/"</span><span style="color: #FF0000; ">&nbsp;source-path</span><span style="color: #0000FF; ">="/target/m2e-wtp/web-resources"</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; ">wb-resource&nbsp;</span><span style="color: #FF0000; ">deploy-path</span><span style="color: #0000FF; ">="/"</span><span style="color: #FF0000; ">&nbsp;source-path</span><span style="color: #0000FF; ">="/src/main/webapp"</span><span style="color: #FF0000; ">&nbsp;tag</span><span style="color: #0000FF; ">="defaultRootSource"</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; ">wb-resource&nbsp;</span><span style="color: #FF0000; ">deploy-path</span><span style="color: #0000FF; ">="/WEB-INF/classes"</span><span style="color: #FF0000; ">&nbsp;source-path</span><span style="color: #0000FF; ">="/src/main/java"</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; ">wb-resource&nbsp;</span><span style="color: #FF0000; ">deploy-path</span><span style="color: #0000FF; ">="/WEB-INF/classes"</span><span style="color: #FF0000; ">&nbsp;source-path</span><span style="color: #0000FF; ">="/src/main/resources"</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="context-root"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="${artifactId}"</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; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="java-output-path"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="/${artifactId}/target/classes"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">wb-module</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project-modules</span><span style="color: #0000ff;">&gt;</span></div></div><h2>4 修改项目文件列表</h2><div>配置完成后，通过mvn生成新的项目时，上面的Eclipse配置文件也不会被放入新的工程里，需要在配置文件中加入这些文件的信息，以及标记哪些文件是需要使用占位符替换的，修改target\generated-sources\archetype\src\main\resources\META-INF\maven\archetype-metadata.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; ">fileSet&nbsp;</span><span style="color: #FF0000; ">filtered</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;encoding</span><span style="color: #0000FF; ">="UTF-8"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;</span>.settings<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">includes</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.xml<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">includes</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileSet</span><span style="color: #0000FF; ">&gt;</span></div></div><div>也就是说，默认情况下，mvn只将.settings目录下的*.xml文件生成到项目中，其中filtered="true"表示需要进行内容过滤替换占位符，我们把需要添加的文件放入此配置，修改后结果如下</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; ">&lt;</span><span style="color: #800000; ">fileSet&nbsp;</span><span style="color: #FF0000; ">filtered</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;encoding</span><span style="color: #0000FF; ">="UTF-8"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;</span>.settings<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">includes</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.xml<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.container<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.component<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.name<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.jsdtscope<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>**/*.prefs<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">includes</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileSet</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fileSet&nbsp;</span><span style="color: #FF0000; ">filtered</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;encoding</span><span style="color: #0000FF; ">="UTF-8"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">directory</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">includes</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; ">include</span><span style="color: #0000FF; ">&gt;</span>.classpath<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</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; ">include</span><span style="color: #0000FF; ">&gt;</span>.project<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">include</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">includes</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">fileSet</span><span style="color: #0000FF; ">&gt;</span></div><div>如果需要过滤掉一些不需要的文件，也可以在此配置。准备好后，就可以安装了<br /><h2>5 将模板项目安装到本地仓库</h2><div>进入/target/generated-sources/archetype/目录，执行安装<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:\workspace\myprj\target\generated-sources\archetype&gt;mvn&nbsp;install</div></div></div><div>此命令会在maven仓库中生成archetype-catalog.xml文件，仓库位置取决于maven配置文件settings.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"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">archetype-catalog&nbsp;</span><span style="color: #FF0000; ">xsi:schemaLocation</span><span style="color: #0000FF; ">="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0&nbsp;http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #0000FF; ">="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">archetypes</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">archetype</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>com.zhouf<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>myprj-archetype<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>0.0.1-SNAPSHOT<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">description</span><span style="color: #0000FF; ">&gt;</span>simple&nbsp;project&nbsp;with&nbsp;springmvc&nbsp;and&nbsp;jetty<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">description</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">archetype</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">archetypes</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">archetype-catalog</span><span style="color: #0000FF; ">&gt;</span></div></div><h2>6 创建项目测试</h2><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 />-->D:\workspace&gt;mvn&nbsp;archetype:generate&nbsp;-DarchetypeCatalog=local</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 />-->Choose&nbsp;archetype:<br />1:&nbsp;local&nbsp;-&gt;&nbsp;com.zhouf:myprj-archetype&nbsp;(simple&nbsp;project&nbsp;with&nbsp;springmvc&nbsp;and&nbsp;jetty)<br />Choose&nbsp;a&nbsp;number&nbsp;or&nbsp;apply&nbsp;filter&nbsp;(format:&nbsp;[groupId:]artifactId,&nbsp;case&nbsp;sensitive&nbsp;contains):&nbsp;:&nbsp;1<br />Define&nbsp;value&nbsp;for&nbsp;property&nbsp;'groupId':&nbsp;com.zhouf<br />Define&nbsp;value&nbsp;for&nbsp;property&nbsp;'artifactId':&nbsp;demoprj1<br />Define&nbsp;value&nbsp;for&nbsp;property&nbsp;'version'&nbsp;1.0-SNAPSHOT:&nbsp;:<br />Define&nbsp;value&nbsp;for&nbsp;property&nbsp;'package'&nbsp;com.zhouf:&nbsp;:<br />Confirm&nbsp;properties&nbsp;configuration:<br />groupId:&nbsp;com.zhouf<br />artifactId:&nbsp;demoprj1<br />version:&nbsp;1.0-SNAPSHOT<br />package:&nbsp;com.zhouf<br />&nbsp;Y:&nbsp;:</div>生成项目demoprj1<br /><h2>7 导入Eclipse运行</h2><div>将生成的项目导入到Eclipse环境中，直接部署到服务器上跑一个，测试通过，不需要修改配置，帅</div><div></div><div>如果项目是通过mvn jetty:run运行的，也可以省略中间加入Eclipse配置文件的操作</div><br />转自我的简书：<a href="https://www.jianshu.com/p/fb5c0e39692f">https://www.jianshu.com/p/fb5c0e39692f</a></div></div><img src ="http://www.blogjava.net/zhouf/aggbug/433940.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> 2019-06-24 10:55 <a href="http://www.blogjava.net/zhouf/articles/433940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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>jQuery打印插件printPage</title><link>http://www.blogjava.net/zhouf/articles/printpage.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 29 Nov 2016 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/printpage.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/432017.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/printpage.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/432017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/432017.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 因最近项目中要用到打印，研究了一些打印方案，考虑过生成PDF再打印的方案，只是客户端需要安装程序，内容输出的控制不太方便，在网上找了一些稍微轻量级的插件来做，项目中有用到jQuery，便尝试了一下printPage打印插件，其它的没有花时间去对比，这个插件能满足需要，对输出内容控制也方便，就是一个HTML页面，也就确定用这个插件了，用法也不是很复杂，在此记录一下需要引入jquery插件，我之前用的...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouf/articles/printpage.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouf/aggbug/432017.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-11-29 11:53 <a href="http://www.blogjava.net/zhouf/articles/printpage.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>在Tomcat7中添加外部Context</title><link>http://www.blogjava.net/zhouf/articles/414152.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Tue, 27 May 2014 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/414152.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/414152.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/414152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/414152.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/414152.html</trackback:ping><description><![CDATA[在网上找了两种方法，分别试了一下<br />其一是修改server.xml，在&lt;Host&gt;标签中添加context配置，如下<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; ">path</span><span style="color: #0000FF; ">="/book"</span><span style="color: #FF0000; ">&nbsp;docBase</span><span style="color: #0000FF; ">="D:\eclipse\workspace\book\WebRoot"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></div>另一种是在conf\Catalina\localhost目录下添加配置文件，如prj.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'</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Context&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">crossContext</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;docBase</span><span style="color: #0000FF; ">="D:\eclipse\workspace\prj\WebRoot"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;path</span><span style="color: #0000FF; ">="/prj"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Context</span><span style="color: #0000FF; ">&gt;</span></div>搞定，第二种的话如果不需要了，直接删除文件就是了，不用修改server.xml配置文件，这个我喜欢。<br />在官网的文档上没找到，还是在网上找的，在些记录一下，以备查<img src ="http://www.blogjava.net/zhouf/aggbug/414152.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> 2014-05-27 10:59 <a href="http://www.blogjava.net/zhouf/articles/414152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>