ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>天堂中文在线8,777精品伊人久久久久大香线蕉,国产剧情一区二区在线观看http://www.aygfsteel.com/zhouf/articles/433940.htmlZhouFengZhouFengMon, 24 Jun 2019 02:55:00 GMThttp://www.aygfsteel.com/zhouf/articles/433940.htmlhttp://www.aygfsteel.com/zhouf/comments/433940.htmlhttp://www.aygfsteel.com/zhouf/articles/433940.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/433940.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/433940.htmlåœ¨å¼€å‘é¡¹ç›®çš„æ—¶å€™ï¼Œæœ‰è®¸å¤šé¡¹ç›®ç»“æž„éƒ½æ˜¯å·®ä¸å¤šçš„ï¼Œä½¿ç”¨çš„æ¡†æž¶ä¹Ÿä¸€æ øP¼Œspring配置文äšg也一æ ïLš„åQŒåªæ˜¯æ¯ä¸ªé¡¹ç›®çš„名称åQŒåŒ…名等不同åQŒå¦‚果按照之前的æ–ÒŽ³•åQŒå¯ä»¥æ‹·è´ä¸€ä¸ªé¡¹ç›®ï¼Œç„¶åŽå†åšä¸€äº›ä¿®æ”¹å°±å¥½äº†ã€‚这也不是不可以åQŒåªæ˜¯æˆ‘觉得åQŒåº”该还有更帅的招,Maven可以使用archetype创徏™å¹ç›®åQŒé‚£æ˜¯å¦ä¹Ÿå¯ä»¥åˆ›å»ø™‡ªå®šä¹‰¾l“构的项目了åQŒæ‰€ä»¥å°±äº†è§£äº†ä¸€ä¸‹é€šè¿‡Maven使用现有™å¹ç›®åˆ›å¾™å¹ç›®æ¨¡æ¿ã€‚尝试了一下,很不错,可以自动处理包名½{‰è{换,几个命ä×ož®±å¯ä»¥ç”Ÿæˆé›·åŒç»“构的™å¹ç›®åQŒåœ¨æ­¤è®°å½•一下过½E?br />

1 准备好一个现有的™å¹ç›®

æ—¢ç„¶åšäØ“æ¨¡æ¿™å¹ç›®åQŒé‡Œé¢çš„配置都是做好了的åQŒæ˜¯ä¸€ä¸ªå¯ä»¥ç”¨çš„项目,加入了Eclipse支持åQŒé¡¹ç›®ä¸­åŒ…含一些Eclipse配置文äšgåQŒæœ¬ä¾‹ä¸­™å¹ç›®ç›®å½•ä¸?br />
D:\workspace\myprj

2 创徏模板工程

˜q›å…¥™å¹ç›®ç›®å½•后,˜qè¡Œç”Ÿæˆarchetype命ä×o
D:\workspace\myprj>mvn archetype:create-from-project
会在myprj目录下生成target目录åQŒå…¶ä¸‹ç”Ÿæˆå¦‚下目å½?br />
classes
generated-sources
generated-test-sources
m2e-wtp
maven-status
surefire-reports
test-classes
模板代码主要位于generated-sources目录�br />

3 修改模板代码

™å¹ç›®ä¸­çš„æ‰€æœ‰ä»£ç éƒ½ä¼šè‡ªåŠ¨æ›¿æ¢äØ“å ä½½W¦ï¼Œé™¤äº†Eclipse配置文äšg之外åQŒæŽ¥ä¸‹æ¥ä¿®æ”¹æ¨¡æ¿åQŒè¿›å…¥target\generated-sources\archetype\src\main\resources\archetype-resources\目录åQŒå°†Eclipse配置文äšg也加入占位符åQŒä»¥æ–¹ä¾¿æ–°é¡¹ç›®çš„生成åQŒæ¯”如修改下面两个文ä»Óž¼ŒåŠ å…¥å ä½½W¦artifactId
æ–‡äšg1åQ?project
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>${artifactId}</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.wst.common.project.facet.core.builder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.wst.validation.validationbuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.m2e.core.maven2Builder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
                <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
                <nature>org.eclipse.m2e.core.maven2Nature</nature>
                <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
                <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
        </natures>
</projectDescription>
æ–‡äšg2åQ?settings\org.eclipse.wst.common.component
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="${artifactId}">
        <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
        <property name="context-root" value="${artifactId}"/>
        <property name="java-output-path" value="/${artifactId}/target/classes"/>
    </wb-module>
</project-modules>

4 修改™å¹ç›®æ–‡äšg列表

