﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-蒋家狂潮</title><link>http://www.blogjava.net/simon1006/</link><description>雨打芭蕉，鬼打墙！</description><language>zh-cn</language><lastBuildDate>Tue, 07 Oct 2008 18:59:47 GMT</lastBuildDate><pubDate>Tue, 07 Oct 2008 18:59:47 GMT</pubDate><ttl>60</ttl><item><title>JSP解决小图片缓存问题</title><link>http://www.blogjava.net/simon1006/archive/2008/08/08/220897.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Fri, 08 Aug 2008 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/08/08/220897.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/220897.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/08/08/220897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/220897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/220897.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图片资源加个随机数，这样IE每次都会认为是新的图片，不会再从缓存里面取。&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/08/08/220897.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/220897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-08-08 13:52 <a href="http://www.blogjava.net/simon1006/archive/2008/08/08/220897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing之JTable运用线程一个测试</title><link>http://www.blogjava.net/simon1006/archive/2008/07/30/218652.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Wed, 30 Jul 2008 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/07/30/218652.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/218652.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/07/30/218652.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/218652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/218652.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 测试JTable添加数据，删除数据频繁操作，JTable出现数组越界的处理<br>在工作中如果遇到频繁的操作Jtable的数据，特别是速率很快的情况下，经常会遇到<br>Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException<br>这样的数组越界的异常,这里引入Swing的一个线程，能很好的解决这个问题<br>供同样遇到这样问题的人参考。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/07/30/218652.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/218652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-07-30 11:48 <a href="http://www.blogjava.net/simon1006/archive/2008/07/30/218652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用classloader方式打包可执行jar文件</title><link>http://www.blogjava.net/simon1006/archive/2008/07/17/215422.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Thu, 17 Jul 2008 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/07/17/215422.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/215422.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/07/17/215422.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/215422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/215422.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用myEclipse打包可执行jar文件，特别是需要包含第三方资源包的时候，往往打包好之后jar文件找不到，即使 manifest.mf 文件设置了ClassPath= ?.jar 之类的，还会找不到第三方资源包的问题；一般情况下，第三方资源包都不应该和你的应用程序打成一个包，而是作为外部文件引入，这个时候需要考虑用classloader的方式打包。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/07/17/215422.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/215422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-07-17 11:16 <a href="http://www.blogjava.net/simon1006/archive/2008/07/17/215422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>野外拓展</title><link>http://www.blogjava.net/simon1006/archive/2008/06/29/211454.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Sun, 29 Jun 2008 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/06/29/211454.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/211454.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/06/29/211454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/211454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/211454.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 野外拓展的主题是“超越自我，熔炼团队”。主要目的是暴露问题，暴露的问题越多越好。&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/06/29/211454.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/211454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-06-29 10:34 <a href="http://www.blogjava.net/simon1006/archive/2008/06/29/211454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA 如何实现WEB上曲线走势图</title><link>http://www.blogjava.net/simon1006/articles/210478.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Wed, 25 Jun 2008 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/articles/210478.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/210478.html</wfw:comment><comments>http://www.blogjava.net/simon1006/articles/210478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/210478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/210478.html</trackback:ping><description><![CDATA[
		<p>转载自：<a href="http://www.xrss.cn/Dev/JAVA/200792816836.Html">http://www.xrss.cn/Dev/JAVA/200792816836.Html</a><br />实现非常简单，例子主要有3个类，ImageContainer.java 在内存中保存动态走势图，ImageServlet.java 输出图片servlet，RandomValueThread.java模拟随机数据的线程。</p>
		<p>为了要生成gif 图片 ，请先在<a href="http://www.fmsware.com/stuff/gif.zip">http://www.fmsware.com/stuff/gif.zip</a> 下载处理GIF图片的代码，解压之后可以发现有AnimatedGifEncoder.java, GifDecoder.java, ... 其中AnimatedGifEncoder.是用来生成GIF文件的</p>
		<p>Gif图片比Jpeg 要小的多，另外动态走势图保存在内存中，不用生成图片文件的。</p>
		<p>准备一张背景图片400×200大小，如下</p>
		<p>
				<img height="200" alt="" src="http://www.xrss.cn/XrssFile/2007-9/28/2007928105524906.gif" width="400" align="baseline" />
		</p>
		<p>ImageContainer.java</p>
		<p>package com.web;</p>
		<p>import java.awt.Color;<br />import java.awt.Graphics;<br />import java.awt.Image;<br />import java.awt.image.BufferedImage;<br />import java.io.File;<br />import java.io.IOException;<br />import java.util.LinkedList;<br />import java.util.List;<br />import javax.imageio.ImageIO;</p>
		<p>public class ImageContainer {</p>
		<p>    public final static int MAX_LIST_SIZE = 100;</p>
		<p>    public final static int DEFAULT_WIDTH = 400;</p>
		<p>    public final static int DEFAULT_HEIGHT = 200;</p>
		<p>    public final static int DOT_WIDTH = 4;</p>
		<p>    public final static int DOT_HEIGHT = 2;</p>
		<p>    public final static String BACKGROUND_IMAGE = "/bg.gif";</p>
		<p>    private LinkedList&lt;Integer&gt; valueList = new LinkedList&lt;Integer&gt;();</p>
		<p>    private Image image = null;</p>
		<p>    private void loadImageFile() {<br />        File file = new File(this.getClass().getResource(BACKGROUND_IMAGE)<br />                .getFile());<br />        try {<br />            image = ImageIO.read(file);<br />        } catch (IOException e) {<br />            System.err.println("Can not load backgroud, reason:"<br />                    + e.getMessage());<br />        }<br />    }</p>
		<p>    private ImageContainer() {<br />    }</p>
		<p>    private static ImageContainer intance = new ImageContainer();</p>
		<p>    public static ImageContainer getInstance() {<br />        return intance;<br />    }</p>
		<p>    public synchronized List getList() {<br />        return valueList;<br />    }</p>
		<p>    public synchronized void pushValue(Integer value) {<br />        if (valueList.size() &gt;= MAX_LIST_SIZE) {<br />            valueList.poll();<br />        }<br />        valueList.offer(value);<br />    }</p>
		<p>    public BufferedImage draw() {<br />        BufferedImage tag = new BufferedImage(DEFAULT_WIDTH, DEFAULT_HEIGHT,<br />                BufferedImage.TYPE_INT_RGB);<br />        if (image == null) {<br />            loadImageFile();<br />        }<br />        if (image != null) {<br />            int width = image.getWidth(null);<br />            int height = image.getHeight(null);<br />            tag.getGraphics().drawImage(image, 0, 0, width, height, null);<br />        }</p>
		<p>        Graphics g = tag.getGraphics();<br />        g.setColor(Color.GREEN);<br />        List valueList = this.getList();<br />        int x1 = 0, y1 = 0, x2 = 0, y2 = 0;<br />        int size = valueList.size();<br />        int offset = (MAX_LIST_SIZE - size) * DOT_WIDTH;<br />        x1 = offset;<br />        y1 = DEFAULT_HEIGHT-0;<br />        for (int i = 0; i &lt; size; i++) {<br />            x2 = offset + i * DOT_WIDTH;<br />            y2 = DEFAULT_HEIGHT-(Integer) valueList.get(i) * DOT_HEIGHT;<br />            g.drawLine(x1, y1, x2, y2);<br />            System.out.printf("drawLine[%d,%d,%d,%d]", x1, y1, x2, y2);<br />            x1 = x2;<br />            y1 = y2;<br />        }<br />        System.out.println();<br />        return tag;<br />    }</p>
		<p>}</p>
		<p>RandomValueThread.java</p>
		<p>package com.web;</p>
		<p>import java.util.Random;</p>
		<p>public class RandomValueThread extends Thread {</p>
		<p>    private boolean isRunning = false;</p>
		<p>    public synchronized boolean isRunning() {<br />        return isRunning;<br />    }</p>
		<p>    public synchronized void setRunning(boolean isRunning) {<br />        this.isRunning = isRunning;<br />    }</p>
		<p>    @Override<br />    public synchronized void start() {<br />        isRunning = true;<br />        super.start();<br />    }</p>
		<p>    @Override<br />    public void run() {<br />        int v;<br />        Random randomp = new Random();<br />        while (isRunning) {<br />            v = randomp.nextInt(100);<br />            System.out.println("Put random value=" + v);<br />            ImageContainer.getInstance().pushValue(v);<br />            try {<br />                Thread.sleep(1000);<br />            } catch (InterruptedException e) {<br />            }<br />        }<br />    }<br />}</p>
		<p>ImageServlet.java</p>
		<p>package com.web.servlet;</p>
		<p>import giftool.AnimatedGifEncoder;<br />import java.awt.image.BufferedImage;<br />import java.io.IOException;<br />import java.io.OutputStream;<br />import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import com.web.ImageContainer;<br />import com.web.RandomValueThread;</p>
		<p>public class ImageServlet extends HttpServlet {</p>
		<p>    private static final String GIF = "image/gif";</p>
		<p>    private static final String JPG = "image/jpeg";</p>
		<p>    public void doGet(HttpServletRequest request, HttpServletResponse response)<br />            throws ServletException, IOException {<br />        response.setContentType(GIF);<br />        BufferedImage image = ImageContainer.getInstance().draw();<br />        OutputStream out = response.getOutputStream();<br />        // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);<br />        // encoder.encode(image);<br />        AnimatedGifEncoder encoder = new AnimatedGifEncoder();<br />        encoder.setRepeat(0);<br />        encoder.start(out);<br />        encoder.addFrame(image);<br />        encoder.finish();<br />        <br />        out.close();<br />    }</p>
		<p>    public void doPost(HttpServletRequest request, HttpServletResponse response)<br />            throws ServletException, IOException {<br />        doGet(request, response);<br />    }</p>
		<p>    public void init() throws ServletException {<br />        // Start random value thread<br />        RandomValueThread thread = new RandomValueThread();<br />        thread.setDaemon(true);<br />        thread.start();<br />    }</p>
		<p>}</p>
		<p> web.xml 加入</p>
		<p>  &lt;servlet&gt;<br />    &lt;servlet-name&gt;ImageServlet&lt;/servlet-name&gt;<br />    &lt;servlet-class&gt;com.web.servlet.ImageServlet&lt;/servlet-class&gt;<br />  &lt;/servlet&gt;</p>
		<p>  &lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;ImageServlet&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;/ImageServlet&lt;/url-pattern&gt;<br />  &lt;/servlet-mapping&gt;</p>
		<p> </p>
		<p>demo.htm</p>
		<p>&lt;html&gt;<br />    &lt;body&gt;<br />        Memory Copy Buffer Image<br />        &lt;br&gt;</p>
		<p>        &lt;img src="" id="viewImg" /&gt;<br />    &lt;/body&gt;<br />&lt;/html&gt;<br />&lt;script language="javascript"&gt;...<br />function refreshImage() ...{<br /> document.getElementById("viewImg").src="ImageServlet?"+Math.random();<br /> setTimeout(refreshImage,1000);<br />}</p>
		<p>setTimeout(refreshImage,1000);<br />&lt;/script&gt;<br /> </p>
		<p>最终演示效果图:</p>
		<p>
				<img alt="" src="http://www.xrss.cn/XrssFile/2007-9/28/2007928105529940.GIF" />
		</p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/simon1006/aggbug/210478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-06-25 11:25 <a href="http://www.blogjava.net/simon1006/articles/210478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于MyEclipse添加javadoc(SUN 源代码)</title><link>http://www.blogjava.net/simon1006/archive/2008/06/24/210384.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Tue, 24 Jun 2008 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/06/24/210384.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/210384.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/06/24/210384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/210384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/210384.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: The jar file rt.jar has no source attachment.<br>You can attach the source by cliking Attack Source below:<br>因为rt的source在jdk目录的src.zip文件里，所以找到jdk目录下的src.zip就行了&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/06/24/210384.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/210384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-06-24 20:32 <a href="http://www.blogjava.net/simon1006/archive/2008/06/24/210384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>领域模型与软件开发</title><link>http://www.blogjava.net/simon1006/archive/2008/06/20/209455.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Fri, 20 Jun 2008 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/06/20/209455.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/209455.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/06/20/209455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/209455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/209455.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 领域模型（Domain Model）是一个商业建模范畴的概念，他和软件开发并无一丝一毫的关系，即使一个企业他不开发软件，他也具备他的业务模型，所有的同行业的企业他们的业务模型必定有非常大的共性和内在的规律性，由这个行业内的各个企业的业务模型再向上抽象出来整个行业的业务模型，这个东西即“领域模型”。&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/06/20/209455.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/209455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-06-20 14:56 <a href="http://www.blogjava.net/simon1006/archive/2008/06/20/209455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>String split方法在忽略参数大小的情况下取得String[]的小技巧</title><link>http://www.blogjava.net/simon1006/archive/2008/05/04/197995.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Sun, 04 May 2008 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/05/04/197995.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/197995.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/05/04/197995.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/197995.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/197995.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: select * from tableA union select * from tableB<br>    要根据关键字把两个查询语句分解出来，即得到<br>   select * from tableA 和 select * from tableB<br> 但因为这个是SQL语句，union关键字不区分大小写的，所有sql语句有这些情况：<br> select * from tableA UNION select * from tableB<br> select * from tableA UnIOn select * from tableB<br> select * from tableA UNiON select * from tableB<br> ……<br>所以单单用这样的语句：String sql2[]=sql.split(" union ");<br>是分解不出子语句的。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/05/04/197995.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/197995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-05-04 10:13 <a href="http://www.blogjava.net/simon1006/archive/2008/05/04/197995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax+xml+webwork2+tomcat5.0+j2ee报表</title><link>http://www.blogjava.net/simon1006/archive/2008/04/25/195878.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Fri, 25 Apr 2008 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/archive/2008/04/25/195878.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/195878.html</wfw:comment><comments>http://www.blogjava.net/simon1006/archive/2008/04/25/195878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/195878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/195878.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次接触到webwork2，花了一天左右的时间研究一番，在MyEclipse上运行起来一个j2ee报表项目的DEMO。关于怎么样在MyEclipse上配置webwork2，本人主要参考了文章：http://wiki.javascud.org/display/ww2cndoc/Setting+up+Eclipse+with+Tomcat，这真是不错的文章。基本上只要参考该文章按部就班配置即可。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/simon1006/archive/2008/04/25/195878.html'>阅读全文</a><img src ="http://www.blogjava.net/simon1006/aggbug/195878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-04-25 10:27 <a href="http://www.blogjava.net/simon1006/archive/2008/04/25/195878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork+freemarker应用jsp标签</title><link>http://www.blogjava.net/simon1006/articles/194937.html</link><dc:creator>蒋家狂潮</dc:creator><author>蒋家狂潮</author><pubDate>Wed, 23 Apr 2008 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/simon1006/articles/194937.html</guid><wfw:comment>http://www.blogjava.net/simon1006/comments/194937.html</wfw:comment><comments>http://www.blogjava.net/simon1006/articles/194937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simon1006/comments/commentRss/194937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simon1006/services/trackbacks/194937.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">webwork+freemarker</h2>
		<p class="diaryTitle">文章来自：http://publishblog.blogchina.com/blog/tb.b?diaryID=5607592 </p>原创作者： <a onclick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=275305','发送短消息','width=520, height=455')" href="javascript:void(0);"><font color="#002c99">boyibolomi</font></a><p>webwork相对struts要简单直接一些，打算以后的项目都用webwork2了。<br /><br />webwork的文档确实做得不好，用wiki显得杂乱无章。<br />项目文档还是应该专门编写，以一个完整的思路来编写，对于初学者会碰到的问题有一个清晰的指导。<br /><br />经过一些痛苦之后，我终于让freemarker如我期望的工作了。<br />freemarker确实是不错的模版语言引擎，尤其是处理对象图很方便，处理xml也很方便，还支持xpath哦。另外写文章来表扬freemarker。<br /><br />本文主要是讲webwork和freemarker的结合点。<br /><br />为了国际化(i18n)，我希望在freemarker的文件中也使用webwork的jsptag，<br />因为webwork的tag可以很好的解决国际化问题。<br />为了这一点花费了一个上午的时间，从webwork2文档的各个角落找到了解决各个问题的钥匙。<br /><br />要点有三：<br />1 web.xml中<br />   要增加<br />   &lt;servlet&gt;<br />        &lt;servlet-name&gt;JspSupportServlet&lt;/servlet-name&gt;<br />           &lt;servlet-class&gt;com.opensymphony.webwork.views.JspSupportServlet&lt;/servlet-class&gt;<br />        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;<br /><br />    &lt;taglib&gt;<br />        &lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;<br />        &lt;taglib-location&gt;/WEB-INF/webwork.tld&lt;/taglib-location&gt;<br />    &lt;/taglib&gt;<br />    <br />   否则在ftl文件头部写的&lt;#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] /&gt;是不能被正确处理的。<br />   我由于没有注意这点，花的时间最多。<br /><br />2  freemarker的文件一般以后缀ftl，ftl文件的头上要写<br />    &lt;#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] /&gt;<br />    这样才能在ftl中使用webwork的tag。<br /><br />    webwork文档是怎么写的呢，直接告诉读者：<br />   &lt;@ww.text name="hello"/&gt;<br />    失败之后发现，后面的后面还有一段话，说明要加上 &lt;#assign    mytag=JspTaglibs["/WEB-INF/mytag.tld"]&gt;<br />    于是加上，还是失败，郁闷了。<br /><br />    再往下文看，还有一个Note：说明了我在第1条中说明的内容。<br /><br />    怎么能拿这样的文档给读者呢？<br /><br />3   要注意一个细微的差别!!<br /><br />    在jsp中用tag，是这样的：<br />    &lt;ww:text name="login.title"/&gt;<br />    在ftl中用tag，是这样的：<br />    &lt;@ww.text name="login.title"/&gt;<br /><br />    其中&lt;ww:text ... 中间是冒号 :<br />   &lt;@ww.text  ...  则是句号. <br /><br />   着急的初学者常常看不到这个差别，例如我。<br /><br /></p><img src ="http://www.blogjava.net/simon1006/aggbug/194937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simon1006/" target="_blank">蒋家狂潮</a> 2008-04-23 09:15 <a href="http://www.blogjava.net/simon1006/articles/194937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>