﻿<?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-内蒙古java团队-随笔分类-j2ee技术专区</title><link>http://www.blogjava.net/gdws/category/44822.html</link><description>j2se,j2ee开发组</description><language>zh-cn</language><lastBuildDate>Sat, 14 Jun 2014 12:19:09 GMT</lastBuildDate><pubDate>Sat, 14 Jun 2014 12:19:09 GMT</pubDate><ttl>60</ttl><item><title>遇到服务端获取不到post参数问题？大家帮忙梳理下。</title><link>http://www.blogjava.net/gdws/archive/2014/06/14/414737.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 14 Jun 2014 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2014/06/14/414737.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/414737.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2014/06/14/414737.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/414737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/414737.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 遇到服务端获取不到post参数问题？大家帮忙梳理下。&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2014/06/14/414737.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/414737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2014-06-14 10:19 <a href="http://www.blogjava.net/gdws/archive/2014/06/14/414737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java线程池管理及分布式Hadoop调度框架搭建【转】</title><link>http://www.blogjava.net/gdws/archive/2014/05/06/413326.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 06 May 2014 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2014/05/06/413326.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/413326.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2014/05/06/413326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/413326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/413326.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java线程池管理及分布式Hadoop调度框架搭建&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2014/05/06/413326.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/413326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2014-05-06 16:14 <a href="http://www.blogjava.net/gdws/archive/2014/05/06/413326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> JDK1.5 JDK1.6 JDK1.7 帮助文档全系列下载</title><link>http://www.blogjava.net/gdws/archive/2013/10/09/404775.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 09 Oct 2013 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/10/09/404775.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/404775.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/10/09/404775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/404775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/404775.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  JDK1.5 JDK1.6 JDK1.7 帮助文档全系列下载&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2013/10/09/404775.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/404775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-10-09 09:31 <a href="http://www.blogjava.net/gdws/archive/2013/10/09/404775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>技术讨论群开通了！群号：171844570</title><link>http://www.blogjava.net/gdws/archive/2013/09/29/404618.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sun, 29 Sep 2013 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/09/29/404618.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/404618.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/09/29/404618.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/404618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/404618.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 技术讨论群开通了！&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2013/09/29/404618.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/404618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-09-29 15:53 <a href="http://www.blogjava.net/gdws/archive/2013/09/29/404618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL中多表删除方法【转】</title><link>http://www.blogjava.net/gdws/archive/2013/09/24/404356.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 24 Sep 2013 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/09/24/404356.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/404356.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/09/24/404356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/404356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/404356.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MySQL中多表删除方法&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2013/09/24/404356.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/404356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-09-24 09:32 <a href="http://www.blogjava.net/gdws/archive/2013/09/24/404356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java程序运行超时后退出或进行其他操作的实现[转]</title><link>http://www.blogjava.net/gdws/archive/2013/09/24/404355.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 24 Sep 2013 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/09/24/404355.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/404355.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/09/24/404355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/404355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/404355.html</trackback:ping><description><![CDATA[<p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">对于开发软件 Eclipse ，在程序执行超时后，可以点击 Terminate 按钮强制退出。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　那么，我们可不可以通过程序设置一定的时间，当程序运行超过该时长后自行终止或者进行其他操作呢?</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　查了大量资料后发现，Future类就能满足这个需求。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　Future类中重要方法包括get()和cancel()。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　get()获取数据对象，如果数据没有加载，就会阻塞直到取到数据，而 cancel()是取消数据加载。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　另外一个get(timeout)操作，表示如果在timeout时间内没有取到就失败返回，而不再阻塞。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　通过这些方法即可实现我们要求。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　<a href="http://java.chinaitlab.com/" target="_blank" style="margin: 0px; padding: 0px; word-wrap: break-word; text-decoration: none; color: #0000ff; line-height: 22px;">Java</a>&nbsp;代码示例：</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　final ExecutorService exec = Executors.newFixedThreadPool(1);</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　Callable<string style="margin: 0px; padding: 0px; word-wrap: break-word;">&nbsp;call = new Callable<string style="margin: 0px; padding: 0px; word-wrap: break-word;">() {</string></string></p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　public String call() throws Exception {</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　// 放入耗时操作代码块</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　int cash = 300;</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　String name = "张三";</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println(name + "现在有" + cash + "元存款");</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　User u = new User(name, cash);</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　String[] arr = { "线程A", "线程B", "线程C", "线程D", "线程E", "线程F",</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　"线程G", "线程H", "线程I", "线程J" };</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　for (int i = 0; i &lt; 10; i++) {</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　MyThread th = new MyThread(arr[i], u,</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　(int) (Math.random() * 1000 - 500));</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　th.start();</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　}</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　//耗时代码块结束</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　Thread.sleep(1000 * 5);</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　return "线程执行完成";</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　}</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　};</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　try {</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　Future<string style="margin: 0px; padding: 0px; word-wrap: break-word;">&nbsp;future = exec.submit(call);</string></p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); // 任务处理超时时间设为1 秒</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println("任务成功返回:" + obj);</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　} catch (TimeoutException ex) {</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println("处理超时啦....");</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.exit(0);</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　} catch (Exception e) {</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println("处理失败.");</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　e.printStackTrace();</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　}</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　exec.shutdown(); // 关闭线程池</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　将耗时的代码块放入标注的地方后，即可满足要求。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println("处理失败.");</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　e.printStackTrace();</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　System.out.println("处理失败.");</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　e.printStackTrace();</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　在该示例程序中，当运行超时后，执行的是退出程序的操作。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　也可以根据需要放入其他代码进行相关操作。</p><p style="margin: 10px 0px 0px; padding: 0px; word-wrap: break-word; font-family: 宋体; line-height: 25px; background-color: #ffffff;">　　例如可以设置当处理超时时就忽略 该错误继续向下执行</p><img src ="http://www.blogjava.net/gdws/aggbug/404355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-09-24 09:25 <a href="http://www.blogjava.net/gdws/archive/2013/09/24/404355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EditPlus配置Java语法自动补全功能[转]</title><link>http://www.blogjava.net/gdws/archive/2013/07/07/401281.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sun, 07 Jul 2013 00:28:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/07/07/401281.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/401281.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/07/07/401281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/401281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/401281.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: EditPlus配置Java语法自动补全功能&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2013/07/07/401281.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/401281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-07-07 08:28 <a href="http://www.blogjava.net/gdws/archive/2013/07/07/401281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>本月起Oracle将不再提供Java 6的安全更新</title><link>http://www.blogjava.net/gdws/archive/2013/02/21/395544.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 21 Feb 2013 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2013/02/21/395544.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/395544.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2013/02/21/395544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/395544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/395544.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本月起Oracle将不再提供Java 6的安全更新&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2013/02/21/395544.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/395544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2013-02-21 17:49 <a href="http://www.blogjava.net/gdws/archive/2013/02/21/395544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>五种JSP页面跳转方法详解 [转]</title><link>http://www.blogjava.net/gdws/archive/2012/11/13/391273.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 13 Nov 2012 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2012/11/13/391273.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/391273.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2012/11/13/391273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/391273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/391273.html</trackback:ping><description><![CDATA[<p><strong><u>1. RequestDispatcher.forward()</u></strong></p>
<p>是在<a class="channel_keylink" href="http://server.chinaitlab.com/" target="_blank">服务器</a>端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面。</p>
<p>重定向后浏览器地址栏URL不变。</p>
<p>例：在servlet中进行重定向</p><pre>public void doPost(HttpServletRequest request,HttpServletResponse response) <br />throws ServletException,IOException{　 response.setContentType("text/html; charset=gb2312");　 ServletContext sc = getServletContext();　 RequestDispatcher rd = null;　 rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面　 rd.forward(request, response);}</pre>
<p>通常在servlet中使用，不在jsp中使用。</p>
<p><u><strong>2. response.sendRedirect()</strong></u></p>
<p>是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.</p>
<p>重定向后在浏览器地址栏上会出现重定向页面的URL</p>
<p>例：在servlet中重定向</p>
<p><pre>public void doPost(HttpServletRequest request,HttpServletResponse response)</pre><pre>throws ServletException,IOException</pre><pre>{</pre><pre>　 response.setContentType("text/html; charset=gb2312");</pre><pre>　 response.sendRedirect("/index.jsp");</pre><pre>}</pre>
<p>&nbsp;</p>
<p>由于response是jsp页面中的隐含对象，故在jsp页面中可以用response.sendRedirect()直接实现重定位。</p>
<p><strong>注意：</strong></p>
<p>(1) 使用response.sendRedirect时，前面不能有HTML输出；</p>
<p>这并不是绝对的，不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制，一般在8K（我是说 JSP　SERVER），这就意味着，除非你关闭了cache，或者你使用了out.flush()强制刷新，那么在使用sendRedirect之前，有少量的HTML输出也是允许的。</p>
<p>(2) response.sendRedirect之后，应该紧跟一句return。</p>
<p>我们已经知道response.sendRedirect是通过浏览器来做转向的，所以只有在页面处理完成后，才会有实际的动作。既然你已经要做转向了，那么后的输出还有什么意义呢？而且有可能会因为后面的输出导致转向失败。</p>
<p><strong>比较：</strong></p>
<p>(1) Dispatcher.forward()是容器中控制权的转向，在客户端浏览器地址栏中不会显示出转向后的地址；</p>
<p>(2) response.sendRedirect()则是完全的跳转，浏览器将会得到跳转的地址，并重新发送请求链接。这样，从浏览器的地址栏中可以看到跳转后的链接地址。</p>
<p>前者更加高效，在前者可以满足需要时，尽量使用RequestDispatcher.forward()方法。</p>
<p><em>注：在有些情况下，比如，需要跳转到一个其它<a class="channel_keylink" href="http://server.chinaitlab.com/" target="_blank">服务器</a>上的资源，则必须使用HttpServletResponse.sendRequest()方法。</em></p><img src ="http://www.blogjava.net/gdws/aggbug/391273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2012-11-13 22:43 <a href="http://www.blogjava.net/gdws/archive/2012/11/13/391273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux远程拷贝和本地拷贝命令</title><link>http://www.blogjava.net/gdws/archive/2012/06/28/381736.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 28 Jun 2012 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2012/06/28/381736.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/381736.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2012/06/28/381736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/381736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/381736.html</trackback:ping><description><![CDATA[<strong>一、</strong><a class="channel_keylink" href="http://linux.chinaitlab.com/" target="_blank"><strong>linux</strong></a><strong>对linux 远程拷贝&nbsp;&nbsp; scp命令<br /></strong>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; scp 文件名&nbsp; root@远程ip:/路径/<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 将本地home目录下的test.tar的文件拷贝到远程主机192.168.1.23的/home/adm/目录下，则命令为：scp /home/test.tar <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#49;&#57;&#50;&#46;&#49;&#54;&#56;&#46;&#49;&#46;&#50;&#51;&#58;&#47;&#104;&#111;&#109;&#101;&#47;&#97;&#100;&#109;&#47;">root@192.168.1.23:/home/adm/</a>&nbsp; 回车后输入密码就可以了<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; scp提供了几个选项&nbsp; 在scp后加就行了<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; -p 拷贝文件的时候保留源文件建立的时间。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; -q 执行文件拷贝时，不显示任何提示消息。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; -r 拷贝整个目录<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; -v 拷贝文件时，显示提示信息。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;<strong> 二、linux中cp强制覆盖拷贝<br /></strong>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 1） 取消cp的alias,不是永久生效<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; #unalias cp<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; #cp a /test/a<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 2） 用 \cp 执行cp命令时不走alias<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; #\cp a /test/a<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 3） Blinux最开始有自己的方法<br /><img src ="http://www.blogjava.net/gdws/aggbug/381736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2012-06-28 21:24 <a href="http://www.blogjava.net/gdws/archive/2012/06/28/381736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试结果分析原则【转】</title><link>http://www.blogjava.net/gdws/archive/2012/03/05/371260.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Mon, 05 Mar 2012 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2012/03/05/371260.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/371260.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2012/03/05/371260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/371260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/371260.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 测试结果分析&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2012/03/05/371260.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/371260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2012-03-05 13:53 <a href="http://www.blogjava.net/gdws/archive/2012/03/05/371260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE常用数值函数、转换函数、字符串函数介绍</title><link>http://www.blogjava.net/gdws/archive/2011/11/26/364869.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Fri, 25 Nov 2011 16:33:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/11/26/364869.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/364869.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/11/26/364869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/364869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/364869.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ORACLE常用&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/11/26/364869.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/364869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-11-26 00:33 <a href="http://www.blogjava.net/gdws/archive/2011/11/26/364869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java编程思想之静态技术</title><link>http://www.blogjava.net/gdws/archive/2011/11/26/364868.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Fri, 25 Nov 2011 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/11/26/364868.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/364868.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/11/26/364868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/364868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/364868.html</trackback:ping><description><![CDATA[静态技术包括静态数据、静态方法、静态初始化程序块等。