配置完成后,通过mvn生成新的™å¹ç›®æ—Óž¼Œä¸Šé¢çš„Eclipse配置文äšg也不会被攑օ¥æ–°çš„工程里,需要在配置文äšg中加入这些文件的信息åQŒä»¥åŠæ ‡è®°å“ªäº›æ–‡ä»¶æ˜¯éœ€è¦ä‹É用占位符替换的,修改target\generated-sources\archetype\src\main\resources\META-INF\maven\archetype-metadata.xmlæ–‡äšgåQŒåœ¨çŽ°æœ‰æ–‡äšg中可以看到如下信æ?br />
<fileSet filtered="true" encoding="UTF-8">
    <directory>.settings</directory>
    <includes>
        <include>**/*.xml</include>
    </includes>
</fileSet>
也就是说åQŒé»˜è®¤æƒ…况下åQŒmvn只将.settings目录下的*.xmlæ–‡äšg生成到项目中åQŒå…¶ä¸­filtered="true"表示需要进行内容过滤替换占位符åQŒæˆ‘们把需要添加的文äšg攑օ¥æ­¤é…¾|®ï¼Œä¿®æ”¹åŽç»“果如ä¸?/div>
<fileSet filtered="true" encoding="UTF-8">
    <directory>.settings</directory>
    <includes>
        <include>**/*.xml</include>
        <include>**/*.container</include>
        <include>**/*.component</include>
        <include>**/*.name</include>
        <include>**/*.jsdtscope</include>
        <include>**/*.prefs</include>
    </includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
    <directory></directory>
    <includes>
        <include>.classpath</include>
        <include>.project</include>
    </includes>
</fileSet>
如果需要过滤掉一些不需要的文äšgåQŒä¹Ÿå¯ä»¥åœ¨æ­¤é…ç½®ã€‚准备好后,ž®±å¯ä»¥å®‰è£…了

5 ž®†æ¨¡æ‰K¡¹ç›®å®‰è£…到本地仓库

˜q›å…¥/target/generated-sources/archetype/目录åQŒæ‰§è¡Œå®‰è£?br />
D:\workspace\myprj\target\generated-sources\archetype>mvn install
此命令会在maven仓库中生成archetype-catalog.xmlæ–‡äšgåQŒä»“库位¾|®å–决于maven配置文äšgsettings.xml中的讄¡½®åQŒå†…容如下,可以修改描述信息åQŒæ–¹ä¾¿åœ¨åˆ›å¾™å¹ç›®æ—¶è¿›è¡Œæ½C?br />
<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns
="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.zhouf</groupId>
      <artifactId>myprj-archetype</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <description>simple project with springmvc and jetty</description>
    </archetype>
  </archetypes>
</archetype-catalog>

6 创徏™å¹ç›®‹¹‹è¯•

执行生成命ä×o
D:\workspace>mvn archetype:generate -DarchetypeCatalog=local
此命令可以在ä»ÖM½•目录下执行,会在当前目录生成™å¹ç›®
Choose archetype:
1: local -> com.zhouf:myprj-archetype (simple project with springmvc and jetty)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1
Define value for property 'groupId': com.zhouf
Define value for property 'artifactId': demoprj1
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.zhouf: :
Confirm properties configuration:
groupId: com.zhouf
artifactId: demoprj1
version: 1.0-SNAPSHOT
package: com.zhouf
 Y: :
生成™å¹ç›®demoprj1

7 导入Eclipse˜qè¡Œ

ž®†ç”Ÿæˆçš„™å¹ç›®å¯¼å…¥åˆ°Eclipse环境中,直接部çÖv到服务器上跑一个,‹¹‹è¯•通过åQŒä¸éœ€è¦ä¿®æ”šw…¾|®ï¼Œå¸?/div>
如果™å¹ç›®æ˜¯é€šè¿‡mvn jetty:run˜qè¡Œçš„,也可以省略中间加入Eclipse配置文äšg的操ä½?/div>
转自我的½Ž€ä¹¦ï¼šhttps://www.jianshu.com/p/fb5c0e39692f


]]>Tomcat配置cgi˜qè¡Œpython脚本http://www.aygfsteel.com/zhouf/articles/433448.htmlZhouFengZhouFengSat, 20 Oct 2018 02:34:00 GMThttp://www.aygfsteel.com/zhouf/articles/433448.htmlhttp://www.aygfsteel.com/zhouf/comments/433448.htmlhttp://www.aygfsteel.com/zhouf/articles/433448.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/433448.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/433448.html
1、在web工程WEB-INF目录下创建目录cgiåQŒå½“然也可以是别的名å­?/div>
2、修改web.xmlåQŒå¼€å¯å¦‚下设¾|®ï¼Œé»˜è®¤æƒ…况是注释掉çš?br />
<servlet>
    <servlet-name>cgi</servlet-name>
    <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
    <init-param>
        <param-name>clientinputTimeout</param-name>
        <param-value>100</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>passShellEnvironment</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>cgiPathPrefix</param-name>
        <param-value>WEB-INF/cgi</param-value>
    </init-param>
    <init-param>
        <param-name>executable</param-name>
        <param-value>D:/Anaconda3/python.exe</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
</servlet>
注意修改pythonçš„èµ\å¾?/div>
cgiPathPrefix: 与Server能够讉K—®çš„脚本目录有养I¼Œä¸Žä¹‹å‰åˆ›å»ºçš„目录相对åº?br />
3、开启cgiçš„mapping映射åQŒä¿®æ”¹web.xmlåQŒå¼€å¯å¦‚下设¾|?br />
<servlet-mapping>
    <servlet-name>cgi</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
讉K—®è·¯å¾„å¯ä»¥ä¿®æ”¹ä¸ø™‡ªå®šä¹‰å­—符
4、修改content.xmlæ–‡äšgåQŒåœ¨Context中添加privileged属æ€?br />
<Context privileged="true">

5、在工程cgi目录写pythonæ–‡äšgåQŒå¦‚hello.py
print('Content-type: text/plain\n\n')

print('Hello python')
输出text/plain说明˜q™æ˜¯ä¸€ä¸ªæ™®é€šæ–‡æœ¬ï¼Œä¸€å®šæ³¨æ„ä¹‹åŽè¦æœ‰ä¸¤ä¸ªæ¢è¡Œï¼ˆž®å¿ƒå‘啦åQ‰ï¼åQï¼

6、运行工½E‹åƈ‹¹‹è¯•
http://localhost:8080/prj/cgi-bin/hello.py

所见结果,通过˜q™ç§æ–ÒŽ³•可以在Tomcat环境下运行python脚本了,如果是已¾lç”¨python脚本做好了服务的话,˜q˜æ˜¯å¯ä»¥è€ƒè™‘通过服务调用的方式与Tomcat工程˜q›è¡Œæ•´åˆåQŒåœ¨æ­¤è®°å½•一ä¸?/div>

]]>¾|‘页语音播报的实çŽ?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/zhouf/articles/432483.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/432483.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/432483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/432483.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/432483.html</trackback:ping><description><![CDATA[<div>å› äØ“éœ€è¦å®žçŽ°åœ¨™åµé¢ä¸­è¿›è¡Œè¯­éŸÏx½Cºï¼Œæœ‰ç‚¹åƒç¾Žå›¢é‚£ä¸ªå¤–卖的提示éŸ?#8220;您有新的订单åQŒè¯·æ³¨æ„æŸ¥æ”¶”åQŒäºŽæ˜¯å¼€å§‹æœå¯ÀL–¹æ³•,最后发çŽîC¸€ä¸ªå¼€æºé¡¹ç›®ï¼Œhttps://github.com/wenco/speech 用来实现语音播报åQŒä¸Šé¢æœ‰æ–‡æ¡£è¯´æ˜Žã€‚å…ˆclone下来试试</div><div>按照所¾l™çš„代码åQŒè¿è¡Œè“v来没有问题,需要在™åµé¢ä¸­æ”¾å…¥ä¸€ä¸ªæ ‡½{¾ï¼Œòq¶å†™å…¥è¦è½¬æ¢ä¸ø™¯­éŸ³çš„å†…å®¹ã€‚äØ“äº†åŽé¢äØ“äº†è°ƒç”¨æ–¹ä¾¿ï¼Œä¸‹é¢˜q›è¡Œäº†ä¸€äº›è°ƒæ•´ã€?/div><div>把播放按钮隐藏è“v来,让事件触发播放ã€?/div><div>修改jQuery.speech.min.jsåQŒå› ™åµé¢å¼•用的文件是˜q™ä¸ªåQŒä¹Ÿå¯ä»¥å•独创徏一个js在页面中引入åQŒå†™å…¥ä»¥ä¸‹å†…å®?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 style="display: none" id="tts_content"></div></span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">function</span> say(arg) {<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">处理™åµé¢å…ƒç´ </span><span style="color: #008000; "><br /></span>    <span style="color: #0000FF; ">if</span>($("#tts_content").length == 0){<br />        <span style="color: #008000; ">//</span><span style="color: #008000; ">存在元素</span><span style="color: #008000; "><br /></span>        $("<div style='display: none' id='tts_content'></div>").appendTo("body");<br />    }<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">处理传入参数</span><span style="color: #008000; "><br /></span>    <span style="color: #0000FF; ">if</span>(arg){<br />        $('#tts_content').text(arg);<br />    }<span style="color: #0000FF; ">else</span>{<br />        $('#tts_content').text("您有新的消息åQŒè¯·æ³¨æ„æŸ¥æ”¶");<br />    }<br />    <br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">è½¬åŒ–ä¸ø™¯­éŸ?/span><span style="color: #008000; "><br /></span>    $('#tts_content').speech({<br />        "speech": <span style="color: #0000FF; ">false</span>,<br />        "speed": 16<br />    });<br />}</div><div>调整了播报速度åQŒåœ¨½E‹åºä¸­è‡ªåŠ¨åˆ›å»ºéœ€è¦çš„æ ‡ç­¾åQŒéœ€è¦æ’­æŠ¥çš„内容æ ÒŽ®å‚æ•°ä¼ å…¥åQŒæ²¡æœ‰å‚æ•îC¹Ÿå¯ä»¥æ’­æŠ¥é»˜è®¤çš„æ¶ˆæ¯ï¼Œ¾lè¿‡˜q™æ ·½Ž€å•çš„ž®è£…后,在调用时åQŒå°±åªéœ€è¦è°ƒç”¨say()æ–ÒŽ³•卛_¯åQŒä¸éœ€è¦åœ¨™åµé¢ä¸­æ”¾å…¥æ ‡½{¾ï¼Œä¹Ÿæ–¹ä¾¿æ”¾å…¥å…¶ä»–事件中åQŒç„¶åŽé¡µé¢å°±å¯ä»¥˜q™æ ·äº?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; "><!</span><span style="color: #FF00FF; ">DOCTYPE html</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">meta </span><span style="color: #FF0000; ">charset</span><span style="color: #0000FF; ">="utf-8"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">></span>语音播报<span style="color: #0000FF; "></</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "></</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">style </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/css"</span><span style="color: #0000FF; ">></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; "></</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">script </span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="js/jQuery/jQuery-2.1.4.min.js"</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">script </span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="js/speech/jQuery.speech.min.js"</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span><br /><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">button </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="kk"</span><span style="color: #0000FF; ">></span>说一ä¸?span style="color: #0000FF; "></</span><span style="color: #800000; ">button</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></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;">() {<br />    say(</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">您有新的订单åQŒè¯·æ³¨æ„æŸ¥æ”¶</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">);<br />    </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; "></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "></</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "></</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">></span></div>æ·ÕdŠ æŒ‰é’®åªæ˜¯ä¸ÞZº†æ¼”示事äšg触发åQŒéœ€è¦è¯´ä»€ä¹ˆå†…容就传入什么参敎ͼŒå¦‚果不传入参敎ͼŒåˆ™æ’­æŠ¥é»˜è®¤å†…宏V€‚è¿™æ ïLš„调用åQŒç”šæ˜¯ç®€å•ï¼Œ¾lˆäºŽå®Œæˆäº†è¿™æ ïLš„功能åQŒå¾ˆå¸…,哈哈:D</div><div></div><div>致谢https://github.com/wenco/speech</div></div><img src ="http://www.aygfsteel.com/zhouf/aggbug/432483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2017-04-25 18:48 <a href="http://www.aygfsteel.com/zhouf/articles/432483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat+Eclipse环境下ä‹É用Jenkins2.38搭徏持箋集成(CI)环境http://www.aygfsteel.com/zhouf/articles/432234.htmlZhouFengZhouFengMon, 02 Jan 2017 03:51:00 GMThttp://www.aygfsteel.com/zhouf/articles/432234.htmlhttp://www.aygfsteel.com/zhouf/comments/432234.htmlhttp://www.aygfsteel.com/zhouf/articles/432234.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/432234.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/432234.html

1.下蝲安装Jenkins

可以åœ?a target="_blank">http://mirrors.jenkins-ci.org上下载安装包åQŒä¹Ÿå¯ä»¥é€‰æ‹©åœ¨å®˜¾|‘(https://jenkins.ioåQ‰ä¸Šä¸‹è²waråŒ?http://mirrors.jenkins.io/war-stable/latest/jenkins.war)或是安装åŒ?http://mirrors.jenkins-ci.org/windows/jenkins-2.38.zip)åQŒå†™˜q™ç¯‡æ–‡ç« æ—¶æœ€æ–°ç‰ˆæœ¬äØ“2.38。如果选择安装包方式,下蝲后安装即可,安装完成后会自动启动‹¹è§ˆå™¨å‘å¯û|¼Œæ ÒŽ®æç¤ºæ“ä½œå®Œæˆå®‰è£…
本机下蝲安装包,安装到C:\JenkinsåQŒå¦‚下配¾|®ä¹Ÿæ˜¯åŸºäºŽæ­¤ç›®å½•˜q›è¡ŒåQŒä¸‹è½½åŠå®‰è£…˜q‡ç¨‹æˆªå›¾å¦‚下

选择Download Jenkins

下拉选择相应的操作系¾lŸç‰ˆæœ¬ï¼Œä¹Ÿå¯ä»¥ç›´æŽ¥ä¸‹è½½war包,本文下蝲Windows版本的安装包åQŒå®‰è£…过½E‹æŒ‡å®šå®‰è£…目录即可,安装完成后,会自动启动浏览器˜q›è¡Œé…ç½®

æ ÒŽ®™åµé¢æç¤ºåQŒåœ¨æ–‡äšg中找到密码填å…?br />
选择插äšgåQŒæœ¬ä¾‹é€‰æ‹©½W¬äºŒ™å¹ï¼Œè‡ªå·±å®šä¹‰æ’äšgåQŒæ‰“å¼€½W¬äºŒ™åšw‡Œçš„é»˜è®¤é€‰æ‹©å’ŒæŽ¨èæ’ä»¶ä¸€æ øP¼Œå¦‚果不做修改åQŒå°±ç›¸å½“于选择推荐插äšg安装

安装完成后,讄¡½®½Ž¡ç†å‘˜èÌŽå?br />
保存¾l“束安装

点击开始进入Jenkins界面

2.启动Jenkins

Jenkins默认工作目录会在当前用户目录下创å»?jenkins目录åQŒä¹Ÿå¯ä»¥é€šè¿‡è®„¡½®çŽ¯å¢ƒå˜é‡æ¥ä¿®æ”¹ï¼Œä¾‹å¦‚åQ?
set JENKINS_HOME=C:\jenkins
然后重新启动jenkinsåQŒå¯ä»¥æ”¾åœ¨ä¸Žå®‰è£…目录不同的地æ–?br /> ˜q›å…¥å®‰è£…目录C:\JenkinsåQŒç”¨å‘½ä×o行方式启åŠ?br />
java -jar jenkins.war
默认端口ä¸?080åQŒå¦‚果需要指定端口,可以使用如下参数指定åQŒå¦‚指定端口ä¸?000
java -jar jenkins.war --httpPort=9000
也可以修改目录下的jenkins.xml配置文äšgåQŒå°†å…¶ä¸­çš„httpPort修改卛_¯
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

3.部çÖv应用到Jenkins

之前的工½E‹æ˜¯åŸÞZºŽTomcat+Eclipse开发的åQŒå·¥½E‹ä¸æ˜¯ç”¨Maven½Ž¡ç†çš„,后面ž®±å¯¹å·¥ç¨‹˜q›è¡Œäº†æ”¹é€ ï¼Œç”¨Ant¾~–译åQŒæ·»åŠ äº†build.xmlæ–‡äšgåQŒåœ¨Ant中需要找到Tomcat目录åQŒäؓ了灵‹zÖM¸€ç‚¹ï¼Œåœ¨ç³»¾lŸé‡Œæ·ÕdŠ äº†Tomcat的环境变量CATALINA_HOMEåQŒä»¥åŠAnt环境的安装,˜q™æ˜¯å¯¹åŽŸæœ‰å·¥½E‹çš„æ”šw€ ï¼Œå¦‚果新的工程采用Maven方式的话åQŒåº”该会没有˜q™ä¹ˆéºÈƒ¦åQŒé™„上build.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<project basedir="." default="build" name="xi">
    <property environment="env"/>
    <property name="tomcat.home" value="${env.CATALINA_HOME}" />
    <property name="tomcat.lib" value="${env.CATALINA_HOME}/lib" />
    <property name="web.root" value="${env.CATALINA_HOME}/webapps"/>
    <property name="ant.home" value="${env.ANT_HOME}" />
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.7"/>
    <property name="source" value="1.7"/>
    <property name="webRoot.dir" value="${basedir}/WebContent" />
    <property name="src.dir" value="${basedir}/src" />
    <property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib" />  
    <property name="log.file" value="${tomcat.home}/webapps/log.info"/> 

    <tstamp> 
        <format property="build.time" pattern="yyyy-MM-dd HH:mm:ss" /> 
    </tstamp>


    <path id="prj.classpath">
        <pathelement location="build/classes"/>
        <fileset dir="${tomcat.lib}">  
            <include name="*.jar" />  
        </fileset>
        <fileset dir="${lib.dir}">  
            <include name="*.jar" />  
        </fileset>
    </path>
    <path id="tomcat.classpath">
        <fileset dir="${tomcat.lib}">  
            <include name="*.jar" />  
        </fileset>
        <fileset dir="${tomcat.home}/bin">  
            <include name="*.jar" />  
        </fileset>
    </path>

    <target name="init">
        <echo message="---------- init ----------"></echo>
        <mkdir dir="build/classes"/>
        <copy includeemptydirs="false" todir="build/classes">
            <fileset dir="src">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    
    <target name="clean">
        <echo message="---------- clean ----------"></echo>
        <delete dir="build/classes"/>
        <delete file="build/${ant.project.name}.war"></delete>
    </target>

    <target name="compile" depends="init">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="build/classes" includeantruntime="false"  encoding="UTF-8">
            <src path="src"/>
            <classpath refid="prj.classpath"/>
        </javac>
        <delete file="build/classes/gen-conf.xml"/>
    </target>

    <target name="build" depends="compile" description="make war">
        <war destfile="build/${ant.project.name}.war" basedir="WebContent" webxml="WebContent/WEB-INF/web.xml">
            <!-- lib dir="${lib.dir}"></lib -->
            <classes dir="${basedir}/build/classes"></classes>
        </war>
    </target>

    <target name="deploy" depends="build" description="deploy to tomcat"> 
        <echo message="----------deploy to tomcat----------"></echo>
        <delete file="${tomcat.home}/webapps/${ant.project.name}.war" /> 
        <delete dir="${tomcat.home}/webapps/${ant.project.name}" /> 
        <copy file="build/${ant.project.name}.war" todir="${tomcat.home}/webapps" /> 
    </target>

    <target name="undeploy" description="deploy to tomcat"> 
        <echo message="---------- undeploy project ----------"></echo>
        <delete file="${tomcat.home}/webapps/${ant.project.name}.war" /> 
        <delete dir="${tomcat.home}/webapps/${ant.project.name}" /> 
    </target> 

    
</project>
˜q™æ ·å†™æ˜¯ä¸ÞZº†åœ¨Jenkins里调用Ant完成¾~–译和部¾|²çš„工作ã€?br /> 在Jenkins里创建项目,当前选择的是自由™å¹ç›®åQŒå†™å¥½é¡¹ç›®å¿UŽÍ¼ŒåŽç®‹ž®±æ˜¯å¯šw¡¹ç›®è¿›è¡Œé…¾|®ï¼Œå¦‚果不希望保留过多的旧构建,可以讄¡½®ä¸¢å¼ƒã€‚另外还需要获取源码的服务器,默认支持CVSå’ŒSubversionåQŒä¹Ÿå¯ä»¥é€šè¿‡æ’äšg支持GitåQŒå› å½“前™å¹ç›®æ‰˜ç®¡äºŽSVNåQŒé…¾|®å¦‚下图

后面是如何触发的配置åQŒå¦‚下设¾|®äؓ每天6:30˜q›è¡Œæž„徏åQŒæ¯ä¸€ä¸ªå°æ—¶æ£€æŸ¥ä¸€ä¸‹æºç ï¼Œä¸»è¦æ˜¯èŽ·å–åˆ°ä»£ç åŽçš„åŠ¨ä½œè®„¡½®

在动作设¾|®é‡Œç”¨Windows的批处理方式˜q›è¡ŒåQŒåŽŸæœ¬è€ƒè™‘åœ¨æœåŠ¡å™¨ä¸Šåšä¸€ä¸ªæ‰¹å¤„ç†åQŒç”±Jenkins调用åQŒç»‹¹‹è¯•需要用¾lå¯¹è·¯å¾„åQŒä¸çŸ¥æ˜¯ä¸æ˜¯æŸä¸ªåœ°æ–¹æ²¡é…¾|®å¥½åQŒåŽæ¥å°±æ”¹ç”¨˜q™ç§æ–¹å¼åQŒå¯¹æœåŠ¡˜q›è¡Œå¯åŠ¨åœæ­¢æŽ§åˆ¶åQŒå¯¹å·¥ç¨‹˜q›è¡Œéƒ¨çÖv
¾læµ‹è¯•,此方式可以用åQŒå½“前用来解决Tomcat+Eclipse环境下的工程自动构徏问题åQŒå†™åœ¨è¿™ä¸ªåœ°æ–¹åšä¸ªè®°å½•,如果有机会,ž®è¯•一下MavenåQŒçœ‹çœ‹æ˜¯ä¸æ˜¯è¦ç®€å•点

]]>
jQuery打印插äšgprintPagehttp://www.aygfsteel.com/zhouf/articles/printpage.htmlZhouFengZhouFengTue, 29 Nov 2016 03:53:00 GMThttp://www.aygfsteel.com/zhouf/articles/printpage.htmlhttp://www.aygfsteel.com/zhouf/comments/432017.htmlhttp://www.aygfsteel.com/zhouf/articles/printpage.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/432017.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/432017.html阅读全文

]]>
JSP静态化HTML½W”è®°http://www.aygfsteel.com/zhouf/articles/383790.htmlZhouFengZhouFengMon, 23 Jul 2012 11:37:00 GMThttp://www.aygfsteel.com/zhouf/articles/383790.htmlhttp://www.aygfsteel.com/zhouf/comments/383790.htmlhttp://www.aygfsteel.com/zhouf/articles/383790.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/383790.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/383790.html
创徏一个ServletåQŒä¸»è¦å†…容如ä¸?br />
 1 String url = "";
 2 String name = "";
 3 
 4 Charset charset = Charset.forName("UTF-8");  //讄¡½®ç”Ÿæˆæ–‡äšg的字½W¦é›†
 5 ServletContext servletContext = getServletContext();
 6 
 7 String file_name = request.getParameter("file_name");
 8 url = "/" + file_name + ".jsp";    // ä½ è¦ç”Ÿæˆçš„页面动态页面来æº?/span>
 9 name = servletContext.getRealPath("/")+"\\"+ file_name + ".html";
10 // ˜q™æ˜¯ç”Ÿæˆçš„htmlæ–‡äšgå?如index.htmlæ–‡äšg名字与源文äšg名相å?/span>
11 
12 RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher(url);
13 
14 final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
15 
16 final ServletOutputStream stream = new ServletOutputStream() {
17     public void write(byte[] data, int offset, int length) {
18         outStream.write(data, offset, length);
19     }
20 
21     public void write(int b) throws IOException {
22         outStream.write(b);
23     }
24 };
25 
26 final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(outStream,charset));
27 
28 HttpServletResponse rep = new HttpServletResponseWrapper(response) {
29     public ServletOutputStream getOutputStream() {
30         return stream;
31     }
32 
33     public PrintWriter getWriter() {
34         return printWriter;
35     }
36 };
37 requestDispatcher.include(request, rep);
38 printWriter.flush();
39 FileOutputStream fos = new FileOutputStream(name); // æŠŠjsp输出的内容写到htmlæ–‡äšg中去
40 outStream.writeTo(fos);
41 fos.close();
42 out.print("<p align=center>OK</p>");
我是æƒÏxŠŠpage.jsp˜q™ä¸ªæ–‡äšg转换成page.htmlåQŒæ‰€ä»¥åªä¼ äº†ä¸€ä¸ªå‚敎ͼŒå¦‚æžœæƒÏxŠŠshow.jsp?id=123转换æˆ?23.htmlåQŒç›¸ä¿¡è¿™ä¹Ÿéš¾ä¸åˆ°å¤§å®¶åQŒåªä¸è¿‡å¾—注意引用CSS或图片的路径
˜q™æ˜¯åœ¨ç½‘上那位仁兄脓出来的代码,òq¶åšäº†äº›ä¿®æ”¹åQŒä»–˜q˜ä»‹¾läº†å…¶å®ƒçš„些åQŒå…¶å®ƒçš„˜q˜æ²¡æ¥å¾—及学习,先把˜q™äº›è®°å½•下来ã€?br />我在转换的时候,¼„°åˆ°ä¸­æ–‡é—®é¢˜åQŒæ›´æ”¹requestå’Œresponse的字½W¦é›†éƒ½æžä¸å®šåQŒè¿˜å¥½å‚考了http://www.aygfsteel.com/zphab/articles/295631.htmlåQŒæŠŠå­—符¾~–码加过来了åQŒä¸­æ–‡æ‰½Ž—搞定了åQŒç®€å•çš„‹¹‹è¯•通过后,攑֜¨åº”用里就好办了。äh家写出来˜q™ä¹ˆå¤šå¹´äº†ï¼Œæ‰å‘玎ͼŒæƒ­æ„§å‘€

以上æ–ÒŽ¡ˆå‚考:http://blog.csdn.net/noove_001/article/details/1953682

]]>
MyBatis代码生成工具mybatis-generatorçš„ä‹Éç”?/title><link>http://www.aygfsteel.com/zhouf/articles/383720.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 22 Jul 2012 09:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhouf/articles/383720.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/383720.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/383720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/383720.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/383720.html</trackback:ping><description><![CDATA[在用MyBatis的时候,会涉及到POJO¾cȝš„¾~–写åQŒMapper接口的编写,˜q˜æœ‰ä¸€äº›xml配置文äšgåQŒæ•°æ®åº“的创å»ÞZ¹Ÿå¾—自己完成,˜q™æ ·åªæ˜¯æŠŠæ•°æ®åº“讉K—®æ–¹å¼æ¢æˆäº†ORMçš„æ–¹å¼è¿›è¡Œï¼Œå·¥ä½œé‡åÆˆæ²¡æœ‰å‡å°‘åQŒåœ¨MyBatisä¸»é¡µé‡Œæœ‰çœ‹åˆ°æä¾›çš„ä»£ç ç”Ÿæˆå·¥å…øP¼Œä¾¿è¯•了一下,写好配置文äšg后,执行一条命令便生成了之前我们手工完成的˜q™äº›æ–‡äšgåQŒå¾ˆé…·å“‡ã€?br />首先在网上下è½?a >mybatis-generator</a>åQŒæ­¤å¤„下载的æ˜?.1.1的版本的一个zip包,下蝲好后解压<br />解压后有个doc目录和一个lib目录åQŒdoc目录提供了一个ä‹É用说明文档,lib目录是我们需要的jaræ–‡äšgåQŒå½“然还有提供源代码和文档jaråQŒè¿™äº›å¯ä»¥å¯¼å…¥MyEclipse里用<br />˜q›å…¥åˆ°lib目录中(当然也可以在别处创徏一个目录,只不˜q‡åœ¨ä½¿ç”¨æ—¶è¦æŒ‡å®šjaræ–‡äšg路径åQŒæ­¤å¤„äØ“äº†æ–¹ä¾¿ç‚¹åQŒå°±æŠŠæ–‡ä»¶ç”Ÿæˆåœ¨˜q™ä¸ªç›®å½•里了åQ‰ï¼Œåˆ›å¾ä¸€ä¸ªé…¾|®æ–‡ä»Óž¼Œå¦‚conf.xmlåQŒæ­¤å¤„文件名自己命名åQŒæ²¡æœ‰å‘½åæ–¹é¢çš„ç‰ÒŽ®Šè¦æ±‚åQŒæˆ‘是参考doc文档里的配置文äšg写的åQŒå¦‚ä¸?br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><?</span><span style="color: #FF00FF; ">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000FF; ">?></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; "><!</span><span style="color: #FF00FF; ">DOCTYPE generatorConfiguration<br />  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"<br />  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; "><</span><span style="color: #800000; ">generatorConfiguration</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">classPathEntry </span><span style="color: #FF0000; ">location</span><span style="color: #0000FF; ">="mysql-connector-java-3.1.13-bin.jar"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/><br /></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">context </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="mysqlTables"</span><span style="color: #FF0000; "> targetRuntime</span><span style="color: #0000FF; ">="MyBatis3"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">jdbcConnection </span><span style="color: #FF0000; ">driverClass</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; "><br />        connectionURL</span><span style="color: #0000FF; ">="jdbc:mysql://localhost/bbs"</span><span style="color: #FF0000; "><br />        userId</span><span style="color: #0000FF; ">="root"</span><span style="color: #FF0000; "><br />        password</span><span style="color: #0000FF; ">="1233"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">jdbcConnection</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">javaTypeResolver </span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="forceBigDecimals"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="false"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">javaTypeResolver</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">javaModelGenerator </span><span style="color: #FF0000; ">targetPackage</span><span style="color: #0000FF; ">="test.model"</span><span style="color: #FF0000; "> targetProject</span><span style="color: #0000FF; ">="src"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="trimStrings"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">javaModelGenerator</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">sqlMapGenerator </span><span style="color: #FF0000; ">targetPackage</span><span style="color: #0000FF; ">="test.xml"</span><span style="color: #FF0000; ">  targetProject</span><span style="color: #0000FF; ">="src"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">sqlMapGenerator</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />      <br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">javaClientGenerator </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="XMLMAPPER"</span><span style="color: #FF0000; "> targetPackage</span><span style="color: #0000FF; ">="test.dao"</span><span style="color: #FF0000; ">  targetProject</span><span style="color: #0000FF; ">="src"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="enableSubPackages"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">javaClientGenerator</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">table </span><span style="color: #FF0000; ">tableName</span><span style="color: #0000FF; ">="tb_users"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">table</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      <br />  </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">context</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; "></</span><span style="color: #800000; ">generatorConfiguration</span><span style="color: #0000FF; ">></span></div><table>标签里指定要生成的相å…Ïx•°æ®è¡¨åQŒå¦‚果有多个表的话,需要配¾|®å¤šä¸?lt;table><br />数据库还是用之前创徏好的数据库和表,òq¶æŒ‡å®šäº†è¦ç”Ÿæˆæ–‡ä»¶çš„ç›¸å…³è¡¨ï¼Œå› äØ“è¦ç”¨åˆîC¸Žæ•°æ®åº“çš„˜qžæŽ¥åQŒå¾—加蝲数据库驱动,可以ž®†mysql的驱动放在系¾lŸçŽ¯å¢ƒå˜é‡çš„classpath里,也可以在配置文äšg里指定èµ\径,此处ä¸ÞZº†é…ç½®æ–‡äšg方便åQŒæŠŠmysql的驱动jar包拷贝到lib目录下了åQŒåƈ创徏一个用于存攄¡”Ÿæˆæ–‡ä»¶çš„srcæ–‡äšgå¤?br />在命令窗口模式下åQŒè¿›å…¥åˆ°lib目录åQŒæ‰§è¡Œå¦‚下命ä»?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">java -jar mybatis-generator-core-1.3.1.jar -configfile conf.xml -overwrite</span></div><div>命ä×o执行完成后,便可在src目录下看到生成的一些文件了åQŒå¤§æ¦‚看了一下生成的代码åQŒè‡ªå·±å†™çš„话åQŒè¿˜æ˜¯è¦èŠ×ƒ¸€ç‚ÒŽ—¶é—´çš„åQŒæœ‰å¥½çš„工具åQŒå¯çœŸæ˜¯æ–¹ä¾¿å‘€åQŒä¸˜q‡å‘çŽîC¸€ä¸ªé—®é¢˜ï¼Œç”Ÿæˆçš„代码里的好多的注释åQŒæ„Ÿè§‰æ³¨é‡Šæ¯”可用代码都多åQŒæˆ‘查了一下配¾|®æ–‡ä»Óž¼Œæ‰‘Öˆ°äº†ä¸€ä¸ªåŽ»æŽ‰ç”Ÿæˆæ³¨é‡Šçš„åœ°æ–¹åQŒæŠŠå®ƒåŠ åœ¨äº†é…ç½®æ–‡äšg里,大概位置如下åQŒæˆ‘之前æ”ùN”™äº†åœ°æ–¹ï¼Œž®±æ²¡æ³•运è¡?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">context </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="mysqlTables"</span><span style="color: #FF0000; "> targetRuntime</span><span style="color: #0000FF; ">="MyBatis3"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  <br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">commentGenerator</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="suppressAllComments"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">property </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="suppressDate"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "> </span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">commentGenerator</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    <br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">jdbcConnection </span><span style="color: #FF0000; ">driverClass</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; "><br /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span></div>˜q™æ ·æ”¹äº†ä¹‹åŽåQŒç”Ÿæˆçš„代码ž®±æ²¡æœ‰æ³¨é‡Šäº†åQŒè¿™ä¸‹æ¸…爽了许多åQŒè‡³äº?lt;commentGenerator>标签和里面的两个属性的含义åQŒdoc文档里有详细的说明,我就不脓在这里了åQŒå¦‚果要把生成的文äšg攑ֈ°å·¥ç¨‹åº”用里,注意改下相关的èµ\径及包名åQŒåº”该就可以了ã€?br />用了一下,感觉˜q™ä¸ªä¸œä¸œå¾ˆä¸é”™ï¼Œ¼‹®å®žçœäº‹å„¿ä¸ž®‘,不过我还没有在项目中ž®è¯•åQŒå†™åœ¨è¿™é‡Œäº†å…?)</div><img src ="http://www.aygfsteel.com/zhouf/aggbug/383720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2012-07-22 17:12 <a href="http://www.aygfsteel.com/zhouf/articles/383720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初试MyBatishttp://www.aygfsteel.com/zhouf/articles/383711.htmlZhouFengZhouFengSun, 22 Jul 2012 04:48:00 GMThttp://www.aygfsteel.com/zhouf/articles/383711.htmlhttp://www.aygfsteel.com/zhouf/comments/383711.htmlhttp://www.aygfsteel.com/zhouf/articles/383711.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/383711.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/383711.html在www.mybatis.org上可以找åˆîC¸‹è½½é“¾æŽ¥ï¼Œæˆ‘下载的是mybatis-3.1.1˜q™ä¸ªç‰ˆæœ¬åQŒä¸‹è½½ä¸€ä¸ªzip包,里面包含有主要的库文件mybatis-3.1.1.jaråQŒè¿˜æœ‰ä¸€äº›å¼•用的jaråQŒä¸€ä¸ªPDF说明文档åQŒè¿™ä¸ªè¯´æ˜Žæ–‡æ¡£æä¾›çš„æ˜¯E文版åQŒå¯ä»¥åœ¨¾|‘上扑ֈ°ç›¸åº”的中文版åQŒä¸‹è½½å®ŒæˆåŽåQŒå°±å¼€å§‹æˆ‘的操作了ã€?br />在MyEclipse里创å»ÞZº†ä¸€ä¸ªjava工程åQŒæœ¬æ¥æ˜¯æ‰“算在Web中ä‹É用的åQŒæ²¡æœ‰åˆ›å»ºWeb工程åQŒåªæ˜¯æƒ³è¯•一下MyBatis˜q™ä¸œä¸œï¼Œjava工程ž®±å¯ä»¥äº†ã€?br />创徏时引入MyBatis库和数据库驱动库åQŒåˆ›å»ÞZ¸€ä¸ªç©ºçš„å·¥½E?br />
准备好数据库åQŒæ­¤å¤„用MySQL做练习,创徏一个bbs数据库,创徏一个tb_users表,¾l“构如下
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| userid   | int(11)  | NO   | PRI |         |       |
| username | char(20) | NO   |     |         |       |
+----------+----------+------+-----+---------+-------+

创徏一个User¾c»ï¼Œä¸Žæ•°æ®è¡¨å¯¹åº”
package com.cuit.prj.domain;

public class User {
    
private int userid;
    
private String userName;
    
    
public User() {
        
super();
    }
    
public User(int userid, String userName) {
        
super();
        
this.userid = userid;
        
this.userName = userName;
    }
    
public int getUserid() {
        
return userid;
    }
    
public void setUserid(int userid) {
        
this.userid = userid;
    }
    
public String getUserName() {
        
return userName;
    }
    
public void setUserName(String userName) {
        
this.userName = userName;
    }
}
再创å»ÞZ¸€ä¸ªUserMapper接口åQŒé‡Œé¢æä¾›äº†å¯¹User的相å…Ïx“ä½?br />
package com.cuit.prj.presistence;

import com.cuit.prj.domain.User;

public interface UserMapper {
    User selectUser(
int userid);
    
void insertUser(User user);
    
void updateUser(User user);
    
void deleteUser(int userid);
}
再创å»ÞZ¸€ä¸ªUserMapper.xmlåQŒä¸ŽUserMapper.java对应的一个配¾|®æ–‡ä»Óž¼Œ¾læœ¬ä¾‹æµ‹è¯•,其中的id要和接口中的æ–ÒŽ³•名一è‡?br />
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
<mapper namespace="com.cuit.prj.presistence.UserMapper">
    
<select id="selectUser" parameterType="int" resultType="com.cuit.prj.domain.User">
        select *
        from tb_users where userid = #{userid}
    
</select>

    
<insert id="insertUser" parameterType="com.cuit.prj.domain.User">
        insert into tb_users(userid,username) values (#{userid},#{userName})
    
</insert>

    
<update id="updateUser" parameterType="com.cuit.prj.domain.User">
        update tb_users set username = #{userName} where userid = #{userid}
    
</update>

    
<delete id="deleteUser" parameterType="int">
        delete from tb_users where userid = #{userid}
    
</delete>
</mapper>
在src下面创徏MyBatis配置文äšgmybatis-conf.xmlåQŒé…¾|®æ–‡ä»¶åæ²¡æœ‰ç‰ÒŽ®Šè§„定åQŒå› ä¸ºåœ¨åŽé¢çš„代码里需要指定文件名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"
>
<configuration>
    
<environments default="development">
        
<environment id="development">
            
<transactionManager type="JDBC" />
            
<dataSource type="POOLED">
                
<property name="driver" value="com.mysql.jdbc.Driver" />
                
<property name="url" value="jdbc:mysql://localhost/bbs" />
                
<property name="username" value="root" />
                
<property name="password" value="1233" />
            
</dataSource>
        
</environment>
    
</environments>
    
<mappers>
        
<mapper resource="com/cuit/prj/presistence/UserMapper.xml" />
    
</mappers>
</configuration>
创徏一个获取连接的SessionFactory的类
package com.cuit.prj.sessionfactory;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SessionFactory {
    
public static SqlSession getSession(){
        SqlSession session 
= null;
        String resource 
= "mybatis-conf.xml";
        
try {
            Reader reader 
= Resources.getResourceAsReader(resource);
            SqlSessionFactory sqlMapper 
= new SqlSessionFactoryBuilder().build(reader);
            session 
= sqlMapper.openSession();
        } 
catch (IOException e) {
            e.printStackTrace();
        }
        
return session;
    }
}
做好上述准备后,写一个主æ–ÒŽ³•调用‹¹‹è¯•åQŒå¦‚ä¸?br />
package com.cuit.prj;

import org.apache.ibatis.session.SqlSession;
import com.cuit.prj.domain.User;
import com.cuit.prj.presistence.UserMapper;
import com.cuit.prj.sessionfactory.SessionFactory;

public class AppTest {
    public static void main(String[] args) {
        System.out.println(
"Hello");
        SqlSession session 
= SessionFactory.getSession();
        
try {
            UserMapper mapper 
= session.getMapper(UserMapper.class);

            User user 
= mapper.selectUser(2);
            System.out.println(user.getUserName());
        } 
finally {
            session.close();
        }
    }
}
在数据库中添加两条记录,òq¶æäº?br />
+--------+----------+
| userid | username |
+--------+----------+
| 1      | user1    |
| 2      | user2    |
+--------+----------+
接下来就可以˜qè¡Œçœ‹çœ‹¾l“果了。输出如下:
Hello
user2
¾lˆäºŽè·‘è“v来了åQŒåœ¨å¤„理了一¾pÕdˆ—çš„Exception之后看到的结果,上面的测试只是做了一个读取数据的操作åQŒå¦‚果有新增或修æ”ÒŽ•°æ®ï¼Œéœ€è¦è°ƒç”¨session.commit()操作ã€?br />大概ž®ç»“一下,用了MyBatis感觉˜q˜æ˜¯å¾ˆä¸é”™çš„åQŒæŠŠSQL语句和JAVA代码分离开åQŒå–œ‹Æ¢è‡ªå·±æŽŒæŽ§SQL语句的äh们可能会喜欢MyBatis一些,不像Hibernate那样可以完全不用写SQL语句。只是配¾|®æ–‡ä»¶å’ŒæŽ¥å£å†™è“v来还是有些麻烦,˜q˜æœ‰POJO¾cȝš„生成åQŒå·¥ä½œé‡˜q˜æ˜¯ä¸å°å“‡ï¼Œ¾|‘上扑ֈ°ä¸€ä¸ªç”Ÿæˆå·¥å…øP¼Œä¸‹æ¬¡ç ”究一下再补充上来ã€?/div>

]]>‹¹®åЍQQ客服的实çŽ?/title><link>http://www.aygfsteel.com/zhouf/articles/362729.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sat, 05 Nov 2011 02:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhouf/articles/362729.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/362729.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/362729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/362729.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/362729.html</trackback:ping><description><![CDATA[˜q™ä¸ªåŠŸèƒ½æ˜¯æœ€˜q‘的一个东东需要,所以关注了一下,在网上找了一些,感觉都有点复杂,¾lè¿‡ä¸€ŒD‰|—¶é—´çš„学习后,¾lˆäºŽå®žçŽ°äº†ä¸€ä¸ªç¨å¾®ç®€‹zçš„版本<br />我是用的wp.qq.com官方¾|‘站上的提示完成了,在页面里定义一个DIVåQŒé‡Œé¢çš„内容安排ž®Þp‡ªå·Þq¡®å®šäº†åQŒæˆ‘的代码如ä¸?br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; "><!--</span><span style="color: #008000; "> åœ¨çº¿å®¢æœéƒ¨åˆ† </span><span style="color: #008000; ">--></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">div </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="online_box"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">div </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="title"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            è”系我们<br />        </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">div </span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="qqlist"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; ">电话:</span><span style="color: #0000FF; "></</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">(028)1234567</span><span style="color: #0000FF; "><</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">(028)1234567</span><span style="color: #0000FF; "><</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            åœ¨çº¿å’¨è¯¢:<br />            </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                å®¢æœ1 </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">a </span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; "> href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&uin=111111&site=qq&menu=yes"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">img </span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; "> src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:111111:41"</span><span style="color: #FF0000; "> alt</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #FF0000; "> title</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                å®¢æœ2 </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">a </span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; "> href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&uin=222222&site=qq&menu=yes"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">img </span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; "> src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:222222:41"</span><span style="color: #FF0000; "> alt</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #FF0000; "> title</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                å®¢æœ3 </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">a </span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #FF0000; "> href</span><span style="color: #0000FF; ">="http://wpa.qq.com/msgrd?v=3&uin=333333&site=qq&menu=yes"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">img </span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; "> src</span><span style="color: #0000FF; ">="http://wpa.qq.com/pa?p=2:333333:41"</span><span style="color: #FF0000; "> alt</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #FF0000; "> title</span><span style="color: #0000FF; ">="点击˜q™é‡Œ¾l™æˆ‘发消æ?</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">p</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />            <br />        </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /></span><span style="color: #008000; "><!--</span><span style="color: #008000; "> åœ¨çº¿å®¢æœéƒ¨åˆ†¾l“束 </span><span style="color: #008000; ">--></span></div>那部åˆ?lt;a>...</a>的代码是在wp.qq.com上拷贝的åQŒç½‘站上˜q˜æœ‰å¾ˆå¤šçš„æ ·å¼ä¾›é€‰æ‹©åQŒäؓ了适应本来的页面样式,˜q˜å¾—定义该层的样式,¼‹®å®šæ˜„¡¤ºä½ç½®½{‰ï¼Œä½¿å…¶æ›´è§„范些åQŒæˆ‘的样式定义如ä¸?br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">*******************在线服务部分*********************</span><span style="color: #008000; ">*/</span><span style="color: #800000; "><br />#online_box</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />    position</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> absolute</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    float</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> right</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    left</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 5px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    top</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 200px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    z-index</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 10</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    border</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 1px solid #0168b7</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    width</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 170px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    background-color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> white</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    text-align</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> left</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box #title</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />    background-color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> #0168b7</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    color</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> white</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    font-size</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 12</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    font-weight</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> bold</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    padding</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 10px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box #qqlist</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />    font-size</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 12</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br />    padding</span><span style="color: #000000; ">:</span><span style="color: #0000FF; "> 20px</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span><span style="color: #800000; "><br />#online_box #qqlist img</span><span style="color: #000000; ">{</span><span style="color: #FF0000; "><br />    vertical-align</span><span style="color: #000000; ">:</span><span style="color: #0000FF; ">middle</span><span style="color: #000000; ">;</span><span style="color: #FF0000; "><br /></span><span style="color: #000000; ">}</span></div>接下来就是对™åµé¢æ»šåŠ¨çš„å¤„ç†ï¼Œå®žçŽ°å±‚çš„‹¹®åЍåQŒæˆ‘借用了jQuery来完成的åQŒåº“的引入就不必再写了,下面附上写的脚本<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #000000; ">$(document).ready(</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(){<br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">var</span><span style="color: #000000; "> bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">var</span><span style="color: #000000; "> selfHeight </span><span style="color: #000000; ">=</span><span style="color: #000000; "> $(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).height();<br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> window.pageYOffset </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined') {<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> window.pageYOffset;<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">    } </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> document.compatMode </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined' </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> document.compatMode </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'BackCompat') {<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> document.documentElement.scrollTop;<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">    }</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> document.body </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined') {<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> document.body.scrollTop;<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">    $(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).css(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">top</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, bodyTop</span><span style="color: #000000; ">+</span><span style="color: #000000; ">document.body.clientHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">selfHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);    <br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">});<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">$(window).scroll(</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">() {<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">var</span><span style="color: #000000; "> bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">var</span><span style="color: #000000; "> selfHeight </span><span style="color: #000000; ">=</span><span style="color: #000000; "> $(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).height();<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> window.pageYOffset </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined') {<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> window.pageYOffset;<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; ">    } </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> document.compatMode </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined' </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> document.compatMode </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'BackCompat') {<br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> document.documentElement.scrollTop;<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">    }</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; "> document.body </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 'undefined') {<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">        bodyTop </span><span style="color: #000000; ">=</span><span style="color: #000000; "> document.body.scrollTop;<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">27</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; ">28</span> <span style="color: #000000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">靠上端方å¼?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span> <span style="color: #008000; "></span><span style="color: #000000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">$("#online_box").css("top", 100 + bodyTop);</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">30</span> <span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">31</span> <span style="color: #000000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">靠下端方å¼?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">32</span> <span style="color: #008000; "></span><span style="color: #000000; ">    $(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#online_box</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).css(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">top</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, bodyTop</span><span style="color: #000000; ">+</span><span style="color: #000000; ">document.body.clientHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">selfHeight</span><span style="color: #000000; ">-</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">33</span> <span style="color: #000000; ">});</span></div>我采用靠左下的方式显½Cºï¼Œç›´æŽ¥åœ¨CSS中无法确定靠下显½Cºçš„™åµé¢æ˜„¡¤ºé«˜åº¦åQŒæ‰€ä»¥åœ¨ready()里做了一‹Æ¡å®šä½ï¼Œå¦‚果是按上对齐方式,˜q™éƒ¨åˆ†å¯ä»¥ä¸å†™ï¼Œç›´æŽ¥æŠŠTOP写在CSS里就行了åQŒä¸‹é¢çš„æ»šåŠ¨å®šä½ä¹Ÿä¼š½Ž€å•些<br />好啦åQŒä“Q务完成,收工åQŒä»Šå¤©å‘¨å…­ï¼ŒæŠŠå‰å‡ å¤©å®Œæˆçš„事情记录一下先:)<img src ="http://www.aygfsteel.com/zhouf/aggbug/362729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2011-11-05 10:01 <a href="http://www.aygfsteel.com/zhouf/articles/362729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ž®†æ•°æ®æºçš„连接配¾|®æ”¹ä¸ÞZ»Žé…ç½®æ–‡äšgè¯Õd–http://www.aygfsteel.com/zhouf/articles/299437.htmlZhouFengZhouFengThu, 22 Oct 2009 16:14:00 GMThttp://www.aygfsteel.com/zhouf/articles/299437.htmlhttp://www.aygfsteel.com/zhouf/comments/299437.htmlhttp://www.aygfsteel.com/zhouf/articles/299437.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/299437.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/299437.html
在此,考虑了几¿Uæ–¹æ³?br /> æ–ÒŽ³•一:用Spring框架,ž®†æ•°æ®è¿žæŽ¥é…¾|®å†™åœ¨Spring的配¾|®æ–‡ä»‰™‡Œ,用Spring的注入方式生成对è±?供程序调ç”?br /> æ–ÒŽ³•äº?自定义一个xmlæ–‡äšg,在数据连接写在xmlä¸?写一个JavaBeanè¯Õd–xml
æ–ÒŽ³•ä¸?用Property方式定义配置配置文äšg,用JavaBean来读取设¾|?br /> å› äØ“æ˜¯ä¸€ä¸ªå¾ˆž®çš„东东,为此一™å¹è€Œä‹É用Spring框架,ä¼ég¹Žæœ‰ç‚¹‹¹ªè´¹,用xml来作配置文äšg,自己写读取方法时也不½Ž—简å?最½Ž€å•çš„˜q˜æ˜¯½W¬ä¸‰¿U?ä¹Ÿä¸æƒ³äØ“˜q™ç‚¹æ”¹åŠ¨ç”¨å¤§åˆ€,½Ž€å•çš„ž®±æ˜¯æœ€å¥½çš„:)

首先新徏一个读取配¾|®æ–‡ä»¶çš„DBConfig.java(省略了包及getter,setteræ–ÒŽ³•)
/**
 * ˜q™æ˜¯ä¸€ä¸ªèŽ·å–æ•°æ®åº“é…ç½®çš„ç±»
 * 
@author ZF
 
*/
public class DBConfig {
    
private String url;
    
private String driver;
    
private String userName;
    
private String password;

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
        DBConfig conf 
= new DBConfig();

    }
    
    
/**
     * åœ¨æž„造函数里è¯Õd–配置文äšg
     
*/
    
public DBConfig(){
        Properties prop
= new Properties();
        
try
        {
            
//目录指到根目录的上çñ”,æ˜¯äØ“äº†å°†é…ç½®æ–‡äšg攑֜¨WEB-INF目录ä¸?br />             //如果直接攑֜¨æ ¹ç›®å½•下,则需ž®†é…¾|®æ–‡ä»¶æ”¾åœ¨classes目录ä¸?/span>
            InputStream is = getClass().getResourceAsStream("/../dbconfig.property");
            prop.load(is);
            
if(is!=null){
                is.close();
            }
        }
        
catch(Exception e) {
            e.printStackTrace();
        }

        
this.setDriver(prop.getProperty("Driver"));
        
this.setUrl(prop.getProperty("URL"));
        
this.setUserName(prop.getProperty("user"));
        
this.setPassword(prop.getProperty("password"));
    }


   