　　静态数据是属于某个类的数据成员，而非属于某个具体的对象。也就是说这个类创造出来的对象，都共用同一个数据。

　　view plainprint？

　　class A { static int x；……

　　}

　　静态方法也是属于整个类的，而且静态方法中不能调用非静态数据或方法。

　　view plainprint？

　　class B { public static void Set（int x） {……

　　}

　　用静态数据和静态方法的特性，我们可以专门构造工具类或者验证类。

　　静态初始化程序块，会在类的任何一个静态方法被调用或者任何一个构造函数被执行时被执行。

　　view plainprint？

　　class C {……

　　static { Integer in[4] = new Integer（）；for （int i = 0； i &lt; in.length； ++i） {……

　　}
<img src ="http://www.blogjava.net/gdws/aggbug/364868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-11-26 00:21 <a href="http://www.blogjava.net/gdws/archive/2011/11/26/364868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse调试Bug的七种常用技巧 </title><link>http://www.blogjava.net/gdws/archive/2011/08/23/357138.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 23 Aug 2011 10:32:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/08/23/357138.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/357138.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/08/23/357138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/357138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/357138.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse调试Bug的七种常用技巧 &nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/08/23/357138.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/357138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-08-23 18:32 <a href="http://www.blogjava.net/gdws/archive/2011/08/23/357138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql-frontv5.1 key 注册 </title><link>http://www.blogjava.net/gdws/archive/2011/06/22/352811.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 22 Jun 2011 07:48:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/06/22/352811.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/352811.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/06/22/352811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/352811.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/352811.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysql-frontv5.1 key 注册 <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/06/22/352811.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/352811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-06-22 15:48 <a href="http://www.blogjava.net/gdws/archive/2011/06/22/352811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss start winthin 50seconds </title><link>http://www.blogjava.net/gdws/archive/2011/06/18/352574.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 18 Jun 2011 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/06/18/352574.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/352574.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/06/18/352574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/352574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/352574.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jboss start winthin 50seconds &nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/06/18/352574.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/352574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-06-18 13:21 <a href="http://www.blogjava.net/gdws/archive/2011/06/18/352574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss Port 8080 already in use.</title><link>http://www.blogjava.net/gdws/archive/2011/06/18/352573.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 18 Jun 2011 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/06/18/352573.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/352573.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/06/18/352573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/352573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/352573.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jboss Port 8080 already in use.&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/06/18/352573.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/352573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-06-18 13:15 <a href="http://www.blogjava.net/gdws/archive/2011/06/18/352573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss Port 8083 already in use.</title><link>http://www.blogjava.net/gdws/archive/2011/06/18/352572.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 18 Jun 2011 05:13:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/06/18/352572.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/352572.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/06/18/352572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/352572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/352572.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jboss Port 8083 already in use.&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/06/18/352572.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/352572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-06-18 13:13 <a href="http://www.blogjava.net/gdws/archive/2011/06/18/352572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcate dwr使用问题？</title><link>http://www.blogjava.net/gdws/archive/2011/05/30/351365.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Mon, 30 May 2011 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/05/30/351365.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/351365.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/05/30/351365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/351365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/351365.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: tomcate dwr使用问题？&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/05/30/351365.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/351365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-05-30 22:10 <a href="http://www.blogjava.net/gdws/archive/2011/05/30/351365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Autodesk.MapGuide.Studio.2009错误？</title><link>http://www.blogjava.net/gdws/archive/2011/04/14/348308.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 14 Apr 2011 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/04/14/348308.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/348308.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/04/14/348308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/348308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/348308.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Autodesk.MapGuide.Studio.2009错误&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/04/14/348308.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/348308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-04-14 18:14 <a href="http://www.blogjava.net/gdws/archive/2011/04/14/348308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图解安装Autodesk Infrastructure Map Server(AIMS) 2012</title><link>http://www.blogjava.net/gdws/archive/2011/04/13/348207.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 13 Apr 2011 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/04/13/348207.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/348207.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/04/13/348207.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/348207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/348207.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图解安装Autodesk Infrastructure Map Server(AIMS) 2012&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/04/13/348207.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/348207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-04-13 16:46 <a href="http://www.blogjava.net/gdws/archive/2011/04/13/348207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapGuide安装常见问题及解决办法</title><link>http://www.blogjava.net/gdws/archive/2011/04/09/347934.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 09 Apr 2011 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/04/09/347934.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/347934.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/04/09/347934.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/347934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/347934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MapGuide安装常见问题及解决办法&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/04/09/347934.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/347934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-04-09 11:55 <a href="http://www.blogjava.net/gdws/archive/2011/04/09/347934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapGuide Open Source 2.1 的安装</title><link>http://www.blogjava.net/gdws/archive/2011/04/09/347933.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Sat, 09 Apr 2011 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/04/09/347933.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/347933.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/04/09/347933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/347933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/347933.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: -MapGuide Open Source 2.1 的安装&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/04/09/347933.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/347933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-04-09 11:51 <a href="http://www.blogjava.net/gdws/archive/2011/04/09/347933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询sqlserver 出现Object has been closed问题？</title><link>http://www.blogjava.net/gdws/archive/2011/04/07/347777.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 07 Apr 2011 04:18:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2011/04/07/347777.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/347777.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2011/04/07/347777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/347777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/347777.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SQLServer 2000 Driver for JDBC Object has been closed&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2011/04/07/347777.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/347777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2011-04-07 12:18 <a href="http://www.blogjava.net/gdws/archive/2011/04/07/347777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>openlayers事件</title><link>http://www.blogjava.net/gdws/archive/2010/11/17/338328.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 17 Nov 2010 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/11/17/338328.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/338328.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/11/17/338328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/338328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/338328.html</trackback:ping><description><![CDATA[关于openlayers的事件网上有很多的分析。
<p><br />如何使用:<br />var map;<br />// define custom map event listeners<br />                function mapEvent(event) {<br />                    log(event.type);<br />                }<br />                function mapBaseLayerChanged(event) {<br />                    log(event.type + " " + event.layer.name);<br />                }<br />                function mapLayerChanged(event) {<br />                    log(event.type + " " + event.layer.name + " " + event.property);<br />                }<br />                map = new OpenLayers.Map('map', {<br />                    eventListeners: {<br />                        "moveend": mapEvent,<br />                        "zoomend": mapEvent,<br />                        "changelayer": mapLayerChanged,<br />                        "changebaselayer": mapBaseLayerChanged<br />                    }<br />                });<br />                即，初始化的时候传入map的构造函数一个object，这个object中有个属性:<br />                eventListeners【其实是个哈希表】<br />看来我们要看map类的构造函数了。<br />---------------------------------------------------------------------------<br />---------------------------------------------------------------------------<br />进入map类，看构造函数<br />    /**<br />     * Constructor: OpenLayers.Map<br />     * Constructor for a new OpenLayers.Map instance.<br />     *<br />     * Parameters:<br />     * div - {String} Id of an element in your page that will contain the map.<br />     * options - {Object} Optional object with properties to tag onto the map.<br />     *<br />     * Examples:<br />     * (code)<br />     * // create a map with default options in an element with the id "map1"<br />     * var map = new OpenLayers.Map("map1");<br />     *<br />     * // create a map with non-default options in an element with id "map2"<br />     * var options = {<br />     *     maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),<br />     *     maxResolution: 156543,<br />     *     units: 'm',<br />     *     projection: "EPSG:41001"<br />     * };<br />     * var map = new OpenLayers.Map("map2", options);<br />     * (end)<br />     */    <br />    initialize: function (div, options)<br />    构造函数中进行初始化<br />    首先有一句:<br />            // now override default options <br />        OpenLayers.Util.extend(this, options);<br />        Util.extend函数的作用可以理解为:是把第二个参数的属性方法都传给第一个参数<br />        现在我们看刚才传入的带有eventListeners属性的object<br />        我们传入的object给了options，则object中的eventListeners就传给了this.eventListeners<br />        就是map类中的eventListeners属性<br />    来看这个属性的定义:<br />       /**<br />     * APIProperty: eventListeners<br />     * {Object} If set as an option at construction, the eventListeners<br />     *     object will be registered with &lt;OpenLayers.Events.on&gt;.  Object<br />     *     structure must be a listeners object as shown in the example for<br />     *     the events.on method.<br />     */<br />    eventListeners: null,<br />注释中说这个属性中的东西将通过OpenLayers.Events.on注册上,等会再说<br />同时指出这个对象必须是个“listeners object”的结构，其实就是我们前面传入的参数的eventListeners的结构<br />！！这里要注意了，listeners object是整个事件机制中的核心，所有的事件都是注册到他里面，然后触发的时候也是查找这个listeners object，找到里面注册的函数然后执行<br />goon..</p><p>构造函数中下面开始在map中初始化自己的events属性:<br />this.events = new OpenLayers.Events(this, <br />                                            this.div, <br />                                            this.EVENT_TYPES, <br />                                            this.fallThrough, <br />                                            {includeXY: true});<br />再往下就注册了:<br />if(this.eventListeners instanceof Object) {<br />            this.events.on(this.eventListeners);<br />        }<br />通过map自己的Events属性(其实也是个object,就是events类的实例)中的on这个函数注册上，<br />我们要进入OpenLayers.Events类<br />---------------------------------------------------------------------------<br />---------------------------------------------------------------------------<br />看这个on方法<br />   /**<br />     * Method: on<br />     * Convenience method for registering listeners with a common scope.<br />     *<br />     * Example use:<br />     * (code)<br />     * events.on({<br />     *     "loadstart": loadStartListener,<br />     *     "loadend": loadEndListener,<br />     *     scope: object<br />     * });<br />     * (end)<br />     */<br />    on: function(object) {<br />        for(var type in object) {<br />            if(type != "scope") {<br />                this.register(type, object.scope, object[type]);<br />            }<br />        }<br />    },<br />on这个函数参数还是第一步中我们传入的eventListeners，就是那个哈希表<br />遍历，这个“scope”键值是事件的“产生源”对象，就是这个键值对应的对象触发我们注册的事件<br />register(type, object.scope, object[type])<br />type就是事件名称<br />object[type]就是处理事件的函数名<br />可以看一下第一步中传入的参数:<br />eventListeners: {<br />                        "moveend": mapEvent,<br />                        "zoomend": mapEvent,<br />                        "changelayer": mapLayerChanged,<br />                        "changebaselayer": mapBaseLayerChanged<br />                    }<br />再进入events类的另一个函数:this.register(type, object.scope, object[type])<br />   /**<br />     * APIMethod: register<br />     * Register an event on the events object.<br />     *<br />     * When the event is triggered, the 'func' function will be called, in the<br />     * context of 'obj'. Imagine we were to register an event, specifying an <br />     * OpenLayers.Bounds Object as 'obj'. When the event is triggered, the <br />     * context in the callback function will be our Bounds object. This means<br />     * that within our callback function, we can access the properties and <br />     * methods of the Bounds object through the "this" variable. So our <br />     * callback could execute something like: <br />     * :    leftStr = "Left: " + this.left;<br />     *   <br />     *                   or<br />     *  <br />     * :    centerStr = "Center: " + this.getCenterLonLat();<br />     *<br />     * Parameters:<br />     * type - {String} Name of the event to register<br />     * obj - {Object} The object to bind the context to for the callback#.<br />     *                     If no object is specified, default is the Events's <br />     *                     'object' property.<br />     * func - {Function} The callback function. If no callback is <br />     *                        specified, this function does nothing.<br />     * <br />     * <br />     */<br />    register: function (type, obj, func) {</p><p>        if ( (func != null) &amp;&amp; <br />             (OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ) {</p><p>            if (obj == null)  {<br />                obj = this.object;<br />            }<br />            var listeners = this.listeners[type];<br />            listeners.push( {obj: obj, func: func} );<br />        }<br />    },<br />到这里，我们能看到我们所说的核心，那个哈希表，把自己的值都赋给了events类的一个属性:listeners<br />  /** <br />     * Property: listeners <br />     * {Object} Hashtable of Array(Function): events listener functions  <br />     */<br />    listeners: null,</p><p>这个事件机制的核心哈希表，键名就是事件的名称,也就是参数中的type,键值是一个对象{obj: obj, func: func}<br />当然这个对象中还有对象。。。。</p><p>现在事件已经注册上了，还有一个问题，register函数中提到了this.eventTypes，this.object<br />所以我们再回来看下events类的构造函数。<br />map类中实例化events属性的情景:<br />this.events = new OpenLayers.Events(    this, //指的是map<br />                                            this.div, <br />                                            this.EVENT_TYPES, <br />                                            this.fallThrough, <br />                                            {includeXY: true});<br />我们可以和events类的构造函数对比一下参数，就会明白了  <br />   /**<br />     * Constructor: OpenLayers.Events<br />     * Construct an OpenLayers.Events object.<br />     *<br />     * Parameters:<br />     * object - {Object} The js object to which this Events object  is being<br />     * added element - {DOMElement} A dom element to respond to browser events<br />     * eventTypes - {Array(String)} Array of custom application events <br />     * fallThrough - {Boolean} Allow events to fall through after these have<br />     *                         been handled?<br />     * options - {Object} Options for the events object.<br />     */<br />    initialize: function (<br />                   object,<br />                   element,<br />                   eventTypes, <br />                   fallThrough, <br />                   options) <br />      {<br />        OpenLayers.Util.extend(this, options);<br />        this.object     = object;<br />        this.element    = element;<br />        this.fallThrough = fallThrough;<br />        this.listeners  = {};</p><p>        // keep a bound copy of handleBrowserEvent() so that we can<br />        // pass the same function to both Event.observe() and .stopObserving()<br />        this.eventHandler = OpenLayers.Function.bindAsEventListener(<br />            this.handleBrowserEvent, this<br />        );</p><p>        // if eventTypes is specified, create a listeners list for each <br />        // custom application event.<br />        this.eventTypes = [];<br />        if (eventTypes != null) {<br />            for (var i=0, len=eventTypes.length; i&lt;len; i++) {<br />                this.addEventType(eventTypes[i]);<br />            }<br />        }<br />        <br />        // if a dom element is specified, add a listeners list <br />        // for browser events on the element and register them<br />        if (this.element != null) {<br />            this.attachToElement(element);<br />        }<br />    },<br /> 上面events的初始化是发生在map的初始化中，this.events.on(this.eventListeners);之前的，所以上面提到的register函数中的this.eventTypes，this.object 就明确意思了：<br /> this.object(this是指的events类)就是map,也就是说map是我们第一步传入参数中的注册事件的“发生源”，（比如button是onclik的“发生源”，“发生源”是本人自定义的。。不知道是否有合适的称呼，术语应该就是srcElement）<br />this.eventTypes(this是指的events类)就是map类中定义的一个常量:this.EVENT_TYPES(this是指的map类)<br />查到map类中的这个常量 EVENT_TYPES: [ <br />        "preaddlayer", "addlayer", "removelayer", "changelayer", "movestart",<br />        "move", "moveend", "zoomend", "popupopen", "popupclose",<br />        "addmarker", "removemarker", "clearmarkers", "mouseover",<br />        "mouseout", "mousemove", "dragstart", "drag", "dragend",<br />        "changebaselayer"],<br />所以我们在初始化map的时候传入的参数中，注册的事件都是来自于这个常量中的<br /></p><img src ="http://www.blogjava.net/gdws/aggbug/338328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-11-17 23:57 <a href="http://www.blogjava.net/gdws/archive/2010/11/17/338328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapGuide的内置Widget </title><link>http://www.blogjava.net/gdws/archive/2010/11/12/337862.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 11 Nov 2010 16:03:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/11/12/337862.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/337862.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/11/12/337862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/337862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/337862.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MapGuide的内置Widget &nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2010/11/12/337862.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/337862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-11-12 00:03 <a href="http://www.blogjava.net/gdws/archive/2010/11/12/337862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于OpenLayers的地图小工具</title><link>http://www.blogjava.net/gdws/archive/2010/11/12/337860.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Thu, 11 Nov 2010 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/11/12/337860.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/337860.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/11/12/337860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/337860.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/337860.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">提到小工具，就不得不提到</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">。</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">（主页是</span>
				<span lang="EN-US">http://www.openlayers.org</span>
				<span style="FONT-FAMILY: 宋体">）是由</span>
				<span lang="EN-US">MetaCarta</span>
				<span style="FONT-FAMILY: 宋体">最初发起的，用于在网页界面上展示地图的一套</span>
				<span lang="EN-US">Javascript</span>
				<span style="FONT-FAMILY: 宋体">脚本框架。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">的</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">框架最为核心的地图</span>
				<span lang="EN-US">Widget</span>
				<span style="FONT-FAMILY: 宋体">，就是采用了</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">框架。</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">框架对</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">进行包装，为其添加了更多的功能，从而使之能够更符合</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">框架并与其余</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">组件进行交互。<br /></span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">非常有趣的是，由于</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">所采用的术语跟</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">采用的并不是十分一致，甚至</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">不同部分采用的术语也不是十分一致，所以同一个名字在不同地方表达的意思却很可能并不相同。所以，在详细介绍</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">如何对</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">进行包装之前，有必要对两者之间的术语进行一下区分，以免当您阅读到相关材料时感到疑惑。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">认为，用户看到的由多个图层</span>
				<span lang="EN-US">(layer)</span>
				<span style="FONT-FAMILY: 宋体">组成的一张地图</span>
				<span lang="EN-US">(map)</span>
				<span style="FONT-FAMILY: 宋体">。地图本身与加载的数据源格式无关，与数据源格式相关的是图层。因此，地图类只有一个（</span>
				<span lang="EN-US">OpenLayers.Map</span>
				<span style="FONT-FAMILY: 宋体">），而图层类却有很多，这些类都以</span>
				<span lang="EN-US">OpenLayers.Layer</span>
				<span style="FONT-FAMILY: 宋体">作为命名空间，如</span>
				<span lang="EN-US">OpenLayers.Layer.Google/Yahoo/MapGuide/WMS/Vector</span>
				<span style="FONT-FAMILY: 宋体">等等。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">这样的结构有一个问题，那就是所有的图层之间是平行的关系，这是很不利于图层管理的。我们假设有这样一张地图：该地图包含有十二个图层，有九个来自于不同数据源的图层和三个位于顶层的</span>
				<span lang="EN-US">Vector</span>
				<span style="FONT-FAMILY: 宋体">层。那么，我如果想用代码去处理所有</span>
				<span lang="EN-US">Vector</span>
				<span style="FONT-FAMILY: 宋体">的层，就必须遍历所有的层，依次比较是不是</span>
				<span lang="EN-US">Vector</span>
				<span style="FONT-FAMILY: 宋体">层，再对</span>
				<span lang="EN-US">Vector</span>
				<span style="FONT-FAMILY: 宋体">层进行处理。解决这个问题的方案很简单，那就是引入层级结构，允许用户把图层分组。比如上面的例子中，把三个</span>
				<span lang="EN-US">Vector</span>
				<span style="FONT-FAMILY: 宋体">分成一组，比如命名为“标记”组，届时只需要对标记组中的每一个层进行处理即可。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">这也正是</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">对于</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">众多改进中的一个。而问题也正是这里引入的：地图</span>
				<span lang="EN-US">Widget</span>
				<span style="FONT-FAMILY: 宋体">在给这种层级结构命名的时候，出人意料地采用了另外的命名方式：地图</span>
				<span lang="EN-US">Widget</span>
				<span style="FONT-FAMILY: 宋体">把图层组命名为“地图组”</span>
				<span lang="EN-US">(map group)</span>
				<span style="FONT-FAMILY: 宋体">，把组里面的图层命名为</span>
				<span lang="EN-US">(map)</span>
				<span style="FONT-FAMILY: 宋体">。下面代码是示例数据中</span>
				<span lang="EN-US">Library://Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition</span>
				<span style="FONT-FAMILY: 宋体">布局文件对于地图定义的那一部分，用户可以在</span>
				<span lang="EN-US">MapGuide Studio</span>
				<span style="FONT-FAMILY: 宋体">中通过点击位于</span>
				<span lang="EN-US">Map</span>
				<span style="FONT-FAMILY: 宋体">面板上的</span>
				<span lang="EN-US">“Edit Map Group”</span>
				<span style="FONT-FAMILY: 宋体">按钮来查看这部分内容。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
		</p>
		<table class="MsoNormalTable" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #d9d9d9; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 426.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid" valign="top" width="568">
										<p class="MsoNormal">
												<span lang="EN-US">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">&lt;MapSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>  </span>&lt;MapGroupType id="Sheboygan"&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>    </span>&lt;Map&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>      </span>&lt;Type&gt;MapGuide&lt;/Type&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>      </span>&lt;SingleTile&gt;true&lt;/SingleTile&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>      </span>&lt;Extension&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>        </span>&lt;ResourceId&gt;Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition&lt;/ResourceId&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>        </span>&lt;SelectionAsOverlay&gt;true&lt;/SelectionAsOverlay&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>        </span>&lt;SelectionColor&gt;0x0000FFA0&lt;/SelectionColor&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>      </span>&lt;/Extension&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>    </span>&lt;/Map&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>    </span>&lt;Extension /&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">
														<span>  </span>&lt;/MapGroupType&gt;</span>
										</p>
										<p class="MsoNormal">
												<span lang="EN-US">&lt;/MapSet&gt;</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="a" style="MARGIN-TOP: 6pt">
				<span style="FONT-FAMILY: 宋体">布局文件中地图定义的部分代码</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">其实，</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">这样做是有原因的。这个问题源于不同产品之间定位的不同：</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">框架的目的是在同一张地图上面显示多个数据源。所以在</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">看来，一个来自</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">的地图仅仅是一个层而已。然而，在</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">内部，一张</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">地图内是包含多个</span>
				<span lang="EN-US">Layer</span>
				<span style="FONT-FAMILY: 宋体">，具体表现就是一个</span>
				<span lang="EN-US">MapDefinition</span>
				<span style="FONT-FAMILY: 宋体">里可以包含多个</span>
				<span lang="EN-US">LayerDefinition</span>
				<span style="FONT-FAMILY: 宋体">。所以，如果</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">把</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">叫做一个</span>
				<span lang="EN-US">Layer</span>
				<span style="FONT-FAMILY: 宋体">的话，又该如何称呼里面的</span>
				<span lang="EN-US">Layer</span>
				<span style="FONT-FAMILY: 宋体">呢？</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">鉴于这样的考虑，</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">才做了这种概念上的映射：</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">中的地图</span>
				<span lang="EN-US">Widget</span>
				<span style="FONT-FAMILY: 宋体">对应</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">里面的地图；</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">里面的地图组是一个逻辑概念，从而形成一种逻辑上的层级结构以便管理；</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">中的地图实际对应于</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">里面的图层。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">但事情到这里还没有结束，接下来的事情可能会让您有些意外：在编写地图</span>
				<span lang="EN-US">Widget</span>
				<span style="FONT-FAMILY: 宋体">实现代码时，为了能够便于与</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">中的类对应起来，</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">将地图（也就是</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">中的图层）称为</span>
				<span lang="EN-US">Layers</span>
				<span style="FONT-FAMILY: 宋体">（注意，不是</span>
				<span lang="EN-US">Layer</span>
				<span style="FONT-FAMILY: 宋体">），并要求每一个地图的代码都继承自</span>
				<span lang="EN-US">Fusion.Layers</span>
				<span style="FONT-FAMILY: 宋体">。比如，</span>
				<span lang="EN-US">MapGuide</span>
				<span style="FONT-FAMILY: 宋体">的</span>
				<span lang="EN-US">Layers</span>
				<span style="FONT-FAMILY: 宋体">的名称就叫做</span>
				<span lang="EN-US">Fusion.Layers.MapGuide</span>
				<span style="FONT-FAMILY: 宋体">。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">下表总结了</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">与</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">之间这种概念映射关系</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
		</p>
		<table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 108.95pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">Fusion</span>
												<span style="FONT-FAMILY: 宋体">概念</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">Fusion</span>
												<span style="FONT-FAMILY: 宋体">代码命名</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">OpenLayers</span>
												<span style="FONT-FAMILY: 宋体">概念</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">OpenLayers</span>
												<span style="FONT-FAMILY: 宋体">代码命名</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 108.95pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">地图</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">Fusion.Layers</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">图层</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">OpenLayers.Layer</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 108.95pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">地图组</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">
												</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">无对应概念</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">
												</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 108.95pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">地图</span>
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">Widget</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">Fusion.Widget.Map</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span style="FONT-FAMILY: 宋体">地图</span>
										</p>
								</td>
								<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 109pt; PADDING-TOP: 0cm" valign="top" width="145">
										<p class="MsoNormal" style="TEXT-ALIGN: justify">
												<span lang="EN-US" style="FONT-FAMILY: 'Calibri','sans-serif'">OpenLayers.Map</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="a" style="MARGIN-TOP: 6pt">
				<span lang="EN-US"> Fusion</span>
				<span style="FONT-FAMILY: 宋体">与</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">之间的概念映射关系</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">在阅读</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">和</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">的源代码或学习他们的</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体">时，一定要注意两者术语上的区别。</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<span style="FONT-FAMILY: 宋体">本节中，我们提到了</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">引入了地图组这一个概念。这只是</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">对于</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">众多改动中的一个。下面我们来看看到底</span>
				<span lang="EN-US">Fusion</span>
				<span style="FONT-FAMILY: 宋体">对</span>
				<span lang="EN-US">OpenLayers</span>
				<span style="FONT-FAMILY: 宋体">还做了哪些改动。</span>
				<br />
				<font color="#ff0000" size="5">Fusion 对于 OpenLayers 的改进 <br /></font>为了便于 Fusion 的其他组件能够与地图进行交互， Fusion 对于 OpenLayers 进行了较为全面的包装。一般来说，如果您不是开发 Fusion.Layers 的开发人员，除了使用一些 OpenLayers 的一些工具性的函数之外，您甚至都不需要知道 OpenLayers 的存在。但是，仅仅进行包装是不够的，由于 OpenLayers 与 Fusion 定位的不同， Fusion 必须对 OpenLayers 进行扩展才能适应更为复杂的模型。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">1.       Fusion 中添加了选择集的概念。 OpenLayers 在同一张地图里面显示多种不同数据源的方面确实做的很好，遗憾的是，它缺少选择集这一至关重要的概念。对于 OpenLayers 来说，选择集完全是可有可无的，因为它的目的在于将地图展示出来，而且，很多地图根本就没有选择集这样的 API ，比如 Google 地图等等。但对于 Fusion 则不同，我们很难想象没有选择集，用户该如何利用 MapGuide 进行管理。所以， Fusion 加入了选择集这个概念，并且要求实现 Layers 的地图（比如 MapGuide ）实现选择集功能。我们可以看到， Fusion.Widget.Map 中不但有诸如 get/set/clear/hasSelection 这样控制和读取选择集的函数，而且有 MAP_SELECTION_ON 和 MAP_SELECTION_OFF 这两个事件来通知监听者地图选择集的当前状况。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">2.       Fusion 开放了更多的事件。借助于 Fusion 自己独立实现的事件机制， Fusion 允许用户接收到更多种类的事件，比如 Session 是否已创建、地图当前忙碌与否、选择集状态变更、当前图层（这个是 Fusion 中的图层，不是 OpenLayers 的）变化等等。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">3.       Fusion 允许地图的实现类返回自身支持哪些比例尺，这就使得用户可以直观的知道自己当前缩放地图到什么程度。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">4.       允许用户随时设置当前地图的背景图片和地图上的光标形状。这对于直观地反应地图当前状态是是否有用的。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">5.       支持右键菜单。虽然在浏览器上实现右键菜单相对简单一些，但是通过使用地图 Widget 的 setContextMenu ，代码编写者就可以直接把已经准备好的 div 作为右键菜单，再也不需要直接与底层鼠标事件打交道了。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">
				<font color="#ff0000" size="5">地图的定义 <br /></font>前面在介绍 Fusion 与 OpenLayers 术语不同的时候，摘录了应用程序定义中对于地图部分的定义。通过解析这个定义， Fusion 了解了应该如何加载该地图。下面，我们就来看看这个定义中到底都定义了哪些东西。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">在 Fusion 中，一个地图组用一个 MapGroup 进行标签定义， MapGroup 里面的 Map 标签就是对于一个地图的定义了。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">1.       Type: 该标签标示了地图的类型。所有 MapGuide 地图该标签的值均为 MapGuide 。当 Fusion 读取到该地图的 Type 时，就会用对应的 “Fusion.Layers. 标签值 ” 来初始化该地图。比如 MapGuide 地图就会用 Fusion.Layer.MapGuide 来初始化。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">2.       SingleTile: 如果该项为真，则表示该项不采用分块服务。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">3.       Extension: 该于扩展 Map 标签，来为地图初始化提供更多的信息。各个 Fusion.Layers 的实现类可以自行决定其需要的内容，以及如何解释这些内容。对于 MapGuide 而言，有以下常见的扩展： </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">a)         ResourceId: MapDefinition 的资源 Id ，通过该 Id ， Fusion 可以知道加载哪一个地图定义。 </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">b)        SelectionAsOverLay: 如果该项是 true ，那么将会使用 GETDYNAMICOVERLAY 来获取地图，否则采用 GETMAPIMAGE 来获取地图。前者是新版本才支持的，可以把选择集和地图本身绘制成两张地图。如果您使用的 MapGuide 版本比较旧，您可以把该项设置成为 false </p>
		<p class="MsoNormal" style="TEXT-INDENT: 21.2pt; TEXT-ALIGN: justify">c)         SelectionColor: 该项表示用什么颜色来显示选中的要素。 </p>
<img src ="http://www.blogjava.net/gdws/aggbug/337860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-11-12 00:02 <a href="http://www.blogjava.net/gdws/archive/2010/11/12/337860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决QQ和360软件冲突的办法</title><link>http://www.blogjava.net/gdws/archive/2010/11/04/337185.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 03 Nov 2010 17:18:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/11/04/337185.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/337185.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/11/04/337185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/337185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/337185.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 解决QQ和360软件冲突的办法&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2010/11/04/337185.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/337185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-11-04 01:18 <a href="http://www.blogjava.net/gdws/archive/2010/11/04/337185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapGuide地图缓存TileCache组织方式讲解</title><link>http://www.blogjava.net/gdws/archive/2010/09/21/332619.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Tue, 21 Sep 2010 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/09/21/332619.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/332619.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/09/21/332619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/332619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/332619.html</trackback:ping><description><![CDATA[
		<p>此TileCache非彼Py TileCache，而是MapGuide OS/E自带地图缓存”名称”。</p>
		<p>现在成熟的地图平台均不同程度上支持瓦片生成方式，而且每个WebGIS产品均有各自不同的瓦片(Tile)组织方式。MapGuide OS/E 的和Bing Map、Google Map、TMS的组织方式有很大不同，如果可以知道存储方式就可以自己实现MapGuide Provider，部署地图时则不需要安装MapGuide OS/E。现分析下以供有缘人使用。</p>
		<p>       public override Uri GetUri(int x, int y, int zoomLevel)<br />        {//适用于MS Silverlight mapControl，xy为行列号，zoomLevel为当前地图比例级别<br />            string tileRowGroup = “”;<br />            string tileColGroup = “”;<br />            if (x &gt;= 0 &amp;&amp; y &gt;= 0 )<br />            {<br />                tileRowGroup += (Math.Floor(x/tileRowsPerFolder) * tileRowsPerFolder).ToString();//tileRowsPerFolder=30<br />                tileColGroup += (Math.Floor(y / tileColumnsPerFolder) * tileColumnsPerFolder).ToString();<br />                string tilePath = “/S” + Math.Floor(zoomLevel)<br />                + “/” + basemaplayergroupname<br />                + “/R” + tileRowGroup<br />                + “/C” + tileColGroup<br />                + “/” + (x % tileRowsPerFolder)<br />                + “_” + (y % tileColumnsPerFolder)<br />                +”.” + this.format;//png<br />                return new Uri(this.url + tilePath);<br />            }<br />            return null;<br />        }</p>
<img src ="http://www.blogjava.net/gdws/aggbug/332619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-09-21 16:58 <a href="http://www.blogjava.net/gdws/archive/2010/09/21/332619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA把各种数据结构转换为JSON格式</title><link>http://www.blogjava.net/gdws/archive/2010/09/15/332071.html</link><dc:creator>帅子</dc:creator><author>帅子</author><pubDate>Wed, 15 Sep 2010 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/gdws/archive/2010/09/15/332071.html</guid><wfw:comment>http://www.blogjava.net/gdws/comments/332071.html</wfw:comment><comments>http://www.blogjava.net/gdws/archive/2010/09/15/332071.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gdws/comments/commentRss/332071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdws/services/trackbacks/332071.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 各种数据结构转换为JSON格式&nbsp;&nbsp;<a href='http://www.blogjava.net/gdws/archive/2010/09/15/332071.html'>阅读全文</a><img src ="http://www.blogjava.net/gdws/aggbug/332071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdws/" target="_blank">帅子</a> 2010-09-15 15:10 <a href="http://www.blogjava.net/gdws/archive/2010/09/15/332071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>