// getters()... and  setters()...
      
}

然后在WEB-INF目录下新建配¾|®æ–‡ä»¶dbconfig.property
Driver=com.mysql.jdbc.Driver
URL
=jdbc:mysql://localhost/tsoa
user
=mysqluser
password
=mysqlpassword
修改获取数据˜qžæŽ¥çš„代ç ?br />
//获取数据库连接配¾|?/span>
DBConfig dbconf = new DBConfig();

//æ ÒŽ®˜qžæŽ¥é…ç½®èŽ·å–æ•°æ®åº“è¿žæŽ?/span>
Class.forName(dbconf.getDriver()).newInstance();
conn
= DriverManager.getConnection(dbconf.getUrl(),dbconf.getUserName(),dbconf.getPassword());
‹¹‹è¯•通过,OK,在此记录一ä¸?br />


]]>
J2EE定时采集½E‹åºhttp://www.aygfsteel.com/zhouf/articles/263933.htmlZhouFengZhouFengWed, 08 Apr 2009 01:44:00 GMThttp://www.aygfsteel.com/zhouf/articles/263933.htmlhttp://www.aygfsteel.com/zhouf/comments/263933.htmlhttp://www.aygfsteel.com/zhouf/articles/263933.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/263933.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/263933.html 首先åQŒç¼–写一个Servlet用于启动定时器和˜q›è¡Œä»ÕdŠ¡è°ƒåº¦åQŒå‚考代码如下:
import javax.servlet.ServletContextEvent;

public class MyTimer extends javax.servlet.http.HttpServlet implements
        javax.servlet.ServletContextListener {
    
// private static final long serialVersionUID = 1L;

    
private java.util.Timer timer = null;

    
public void contextInitialized(ServletContextEvent event) {
        timer 
= new java.util.Timer(true);
        System.out.println(
"定时器已启动");
        timer.schedule(
new MyTimerTask(), 024 * 60 * 60 * 1000);
        System.out.println(
"已经æ·ÕdŠ ä»ÕdŠ¡è°ƒåº¦è¡?/span>");
    }

    
public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
        System.out.println(
"定时器销�/span>");
    }
}
其中利用了定时器的java.util.Timer.schedule(TimerTask task, long delay, long period)æ–ÒŽ³•åQŒé‡Œé¢çš„参数依次为:ä»ÕdŠ¡¾c?å»¶æ—¶åQˆå•位毫¿U’),周期åQˆå•位毫¿U’)。根据我的设定,每2åQ”小时运行一‹Æ¡ã€?br /> 然后是ä“Q务调度类åQ?br />
import java.util.Calendar;
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    
private static final int C_SCHEDULE_HOUR = 22;
    
private static boolean isRunning = false;

    @Override
    
public void run() {
        Calendar cal 
= Calendar.getInstance();
        
if (!isRunning) {
            
if (C_SCHEDULE_HOUR < cal.get(Calendar.HOUR_OF_DAY)) {
                isRunning 
= true;
                System.out.println(
"开始执行指定ä“QåŠ?/span>");

                
/* Your Code */

                isRunning 
= false;
                System.out.println(
"指定ä»ÕdŠ¡æ‰§è¡Œ¾l“束");
            }
        } 
else {
            System.out.println(
"上一‹Æ¡ä“Q务执行还未结æ?/span>");
        }
    }
}
其中C_SCHEDULE_HOUR为执行ä“Q务的时段åQŒæ ¹æ®æˆ‘的要求是每天åQ’2点后才执行我的采集程序ã€?br /> 最后是配置侦听器:
在web.xml中添加以下代码,当然Servlet名要换成真实�br />
<listener>
    
<listener-class>com.test.MyTimer</listener-class>
</listener>
ž®Þp¿™æ øP¼Œåªéœ€ä¸‰æ­¥åQŒä¸€ä¸ªç®€å•的定时采集˜q›ç¨‹ž®±æžå®šäº†

]]>
eWebEditor在JBOSS下无法显½Cºçš„问题http://www.aygfsteel.com/zhouf/articles/264392.htmlZhouFengZhouFengWed, 08 Apr 2009 01:40:00 GMThttp://www.aygfsteel.com/zhouf/articles/264392.htmlhttp://www.aygfsteel.com/zhouf/comments/264392.htmlhttp://www.aygfsteel.com/zhouf/articles/264392.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/264392.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/264392.html
Exception in JSP: /eWebEditor.jsp:54
¾lè¿‡ä¸€ç•ªæŠ˜è…‘֐Žåˆå‘çŽîCº†å¦‚下的出错提½C?br />
java.lang.NoClassDefFoundError: org/dom4j/xpath/DefaultXPath
后来发现是dom4j.jar版本不对造成的问é¢?JBOSS自带的版本会出现上述的情å†?br /> 解决æ–ÒŽ³•如下:
ž®†eWebEditor里自带的dom4j.jar(476K)的文件覆盖掉jboss4\lib\dom4j.jar(297K)卛_¯,本文参考以下的材料

The error "java.lang.NoClassDefFoundError: org/dom4j/xpath/DefaultXPath" underlines important changes to the dom4j XML library. It usually happens when you try to call this library's methods in runtime. Older versions that shipped with JBoss used to include Jaxen, but for whatever reason, it is no longer included. Users must download dom4j.jar (now at version 1.6.1) and then jaxen-full.jar (FCS-1.0). Now how to resolve this problem is tricky:

   1. Put dom4j-1.3.jar in {jboss}/lib. This version is known good.
   2. Put dom4j-1.6.1.jar and jaxen-full.jar in {jboss}/server/default/lib. Remove the old dom4j JARs that may exist in that directory.

The reason the newer version cannot be used with JBoss is unknown, but it does not work. The older version is used when reading JBoss-specific config files. The newer version of dom4j kicks in when the default server is initialized. This allows development of applications using newer versions of the XML API.

http://prideafrica.blogspot.com/2006/05/javalangnoclassdeffounderror.html



]]>
UrlRewriteçš„ä‹É用记å½?/title><link>http://www.aygfsteel.com/zhouf/articles/251531.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Fri, 16 Jan 2009 01:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhouf/articles/251531.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/251531.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/251531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/251531.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/251531.html</trackback:ping><description><![CDATA[ä¸ÞZº†ä¸åœ¨åœ°å€æ é‡Œæš´éœ²˜q‡å¤šçš„ä¿¡æ?惛_ˆ°äº†åšä¸€ä¸ªåœ°å€çš„隐è—?在网上找了一些资æ–?军_®šè¯•试UrlRewriet<br /> 在网上下载了<a >urlrewrite</a>的包,我下载的是urlrewritefilter-2.6-src.zip<br /> 打开压羃åŒ?ž®†é‡Œé¢çš„urlrewrite-2.6.0.jar攑֜¨å·¥ç¨‹çš?WEB-INF/lib/目录ä¸?br /> ž®†é‡Œé¢çš„urlrewrite.xml攑֜¨å·¥ç¨‹çš?WEB-INF/目录ä¸?br /> 修改/WEB-INF/web.xml,加入˜q‡æ×oå™?br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">logLevel</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">WARN</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">UrlRewriteFilter</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/*</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">></span></div> 在urlrewrite.xml里加入规åˆ?å¦?<br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         The rule means that requests to /page/pagea.html will be redirected to /pagea.jsp<br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/html/([a-z]+).html</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span></div> 此时在浏览器里访é—?html/pagea.html会显½C?pagea.jsp的内å®?OK,搞定<br /> 如果˜q™ç§åœ°å€éšè—å¯è¡Œ,那么可以把jsp™åµé¢ä¼ªè£…成asp或是php™åµé¢,改写规则如下<br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         The rule means that requests to /html/pagea.html will be redirected to /pagea.jsp<br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/html/([a-z]+).html</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         The rule means that requests to /asp/pagea.asp will be redirected to /pagea.jsp<br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/asp/([a-z]+).asp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         The rule means that requests to /php/pagea.php will be redirected to /pagea.jsp<br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">note</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/php/([a-z]+).php</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">from</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">/$1.jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">to</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">rule</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span></div> 此时,在浏览器里输å…?br /> /html/pagea.html<br /> /asp/pagea.asp<br /> /php/pagea.php<br /> 均可以访问页面pagea.jsp<br /> 几个月前我写了一½‹‡ç¬”记做地址伪装çš?看来完全可以用这个东东代替了,上次写的那个˜q˜æœ‰ä¸€äº›é—®é¢˜æ²¡æœ‰å®Œå…¨è§£å†?用urlrewrite做地址隐藏,真是感觉很专ä¸?完美呀,初次使用,可能有些高çñ”的功能还没有用到,不过通过˜q™æ ·çš„试éª?已感觉出它的强大,˜q™åº”该是一个很好的解决æ–ÒŽ¡ˆ.<br /> <br /> <img src ="http://www.aygfsteel.com/zhouf/aggbug/251531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2009-01-16 09:50 <a href="http://www.aygfsteel.com/zhouf/articles/251531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML表格斑马¾U?/title><link>http://www.aygfsteel.com/zhouf/articles/238196.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 02 Nov 2008 09:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhouf/articles/238196.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/238196.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/238196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/238196.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/238196.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">/*表格间隔行变背景è‰?/<br /> .row<br /> {<br />  alternateColor:expression(bgColor=rowIndex%2==0?'#FFFFFF':'#EFF7FF');<br />  }           <br /> <br />  <br /> ž®†ä¸Šé¢çš„代码加入到trä¸?br /> <br /> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">thead</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />   </span><span style="color: #0000ff;"><</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">td </span><span style="color: #ff0000;">nowrap</span><span style="color: #0000ff;">></span><span style="color: #000000;">状æ€?/span><span style="color: #0000ff;"></</span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br /> <br />   </span><span style="color: #0000ff;"></</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">thead</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />   </span><span style="color: #0000ff;"><</span><span style="color: #800000;">tr </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="row"</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">td </span><span style="color: #ff0000;">nowrap</span><span style="color: #0000ff;">></span><span style="color: #000000;">11111</span><span style="color: #0000ff;"></</span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />   </span><span style="color: #0000ff;"></</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br /> </span><span style="color: #0000ff;"></</span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span></div> <img src ="http://www.aygfsteel.com/zhouf/aggbug/238196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2008-11-02 17:39 <a href="http://www.aygfsteel.com/zhouf/articles/238196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在TOMCAT中伪装页面后¾~€å?/title><link>http://www.aygfsteel.com/zhouf/articles/230810.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 24 Sep 2008 01:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhouf/articles/230810.html</guid><wfw:comment>http://www.aygfsteel.com/zhouf/comments/230810.html</wfw:comment><comments>http://www.aygfsteel.com/zhouf/articles/230810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhouf/comments/commentRss/230810.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhouf/services/trackbacks/230810.html</trackback:ping><description><![CDATA[一直以æ?惛_šä¸€ä¸ªä¸œè¥?ž®±æ˜¯åœ¨å‘布JSP工程的时å€?不让人家知道是用JSP技术来做的,曾想到用˜q‡æ×oå™?可搞了半å¤?˜q˜æ˜¯æ²¡æœ‰¾l“æžœ,后来在配¾|®æ–‡ä»‰™‡ŒåŽÀL‰¾æ‰?看看有没有什么可以参考的东东,¾lˆäºŽè®©æˆ‘¾l™æ‰¾ç€äº?在WEB.XML中发现有˜q™æ ·çš„片ŒD?扑ֈ°ä¸‹æ‰‹çš„地方了<br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-class</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">org.apache.jasper.servlet.JspServlet</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-class</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">fork</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">false</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">xpoweredBy</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">false</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">load-on-startup</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">load-on-startup</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 128, 0);"><!--</span><span style="color: rgb(0, 128, 0);"> The mapping for the JSP servlet </span><span style="color: rgb(0, 128, 0);">--></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">*.jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">*.jspx</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span></div> 于是ä¹?ž®±å†’å‡ÞZ¸ªæƒÏx³•,æ·ÕdР䏀ä¸?lt;servlet-mapping>试试,片段如下<br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">jsp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">*.asp</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">servlet-mapping</span><span style="color: rgb(0, 0, 255);">></span></div> <p>我在此添加了一个ASP的映ž®?你还可以修改为PHP或其它的后缀,写了一个测试页面test1.asp如下</p> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_2_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_65_Open_Text.style.display='none'; Codehighlighter1_2_65_Closed_Image.style.display='inline'; Codehighlighter1_2_65_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2_65_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_2_65_Closed_Text.style.display='none'; Codehighlighter1_2_65_Open_Image.style.display='inline'; Codehighlighter1_2_65_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);"><%</span><span id="Codehighlighter1_2_65_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2_65_Open_Text"><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">@ page language</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">java</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> import</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">java.util.*</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> pageEncoding</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">UTF-8</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span></span><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);">%></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"><!</span><span style="color: rgb(255, 0, 255);">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">utf-8</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">This is my test page</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">字符集是UTF-8</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <p>可页面显½Cºçš„æƒ…况如下</p> <p><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/zhouf/bbb.JPG" border="0" height="116" width="293" /></p> <p>中文的显½Cºæœ‰ç‚šw—®é¢?在相同的JSPæ–‡äšg里没有这¿Uæƒ…况发ç”?˜q™ä¸ªé—®é¢˜ç›®å‰˜q˜ä¸æ¸…楚是怎么回事</p> <p>于是重新å»ÞZº†ä¸€ä¸ªæ–‡ä»¶test2.asp,然后把页面编码改成ISO-8859-1后再è¯?/p> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_2_70_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_70_Open_Text.style.display='none'; Codehighlighter1_2_70_Closed_Image.style.display='inline'; Codehighlighter1_2_70_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2_70_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_2_70_Closed_Text.style.display='none'; Codehighlighter1_2_70_Open_Image.style.display='inline'; Codehighlighter1_2_70_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);"><%</span><span id="Codehighlighter1_2_70_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2_70_Open_Text"><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">@ page language</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">java</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> import</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">java.util.*</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> pageEncoding</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">ISO-8859-1</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span></span><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);">%></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"><!</span><span style="color: rgb(255, 0, 255);">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">ISO-8859-1</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">head</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    This is my JSP page. </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">br</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">字符集是ISO-8859-1</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">></span></div> <p>™åµé¢çš„中文还是无法正常显½C?/p> <p><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/zhouf/aaa.JPG" border="0" height="87" width="334" /></p> <p>可这时可以通过修改‹¹è§ˆå™¨çš„™åµé¢¾~–码来显½Cºæ­£¼‹®çš„中文,ž®†é¡µé¢ç¼–码改æˆ?½Ž€ä½“中æ–?GB2312) 后显½Cºå¦‚ä¸?/p> <p><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/zhouf/ccc.JPG" border="0" height="98" width="340" /></p> <p>¾lˆäºŽOKäº?而浏览器里显½Cºçš„æ˜¯è®¿é—®ä¸€ä¸ªasp的文ä»?可中文的字符处理仍感觉有些不完美,当页面编码是UTF-8的时å€?不管怎么修改‹¹è§ˆå™¨çš„™åµé¢¾~–码,中文都无法正¼‹®æ˜¾½C?如果某兄有更好的æ–ÒŽ³•解决˜q™ä¸ªé—®é¢˜,希望留下一点徏è®?谢谢</p> <p>本例是在Tomcat6下做的测è¯?/p> <img src ="http://www.aygfsteel.com/zhouf/aggbug/230810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhouf/" target="_blank">ZhouFeng</a> 2008-09-24 09:40 <a href="http://www.aygfsteel.com/zhouf/articles/230810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从浏览器里提取语­a€è®„¡½®ä¿¡æ¯http://www.aygfsteel.com/zhouf/articles/227888.htmlZhouFengZhouFengTue, 09 Sep 2008 03:06:00 GMThttp://www.aygfsteel.com/zhouf/articles/227888.htmlhttp://www.aygfsteel.com/zhouf/comments/227888.htmlhttp://www.aygfsteel.com/zhouf/articles/227888.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/227888.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/227888.html˜q™ä¸¤å¤©åœ¨æƒ³ä¸€ä¸ªä¸œä¸?ž®±æ˜¯åœ¨I18N,在考虑如何获取客户端的语言讄¡½®,后来在JSTLçš„example里找åˆîC¸€ç‚¹ä¿¡æ?我们可以通过ServletRequest.getLocales()æ–ÒŽ³•获得一个Local对象,再从Local对象里提取信æ?ä¸ÞZº†åšè¿™ä¸ªæµ‹è¯?我还在我的浏览器讄¡½®é‡Œå¤šåŠ äº†å‡ ä¸ªè¯­è¨€,如下图所½C?/p>

语言首选项

然后写了一个测试的JSP™åµé¢

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<title>Local Test</title>
  
</head>
  
  
<body>
    
<% 
      Enumeration enum_ 
= request.getLocales();
      
while (enum_.hasMoreElements()) {
        Locale locale 
= (Locale)enum_.nextElement();
        out.println(
"locale.getDisplayCountry():"+locale.getDisplayCountry()+"<br>");
        out.println(
"locale.getDisplayName():"+locale.getDisplayName()+"<br>");
        out.println(
"locale.getCountry():"+locale.getCountry()+"<br>");
        out.println(
"locale.toString():"+locale.toString()+"<br>");
        out.println(
"<hr>");
      }
    
%>

  
</body>
</html>

Local对象˜q˜æœ‰å¾ˆå¤šæ–ÒŽ³•可以调用,在此我只试了几个,˜qè¡ŒåŽåœ¨‹¹è§ˆå™¨é‡Œå¾—到的结果如ä¸?/p>

locale.getDisplayCountry():中国
locale.getDisplayName():中文 (中国)
locale.getCountry():CN
locale.toString():zh_CN

--------------------------------------------------------------------------------
locale.getDisplayCountry():
locale.getDisplayName():英文
locale.getCountry():
locale.toString():en

--------------------------------------------------------------------------------
locale.getDisplayCountry():香港
locale.getDisplayName():中文 (香港)
locale.getCountry():HK
locale.toString():zh_HK

获取了这æ ïLš„信息å?在JSP™åµé¢é‡ŒæŒ‰ç…§æµè§ˆå™¨è¯­è¨€è®„¡½®æ¥è¿›è¡Œé¡µé¢èŸ©è½¬åº”该有办法äº?/p>

在看JSTLçš„exampleæ—?里面也有对i18N的支æŒ?不过˜q˜æ²¡æœ‰æ¥å¾—及学习,也许˜q˜æœ‰æ›´å¥½çš„处理办æ³?ž®±åƒSTRUTS里的i18N处理

今天也æ€È®—搞了点东西出æ?又学åˆîC¸€ç‚¹ç‚¹,Good Good Study, Day Day Up



]]>
在JBOSS中ä‹É用JSTLhttp://www.aygfsteel.com/zhouf/articles/227827.htmlZhouFengZhouFengMon, 08 Sep 2008 15:10:00 GMThttp://www.aygfsteel.com/zhouf/articles/227827.htmlhttp://www.aygfsteel.com/zhouf/comments/227827.htmlhttp://www.aygfsteel.com/zhouf/articles/227827.html#Feedback0http://www.aygfsteel.com/zhouf/comments/commentRss/227827.htmlhttp://www.aygfsteel.com/zhouf/services/trackbacks/227827.html 首先在APACHE¾|‘站上可以下载JSTL(我下载的æ˜?a >jakarta-taglibs-standard-1.1.2.zip),可能后面的版本会有点变化
解压ZIPæ–‡äšg,ž®†é‡Œé¢çš„standard.jarå’Œjstl.jaræ–‡äšg攑֜¨å·¥ç¨‹ä¸­çš„/WEB-INF/lib目录ä¸?br /> åœ?WEB-INF目录下徏一个新的文件夹tld
ž®†zipæ–‡äšg里的*.tldæ–‡äšg解压攑֜¨/WEB-INF/tld目录ä¸?br /> 修改/WEB-INF/web.xmlæ–‡äšg加入如下内容


<taglib>
    
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
    
<taglib-location>/WEB-INF/tld/fmt-1_0-rt.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
    
<taglib-location>/WEB-INF/tld/c-1_0-rt.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    
<taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
    
<taglib-location>/WEB-INF/tld/sql-1_0-rt.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    
<taglib-location>/WEB-INF/tld/x.tld</taglib-location>
</taglib> 

<taglib>
    
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
    
<taglib-location>/WEB-INF/tld/x-1_0-rt.tld</taglib-location>
</taglib>
其实可以æ ÒŽ®ä½¿ç”¨çš„æƒ…å†?仅将需要的tld加入到工½E?br /> 布置好了.jaræ–‡äšgå’?tldæ–‡äšg,以及修改了web.xmlæ–‡äšgå?ž®±å¯ä»¥åœ¨JSP™åµé¢é‡Œè¯•试JSTL标签的魅力了
stulist.jsp
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 5 
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <title>page</title>
11   </head>
12   
13   <sql:query var="rs" dataSource="ks2">
14       SELECT * FROM STU
15   </sql:query>
16   
17   <body>
18       <h3>学生情况<br>
19       <TABLE align="center" border="1" width="95%">
20           <tr><td>序号</td><td>学号</td><td>姓名</td></tr>
21           
22           <c:forEach var="row" items="${rs.rows}" varStatus="stat">
23               <tr><td>${stat.count}</td><td>${row.stunum}</td><td>${row.stuname}</td></tr>
24           </c:forEach>
25           
26       </TABLE>
27   </body>
28 </html>
˜q™æ ·çš„页面似乎简‹zå¤šäº?看着ž®×ƒ¸€ä¸ªå­—"清爽":)

在这里还得补充一ä¸?我是在JBOSS下做çš?åœ?lt;sql:query>标签里指定dataSource里碰到点问题,我的数据源是在jboss4\server\default\deploy\mysql-ds.xml里配¾|®çš„,配置的数据源名字是ks,可在˜qè¡Œ˜q™ä¸ª™åµé¢æ—¶æ€ÀL˜¯æç¤ºæ‰¾ä¸åˆ°æ•°æ®æº,查了一些资料发现问题所åœ?要让JSTL能夠™åºåˆ©ä½¿ç”¨JNDIçš„DataSource,˜q˜å¾—在web.xmlå’Œjboss-web.xml里做修改,好让应用½E‹åºå¯ä»¥æ‰‘Öˆ°JNDI的服åŠ?åœ?WEB-INF/下新å»ÞZ¸€æ–‡äšgjboss-web.xml,其内容如ä¸?br />
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    
<resource-ref>
        
<res-ref-name>ks2</res-ref-name>
        
<jndi-name>java:ks</jndi-name>
    
</resource-ref>
</jboss-web>
然后在web.xml里加如下面的内容
<resource-ref>
  
<res-ref-name>ks2</res-ref-name>
  
<res-type>javax.sql.DataSource</res-type>
  
<res-auth>Container</res-auth>
</resource-ref>
˜q™æ ·å¤„理之后,在JBOSS中ä‹É用JSTL数据源的问题ž®Þp§£å†³äº†
åˆäh–°™åµé¢,希望看到的结果出来了,OK!
今天¾lˆäºŽä½“验一了下JSTL,真是酷哇,™åµé¢æ¯”以前写的简‹zå¤šäº?看来得找个时间好好学习一下这个东东了



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¹±É½| ÆÁÉ½ÏØ| ÒÁÄþÊÐ| µÂÐËÊÐ| ÕÄÆ½ÊÐ| Ä«Öñ¹¤¿¨ÏØ| Ê¯Ì¨ÏØ| лͨÃÅÏØ| ¹®ÒåÊÐ| ³»ÖÝÊÐ| ÐìË®ÏØ| ¿Ë¶«ÏØ| ¸§Ë³ÊÐ| ÐÁ¼¯ÊÐ| ´óÍÝÏØ| ¼½ÖÝÊÐ| ´ëÃÀÏØ| ¯»ôÏØ| Óà¸ÉÏØ| Å©°²ÏØ| Öñ±±ÊÐ| ÄϺÍÏØ| ÓÀ´¨ÊÐ| ¶õÍÐ¿ËÆì| ¸ùºÓÊÐ| ºº¹ÁÇø| ɳÌïÇø| Äþ¶¼ÏØ| â¿µÏØ| º×¸ÚÊÐ| ÉòÇðÏØ| ½ðƽ| ÁÙãðÏØ| ¾¸±ßÏØ| кÓÏØ| ÓÀ¼ªÏØ| ÐÝÄþÏØ| ÁÙ°²ÊÐ| ÁÙÇåÊÐ| ɽ¶«Ê¡| °²Â½ÊÐ|