??xml version="1.0" encoding="utf-8" standalone="yes"?>成r视频免费观看在线播放,99久久精品国产网站,岛国av在线播放http://www.aygfsteel.com/weibogao/category/9215.htmlmy second lifespacezh-cnWed, 28 Feb 2007 22:03:52 GMTWed, 28 Feb 2007 22:03:52 GMT60模式对话框的详细使用说明http://www.aygfsteel.com/weibogao/archive/2006/09/20/70715.htmlweibogaoweibogaoWed, 20 Sep 2006 02:27:00 GMThttp://www.aygfsteel.com/weibogao/archive/2006/09/20/70715.htmlhttp://www.aygfsteel.com/weibogao/comments/70715.htmlhttp://www.aygfsteel.com/weibogao/archive/2006/09/20/70715.html#Feedback0http://www.aygfsteel.com/weibogao/comments/commentRss/70715.htmlhttp://www.aygfsteel.com/weibogao/services/trackbacks/70715.htmljavascript有许多内建的Ҏ来生对话框Q如Qwindow.alert(), window.confirm(),window.prompt().{?然而IE提供更多的方法支持对话框。如Q?

  showModalDialog() (IE 4+ 支持)
  showModelessDialog() (IE 5+ 支持)


window.showModalDialog()Ҏ用来创徏一个显CHTML内容的模态对话框Q由于是对话框,因此它ƈ没有一般用window.open()打开的窗口的所有属性?
window.showModelessDialog()Ҏ用来创徏一个显CHTML内容的非模态对话框?

当我们用showModelessDialog()打开H口Ӟ不必用window.close()d闭它Q当以非模态方式EIE5Q打开Ӟ 打开对话框的H口仍可以进行其他的操作Q即对话框不L最上面的焦点,当打开它的H口QRQ改变时Q它自动关闭。而模态EQIQ]方式的对话框始终有焦点(焦点不可U走Q直到它关闭Q。模态对话框和打开它的H口相联p,因此我们打开另外的窗口时Q他们的链接关系依然保存Qƈ且隐藏在zdH口的下面?

使用Ҏ如下Q?
vReturnvalue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnvalue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
参数说明Q?
sURL
必选参敎ͼcdQ字W串。用来指定对话框要显C的文档的URL?
vArguments
可选参敎ͼcdQ变体。用来向对话框传递参数。传递的参数cd不限Q包括数l等。对话框通过window.dialogArguments来取得传递进来的参数?
sFeatures
可选参敎ͼcdQ字W串。用来描q对话框的外观等信息Q可以用以下的一个或几个Q用分号?”隔开?
  dialogHeight 对话框高度,不小于1Q0pxQテQ4中dialogHeight ?dialogWidth 默认的单位是emQ而テQ5中是pxQؓ方便其见Q在定义modal方式的对话框Ӟ用px做单位?
  dialogWidth: 对话框宽度?
  dialogLeft: 距离桌面左的距离?
  dialogTop: L面上的距R?
  center: {yes | no | 1 | 0 }Q窗口是否居中,默认yesQ但仍可以指定高度和宽度?
  help: {yes | no | 1 | 0 }Q是否显C帮助按钮,默认yes?
  resizable: {yes | no | 1 | 0 } QテQ5Q]Q是否可被改变大。默认no?
  status: {yes | no | 1 | 0 } QIE5+Q:是否昄状态栏。默认ؓyes[ Modeless]或no[Modal]?
  scroll:{ yes | no | 1 | 0 | on | off }Q指明对话框是否昄滚动条。默认ؓyes?

  q有几个属性是用在HTA中的Q在一般的|页中一般不使用?
  dialogHide:{ yes | no | 1 | 0 | on | off }Q在打印或者打印预览时对话框是否隐藏。默认ؓno?
  edge:{ sunken | raised }Q指明对话框的边框样式。默认ؓraised?
  unadorned:{ yes | no | 1 | 0 | on | off }Q默认ؓno?

传入参数Q?
要想对话框传递参敎ͼ是通过vArguments来进行传递的。类型不限制Q对于字W串cdQ最大ؓ4096个字W。也可以传递对象,例如Q?

test1.htm
====================
<script>
  var mxh1 = new Array("mxh","net_lover","孟子E?)
  var mxh2 = window.open("about:blank","window_mxh")
  // 向对话框传递数l?
  window.showModalDialog("test2.htm",mxh1)
  // 向对话框传递window对象
  window.showModalDialog("test3.htm",mxh2)
</script>

test2.htm
====================
<script>
  var a = window.dialogArguments
  alert("您传递的参数为:" + a)
</script>

test3.htm
====================
<script>
  var a = window.dialogArguments
  alert("您传递的参数为window对象Q名Uͼ" + a.name)
</script>

可以通过window.returnvalue向打开对话框的H口q回信息Q当然也可以是对象。例如:

test4.htm
===================
<script>
  var a = window.showModalDialog("test5.htm")
  for(i=0;i<a.length;i++) alert(a[i])
</script>

test5.htm
===================
<script>
function sendTo()
{
  var a=new Array("a","b")
  window.returnvalue = a
  window.close()
}
</script>
<body>
<form>
  <input value="q回" type=button onclick="sendTo()">
</form>

常见问题Q?
1Q如何在模态对话框中进行提交而不新开H口Q?
如果??览器是IE5.5+,可以在对话框中用带name属性的iframeQ提交时可以制定targetiframe的name。对于IE4+Q你可以用高度ؓ0的frame来作Q例子,

test6.htm
===================
<script>
  window.showModalDialog("test7.htm")
</script>

test7.htm
===================
if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
  <frame src="about:blank">
  <frame src="test8.htm">
</frameset>

test8.htm
===================
<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>
2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗Q?
{案是不能。但在frame里是可以的?

Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?
另外Q?
http://www.csdn.net/
本h整理

问:
1.模态窗口的打开
2.模态窗口的关闭
3.模态窗口的传递参数?
4.其他。。。?

hgknight(江雨.net){:
1.window.showModalDialog("DialogPage.aspx","newwin","dialogHeight: 200px; dialogWidth: 150px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;");

2.window.close();

3.传?
ParentPage.aspx:
window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb");

DialogPage.aspx:
string str1=Request.QueryString["para1"].toString();
string str2=Request.QueryString["para2"].toString();

q回?
DialogPage.aspx:
window.returnvalue="aaa";

ParentPage.aspx:
var str=window.showModalDialog("DialogPage.aspx");

4.
aspx面在showmodeldialog情况下ؓ什么一提交重新打开一个页?
showmodaldialog打开的页面中?lt;head></head>之间加入一行:<base target="_self">
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
snowjin78(方圆)
以前Q我也问q此c问题,现把收获贴如下(当然好多东西都是别h告诉我的Q:
最好不要用Response.Write(  "  <script....  </script  >  ")q样的方法注册客L脚本Q而应该用Page.RegisterStartupScript或Page.RegisterClientScriptBlockҎ来注?
Page.RegisterClientScriptBlockQ ?
在  Page  对象的   ?lt;form  runat=  server  >  元素的开始标记后立即发出客户端脚本 ?
Page.RegisterStartupScript:  
该方法在  Page  对象的   ?lt;form  runat=  server  >  元素的结束标C前发脚本

客户端代码有两个问题Q第一是把window写成了WindowQjavascript是严格区分大写的,用Window是肯定会出错的;W二个问题是讄对话框的宽度用dialogWidthQ高度用dialogHeightQ而不是height和width。!



weibogao 2006-09-20 10:27 发表评论
]]>
web面打印的相兌?/title><link>http://www.aygfsteel.com/weibogao/archive/2006/07/13/57929.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Thu, 13 Jul 2006 03:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/weibogao/archive/2006/07/13/57929.html</guid><wfw:comment>http://www.aygfsteel.com/weibogao/comments/57929.html</wfw:comment><comments>http://www.aygfsteel.com/weibogao/archive/2006/07/13/57929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/weibogao/comments/commentRss/57929.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/weibogao/services/trackbacks/57929.html</trackback:ping><description><![CDATA[ <p style="LINE-HEIGHT: 150%"> <font class="f14" id="zoom" style="FONT-SIZE: 14px">1、控?U|"?横打”和“页面的边距?<br />Q?Q?lt;script defer> <br />function SetPrintSettings() { <br /> // -- advanced features <br /> factory.printing.SetMarginMeasure(2) // measure margins in inches <br /> factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 <br /> factory.printing.printer = "HP DeskJet 870C" <br /> factory.printing.copies = 2 <br /> factory.printing.collate = true <br /> factory.printing.paperSize = "A4" <br /> factory.printing.paperSource = "Manual feed" <br /><br /> // -- basic features <br /> factory.printing.header = "This is MeadCo" <br /> factory.printing.footer = "Advanced Printing by ScriptX" <br /> factory.printing.portrait = false <br /> factory.printing.leftMargin = 1.0 <br /> factory.printing.topMargin = 1.0 <br /> factory.printing.rightMargin = 1.0 <br /> factory.printing.bottomMargin = 1.0 <br />} <br /></script> <br /><br />Q?Q?<br /><script language="javascript"> <br />  function printsetup(){ <br />  // 打印面讄 <br />  wb.execwb(8,1); <br />  } <br />  function printpreview(){ <br />  // 打印面预览 <br />     <br />  wb.execwb(7,1); <br />      <br />     <br />  } <br /><br />  function printit() <br />  { <br />  if (confirm('定打印吗?')) { <br />  wb.execwb(6,6) <br />  } <br />  } <br />  </script> <br /></head> <br /><body> <br /><OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" <br /><br />height=0 id=wb name=wb width=0></OBJECT> <br /><input type=button name=button_print value="打印" <br /><br />onclick="javascript:printit()"> <br /><input type=button name=button_setup value="打印面讄" <br /><br />onclick="javascript:printsetup();"> <br /><input type=button name=button_show value="打印预览" <br /><br />onclick="javascript:printpreview();"> <br /><input type=button name=button_fh value="关闭" <br /><br />onclick="javascript:window.close();"> <br /><br />------------------------------------------------ <br />关于q个lgq有其他的用法,列D如下Q?<br />WebBrowser.ExecWB(1,1) 打开 <br />Web.ExecWB(2,1) 关闭现在所有的IEH口Qƈ打开一个新H口 <br />Web.ExecWB(4,1) 保存|页 <br />Web.ExecWB(6,1) 打印 <br />Web.ExecWB(7,1) 打印预览 <br />Web.ExecWB(8,1) 打印面讄 <br />Web.ExecWB(10,1) 查看面属?<br />Web.ExecWB(15,1) 好像是撤销Q有待确?<br />Web.ExecWB(17,1) 全?<br />Web.ExecWB(22,1) h <br />Web.ExecWB(45,1) 关闭H体无提C?<br /><br />2、分|?<br /><HTML> <br /><HEAD> <br /><STYLE>   <br />  P {page-break-after: always} <br /></STYLE> <br /></HEAD> <br /><BODY> <br /><%while not rs.eof%> <br /><P><%=rs(0)%></P> <br /><%rs.movenext%> <br /><%wend%> <br /></BODY> <br /></HTML> <br /><br />3、ASP面打印时如何去掉页面底部的路径和顶端的늠~号 <br />Q?Qie的文?〉页面设|?〉讲里面的页眉和脚里面的东襉KLQ打印就不出来了?<br />Q?Q?lt;HTML> <br /><HEAD> <br /><TITLE> New Document </TITLE> <br /><META NAME="Generator" CONTENT="EditPlus"> <br /><META NAME="Author" CONTENT="YC"> <br /><script language="VBScript"> <br />dim hkey_root,hkey_path,hkey_key <br />hkey_root="HKEY_CURRENT_USER" <br />hkey_path="\Software\Microsoft\Internet Explorer\PageSetup" <br />'//讄|页打印的页眉页脚ؓI?<br />function pagesetup_null() <br />  on error resume next <br />  Set RegWsh = CreateObject("WScript.Shell") <br />  hkey_key="\header"   <br />  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />  hkey_key="\footer" <br />  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />end function <br />'//讄|页打印的页眉页脚ؓ默认?<br />function pagesetup_default() <br />  on error resume next <br />  Set RegWsh = CreateObject("WScript.Shell") <br />  hkey_key="\header"   <br />  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b늠Q?amp;p/&P" <br />  hkey_key="\footer" <br />  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d" <br />end function <br /></script> <br /></HEAD> <br /><br /><BODY> <br /><br/> <br /><br/> <br /><br/> <br /><br/> <br /><br/> <br /><br/><p align=center> <br /><input type="button" value="清空늠" onclick=pagesetup_null()> <input type="button" value="恢复吗" onclick=pagesetup_default()><br/> <br /><br /></p> <br /></BODY> <br /></HTML> <br />4、Q动打印 <br /><SCRIPT LANGUAGE=javascript> <br />function button1_onclick() { <br />  var odoc=window.iframe1.document; <br />  var r=odoc.body.createTextRange(); <br />  var stxt=r.htmlText; <br />  alert(stxt) <br />  var pwin=window.open("","print"); <br />  pwin.document.write(stxt); <br />  pwin.print(); <br />} <br /></SCRIPT> <br />4、用FileSystemlg实现WEB应用中的本地特定打印 <br /><script Language=VBScript> <br />function print_onclick //打印函数 <br />dim label <br />label=document.printinfo.label.value //获得HTML面的数?<br />set objfs=CreateObject("Scripting.FileSystemObject") //创徏FileSystemlg对象的实?<br />set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连?<br />objprinter.Writeline("__________________________________") //输出打印的内?<br />objprinter.Writeline("| |") <br />objprinter.Writeline("| 您打印的数据是:"&label& " |? <br />objprinter.Writeline("| |") <br />objprinter.Writeline("|_________________________________|") <br />objprinter.close //断开与打印机的连?<br />set objprinter=nothing <br />set objfs=nothing // 关闭FileSystemlg对象 <br />end function <br /></script> <br />服务器端脚本Q?<br /><%……?<br />set conn=server.CreateObject ("adodb.connection") <br />conn.Open "DSN=name;UID=XXXX;PWD=XXXX;" <br />set rs=server.CreateObject("adodb.recordset") <br />rs.Open(“select ……?,conn,1,1 <br />……?%> //与数据库q行交互 <br />HTML面~码Q?<br /><HTML> <br />……?<br /><FORM ID=printinfo NAME="printinfo" > <br /><INPUT type="button" value="打印>>" id=print name=print > //调用打印函数 <br /><INPUT type=hidden id=text1 name=label value=<%=……?>> //保存服务器端传来的数?<br />……?<br /></HTML></font> </p> <img src ="http://www.aygfsteel.com/weibogao/aggbug/57929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/weibogao/" target="_blank">weibogao</a> 2006-07-13 11:25 <a href="http://www.aygfsteel.com/weibogao/archive/2006/07/13/57929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jfreechart使用ȝhttp://www.aygfsteel.com/weibogao/archive/2006/07/11/57622.htmlweibogaoweibogaoTue, 11 Jul 2006 03:31:00 GMThttp://www.aygfsteel.com/weibogao/archive/2006/07/11/57622.htmlhttp://www.aygfsteel.com/weibogao/comments/57622.htmlhttp://www.aygfsteel.com/weibogao/archive/2006/07/11/57622.html#Feedback0http://www.aygfsteel.com/weibogao/comments/commentRss/57622.htmlhttp://www.aygfsteel.com/weibogao/services/trackbacks/57622.html

q里分三部分来介l?jFreeChart 。第一部分介绍jFreeChart产生
囑Ş的流E及相关的重要的c;W二部分介绍四种常用的报表图Q饼图、柱状图、折U图、时间序列图Q;W三部分
介绍在图形中增加Item Lable ?
jFreeChart 的版本是jfreechart-1.0.0-pre2(1)

[b]一、jFreeChart产生囑Ş的流E[/b]
   创徏一个数据源QdatasetQ来包含要在图形中昄的数?创徏一?JFreeChart 对象来代表要昄的图?br />   把图形输?br />   重要的类和接口:
   org.jfree.data.general.Dataset  所有数据源c都要实现的接口
   org.jfree.chart.ChartFactory    由它来?JFreeChart 对象
   org.jfree.chart.JFreeChart    所有对囑Ş的调整都是通过它噢Q!
   org.jfree.chart.plot.Plot    通过JFreeChart 对象获得它,然后再通过它对囑Ş外部部分Q例Q坐标uQ调?br />                                注意Q它有很多子c,一般都下嗍造型到它的子c!
   org.jfree.chart.renderer.AbstractRenderer     通过JFreeChart 对象获得它,然后再通过它对囑Ş内部部分
                                                Q例Q折U的cdQ调整。同P针对不同cd的报表图Q它?br />                                                着不同的子cd玎ͼ在下面我们简U它?Renderer
   下面我们l合不同cd的图形来具体分析q个程?br />  
[b]二、饼图[/b]
   饼图的dataset 一般是用PieDataset 接口Q具体实现类?DefaultPieDataset
   1、创Z个数据源QdatasetQ:
    private static PieDataset createDataset()
    {
        DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); //注意是DefaultPieDatasetQ!
        defaultpiedataset.setValue("One", new Double(43.200000000000003D));
        defaultpiedataset.setValue("Two", new Double(10D));
        defaultpiedataset.setValue("Three", new Double(27.5D));
        defaultpiedataset.setValue("Four", new Double(17.5D));
        return defaultpiedataset;
    }
   2、由ChartFactory  产生 JFreeChart 对象
    private static JFreeChart createChart(PieDataset piedataset)
    {
        JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 1",  //囑Ş标题名称
                                                              piedataset,   // dataset
                                                              true,      // legend?
                                                              true,     // tooltips?
                                                              false);  //URLs?
        PiePlot pieplot = (PiePlot)jfreechart.getPlot();  //通过JFreeChart 对象获得 plotQPiePlotQ!
        pieplot.setNoDataMessage("No data available");    // 没有数据的时候显C的内容
        return jfreechart;
    }
    一些重要的ҎQ?br />    pieplot.setExplodePercent(0,0.3D) //把Lable ?One" 的那一块”挖“出?0%   
   3、输出略 
  
[b]三、柱状图[/b]
   q囄dataset 一般是用CatagoryDataset接口(具体实现cLDefaultCategoryDataset),也会?IntervalXYDataset
   接口
   1、创Z个数据源QdatasetQ:
    private static CategoryDataset createDataset()
    {
        String series1 = "First";
        String series2 = "Second";
        String series3 = "Third";
        String category1 = "Category 1";
        String category2 = "Category 2";
        String category3 = "Category 3";
        String category4 = "Category 4";
        String category5 = "Category 5";
        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
        defaultcategorydataset.addValue(1.0D, series1, category1);
        defaultcategorydataset.addValue(4D, series1, category2);
        defaultcategorydataset.addValue(3D, series1, category3);
        defaultcategorydataset.addValue(5D, series1, category4);
        defaultcategorydataset.addValue(5D, series1, category5);
       
        defaultcategorydataset.addValue(5D, series2, category1);
        defaultcategorydataset.addValue(7D, series2, category2);
        defaultcategorydataset.addValue(6D, series2, category3);
        defaultcategorydataset.addValue(8D, series2, category4);
        defaultcategorydataset.addValue(4D, series2, category5);
       
        defaultcategorydataset.addValue(4D, series3, category1);
        defaultcategorydataset.addValue(3D, series3, category2);
        defaultcategorydataset.addValue(2D, series3, category3);
        defaultcategorydataset.addValue(3D, series3, category4);
        defaultcategorydataset.addValue(6D, series3, category5);
        return defaultcategorydataset;
    }
   2、由ChartFactory  产生 JFreeChart 对象   
    private static JFreeChart createChart(CategoryDataset categorydataset)
    {
        JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo", //囑Ş标题名称
                                                            "Category",//domain ?Lable
                                                                         q里先简单理解ؓ横坐标Lable好了
                                                            "Value", //range ?Lable
                                                                       q里也先单理解ؓU坐标Lable好了
                                                            categorydataset, //  dataset
                                                            PlotOrientation.VERTICAL, //垂直昄
                                                            true, // legend?
                                                            true,  // tooltips?
                                                            false); //URLs?
        jfreechart.setBackgroundPaint(Color.white);   //讑֮背景色ؓ白色
        CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //获得 plotQCategoryPlotQ!
        categoryplot.setBackgroundPaint(Color.lightGray); //讑֮图表数据昄部分背景?br />        categoryplot.setDomainGridlinePaint(Color.white); //横坐标网格线白色
        categoryplot.setDomainGridlinesVisible(true); //可见
        categoryplot.setRangeGridlinePaint(Color.white); //U坐标网格线白色
        //下面两行使纵坐标的最单位格为整?br />        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); //获得renderer 注意q里是下嗍造型
                                                                             到BarRendererQ!
        barrenderer.setDrawBarOutline(false); // Bar的外轮廓U不?br />        GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,
        0.0F, 0.0F, new Color(0, 0, 64));   //讑֮特定颜色
        GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green,
        0.0F, 0.0F, new Color(0, 64, 0));
        GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red,
        0.0F, 0.0F, new Color(64, 0, 0));
        barrenderer.setSeriesPaint(0, gradientpaint); //lseries1 Bar讑֮上面定义的颜?br />        barrenderer.setSeriesPaint(1, gradientpaint1); //lseries2 Bar 讑֮上面定义的颜?br />        barrenderer.setSeriesPaint(2, gradientpaint2); //lseries3 Bar 讑֮上面定义的颜?br />        CategoryAxis categoryaxis = categoryplot.getDomainAxis();  //横u上的 Lable 45度倾斜
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);       
        return jfreechart;
    } 
    一些重要的ҎQ(增加一块标讎ͼ
        IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D);
        intervalmarker.setLabel("Target Range");
        intervalmarker.setLabelFont(new Font("SansSerif", 2, 11));
        intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);
        intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
        intervalmarker.setPaint(new Color(222, 222, 255, 128));
        categoryplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);   
       
[b]四、折U图[/b]
   折线囄dataset 两种CatagoryDataset接口(具体实现cLDefaultCategoryDataset),XYDataset 接口
   1、CatagoryDataset接口Q       ?
   A、创Z个数据源QdatasetQ:
    private static CategoryDataset createDataset()
    {
        String series1 = "First";
        String series2 = "Second";
        String series3 = "Third";
        String type1 = "Type 1";
        String type2 = "Type 2";
        String type3 = "Type 3";
        String type4 = "Type 4";
        String type5 = "Type 5";
        String type6 = "Type 6";
        String type7 = "Type 7";
        String type8 = "Type 8";
        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
        defaultcategorydataset.addValue(1.0D, series1, type1);
        defaultcategorydataset.addValue(4D, series1, type2);
        defaultcategorydataset.addValue(3D, series1, type3);
        defaultcategorydataset.addValue(5D, series1, type4);
        defaultcategorydataset.addValue(5D, series1, type5);
        defaultcategorydataset.addValue(7D, series1, type6);
        defaultcategorydataset.addValue(7D, series1, type7);
        defaultcategorydataset.addValue(8D, series1, type8);
       
        defaultcategorydataset.addValue(5D, series2, type1);
        defaultcategorydataset.addValue(7D, series2, type2);
        defaultcategorydataset.addValue(6D, series2, type3);
        defaultcategorydataset.addValue(8D, series2, type4);
        defaultcategorydataset.addValue(4D, series2, type5);
        defaultcategorydataset.addValue(4D, series2, type6);
        defaultcategorydataset.addValue(2D, series2, type7);
        defaultcategorydataset.addValue(1.0D, series2, type8);
       
        defaultcategorydataset.addValue(4D, series3, type1);
        defaultcategorydataset.addValue(3D, series3, type2);
        defaultcategorydataset.addValue(2D, series3, type3);
        defaultcategorydataset.addValue(3D, series3, type4);
        defaultcategorydataset.addValue(6D, series3, type5);
        defaultcategorydataset.addValue(3D, series3, type6);
        defaultcategorydataset.addValue(4D, series3, type7);
        defaultcategorydataset.addValue(3D, series3, type8);
        return defaultcategorydataset;
    }
   B、由ChartFactory  产生 JFreeChart 对象     (与上面重复的部分׃再注释)
    private static JFreeChart createChart(CategoryDataset categorydataset)
    {
        JFreeChart jfreechart = ChartFactory.createLineChart("Line Chart Demo 1",
                                                             "Type",
                                                             "Value",
                                                             categorydataset,
                                                             PlotOrientation.VERTICAL,
                                                             true,
                                                             true,
                                                             false);
        jfreechart.setBackgroundPaint(Color.white);
        CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
        categoryplot.setBackgroundPaint(Color.lightGray);
        categoryplot.setRangeGridlinePaint(Color.white);
        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        numberaxis.setAutoRangeIncludesZero(true);
        //获得renderer 注意q里是下嗍造型到lineandshaperendererQ!
        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
        lineandshaperenderer.setShapesVisible(true); //series 点(x据点Q可?br />        lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
            10F, 6F
        }, 0.0F)); //定义series?First"的(即series1Q点之间的连U?Q这里是虚线Q默认是直线
        lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
            6F, 6F
        }, 0.0F)); //定义series?Second"的(即series2Q点之间的连U?br />        lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
            2.0F, 6F
        }, 0.0F)); //定义series?Third"的(即series3Q点之间的连U?br />        return jfreechart;
    }
        一些重要的ҎQ?br />        lineandshaperenderer.setLineVisible(true)  //series 点(x据点Q间有连U可?br />   2、XYDataset 接口Q?br />   A、创Z个数据源QdatasetQ:
    private static XYDataset createDataset()
    {
        XYSeries xyseries = new XYSeries("First"); //先生XYSeries 对象
        xyseries.add(1.0D, 1.0D);
        xyseries.add(2D, 4D);
        xyseries.add(3D, 3D);
        xyseries.add(4D, 5D);
        xyseries.add(5D, 5D);
        xyseries.add(6D, 7D);
        xyseries.add(7D, 7D);
        xyseries.add(8D, 8D);
       
        XYSeries xyseries1 = new XYSeries("Second");
        xyseries1.add(1.0D, 5D);
        xyseries1.add(2D, 7D);
        xyseries1.add(3D, 6D);
        xyseries1.add(4D, 8D);
        xyseries1.add(5D, 4D);
        xyseries1.add(6D, 4D);
        xyseries1.add(7D, 2D);
        xyseries1.add(8D, 1.0D);
       
        XYSeries xyseries2 = new XYSeries("Third");
        xyseries2.add(3D, 4D);
        xyseries2.add(4D, 3D);
        xyseries2.add(5D, 2D);
        xyseries2.add(6D, 3D);
        xyseries2.add(7D, 6D);
        xyseries2.add(8D, 3D);
        xyseries2.add(9D, 4D);
        xyseries2.add(10D, 3D);
       
        XYSeriesCollection xyseriescollection = new XYSeriesCollection(); //再用XYSeriesCollectiond入XYSeries 对象
        xyseriescollection.addSeries(xyseries);
        xyseriescollection.addSeries(xyseries1);
        xyseriescollection.addSeries(xyseries2);
        return xyseriescollection;
    }
   B、由ChartFactory  产生 JFreeChart 对象
    private static JFreeChart createChart(XYDataset xydataset)
    {
        JFreeChart jfreechart = ChartFactory.createXYLineChart("Line Chart Demo 2",
                                                               "X",
                                                               "Y",
                                                               xydataset,
                                                               PlotOrientation.VERTICAL,
                                                               true,
                                                               true,
                                                               false);
        jfreechart.setBackgroundPaint(Color.white);
        XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得 plotQXYPlotQ!
        xyplot.setBackgroundPaint(Color.lightGray); //讑֮图表数据昄部分背景?br />        xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); //讑֮坐标轴与图表数据昄部分距离
        xyplot.setDomainGridlinePaint(Color.white); //|格UK?br />        xyplot.setRangeGridlinePaint(Color.white);
        //获得 renderer 注意q里是XYLineAndShapeRenderer Q!
        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();
        xylineandshaperenderer.setShapesVisible(true); //数据点可?br />        xylineandshaperenderer.setShapesFilled(true); //数据点被填充即不是空心点
        NumberAxis numberaxis = (NumberAxis)xyplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        return jfreechart;
    }                     
   一些重要的ҎQ?br />        XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();
        xylineandshaperenderer.setSeriesLinesVisible(0, false); //W一个XYSeries数据炚wq线不可?br />        xylineandshaperenderer.setSeriesShapesVisible(1, false); //W二个XYSeries数据点不可见
        xyplot.setRenderer(xylineandshaperenderer);  
       
[b]五、时间序列图[/b]
    旉序列囑֒折线囑־怼Q不同的是它?domain轴的数据是时间而不是数字?旉序列囄dataset ?br />    XYDataset 接口Q具体实现类是TimeSeriesCollection Q和上面cMQ有TimeSeries 对象Q它被添加入
    TimeSeriesCollection 。                                                                             ?
  1、创Z个数据源QdatasetQ:
    private static XYDataset createDataset()
    {
        TimeSeries timeseries = new TimeSeries("L&G European Index Trust",Month.class);
        timeseries.add(new Month(2, 2001), 181.8D);//q里用的是Month.classQ同栯有Day.class Year.class {等
        timeseries.add(new Month(3, 2001), 167.3D);
        timeseries.add(new Month(4, 2001), 153.8D);
        timeseries.add(new Month(5, 2001), 167.6D);
        timeseries.add(new Month(6, 2001), 158.8D);
        timeseries.add(new Month(7, 2001), 148.3D);
        timeseries.add(new Month(8, 2001), 153.9D);
        timeseries.add(new Month(9, 2001), 142.7D);
        timeseries.add(new Month(10, 2001), 123.2D);
        timeseries.add(new Month(11, 2001), 131.8D);
        timeseries.add(new Month(12, 2001), 139.6D);
        timeseries.add(new Month(1, 2002), 142.9D);
        timeseries.add(new Month(2, 2002), 138.7D);
        timeseries.add(new Month(3, 2002), 137.3D);
        timeseries.add(new Month(4, 2002), 143.9D);
        timeseries.add(new Month(5, 2002), 139.8D);
        timeseries.add(new Month(6, 2002), 137D);
        timeseries.add(new Month(7, 2002), 132.8D);
       
        TimeSeries timeseries1 = new TimeSeries("L&G UK Index Trust",Month.class);
        timeseries1.add(new Month(2, 2001), 129.6D);
        timeseries1.add(new Month(3, 2001), 123.2D);
        timeseries1.add(new Month(4, 2001), 117.2D);
        timeseries1.add(new Month(5, 2001), 124.1D);
        timeseries1.add(new Month(6, 2001), 122.6D);
        timeseries1.add(new Month(7, 2001), 119.2D);
        timeseries1.add(new Month(8, 2001), 116.5D);
        timeseries1.add(new Month(9, 2001), 112.7D);
        timeseries1.add(new Month(10, 2001), 101.5D);
        timeseries1.add(new Month(11, 2001), 106.1D);
        timeseries1.add(new Month(12, 2001), 110.3D);
        timeseries1.add(new Month(1, 2002), 111.7D);
        timeseries1.add(new Month(2, 2002), 111D);
        timeseries1.add(new Month(3, 2002), 109.6D);
        timeseries1.add(new Month(4, 2002), 113.2D);
        timeseries1.add(new Month(5, 2002), 111.6D);
        timeseries1.add(new Month(6, 2002), 108.8D);
        timeseries1.add(new Month(7, 2002), 101.6D);
        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
        timeseriescollection.addSeries(timeseries);
        timeseriescollection.addSeries(timeseries1);
        timeseriescollection.setDomainIsPointsInTime(true); //domain轴上的刻度点代表的是旉点而不是时间段
        return timeseriescollection;
    }
   2、由ChartFactory  产生 JFreeChart 对象
    private static JFreeChart createChart(XYDataset xydataset)
    {
        JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Legal & General Unit Trust Prices",
                                                                   "Date",
                                                                   "Price Per Unit",
                                                                   xydataset,
                                                                   true,
                                                                   true,
                                                                   false);
        jfreechart.setBackgroundPaint(Color.white);
        XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得 plot : XYPlot!!
        xyplot.setBackgroundPaint(Color.lightGray);
        xyplot.setDomainGridlinePaint(Color.white);
        xyplot.setRangeGridlinePaint(Color.white);
        xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
        xyplot.setDomainCrosshairVisible(true);
        xyplot.setRangeCrosshairVisible(true);
        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.getRenderer();
        if(xyitemrenderer instanceof XYLineAndShapeRenderer)
        {
            XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;
            xylineandshaperenderer.setDefaultShapesVisible(true); //数据点可?br />            xylineandshaperenderer.setDefaultShapesFilled(true);  //数据Ҏ实心?br />        }
        DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis(); //对domain 轴上日期昄格式定义
        dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
        return jfreechart;
    } 
       一些重要的ҎQ?br />     A、增加标记线Q?
        xyplot.addRangeMarker(new ValueMarker(550D)); //数Du
        Quarter quarter = new Quarter(2, 2002);
        xyplot.addDomainMarker(new ValueMarker(quarter.getMiddleMillisecond()));  //旉?br />     B、数据点的调?br />        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();
        xylineandshaperenderer.setDefaultShapesVisible(true);  //数据点可?br />        xylineandshaperenderer.setSeriesFillPaint(0, Color.red);  //数据点填充ؓU色
        xylineandshaperenderer.setSeriesFillPaint(1, Color.white);  //数据点填充ؓ白色
        xylineandshaperenderer.setUseFillPaint(true);    //应用
     C、^均值曲U?
       q个曲线有什么用呢?很简单的例子Q这里有一个以半年每天为单位的数据l制的曲U,我们想看看以月ؓ单位数据
       的变化,q时可以用到它了?
        TimeSeries timeseries = createEURTimeSeries();  //是以半q每天ؓ单位的数?br />        TimeSeries timeseries1 = MovingAverage.createMovingAverage(timeseries,
                                                                   "30 day moving average",
                                                                   30, //30天ؓ一个周?br />                                                                   30); //最开始的30天蟩q?br />        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
        timeseriescollection.addSeries(timeseries);
        timeseriescollection.addSeries(timeseries1);
        return timeseriescollection;
    
[b]六、ȝ一下[/b]
                           dataset                          plot                    renderer                      
  饼图           PieDatasetQDefaultPieDatasetQ         ?PiePlot                    ------
  q图  ?CatagoryDatasetQDefaultCategoryDatasetQ  ?CategoryPlot                BarRenderer
  折线图  ?CatagoryDatasetQDefaultCategoryDatasetQ  ?CategoryPlot              LineAndShapeRenderer
                  XYDatasetQXYSeriesCollectionQ         ?XYPlot                XYLineAndShapeRenderer
  旉序列图   ?XYDataset QTimeSeriesCollectionQ       ?XYPlot                XYLineAndShapeRenderer
  q里只是一些常用的ҎQ具体还是看API ,主要的类ȝ如下Q?br />JFreeChart:生成图表的中间存攄?/p>

CategoryDataSet:图表的数据,主要包含行数据(String[] cdQ,列数?String[] cdQ和L据                  ?(double[][]cdQ。一般来说简单的图表L据都是double[1][]cd的?/div>
ChartFactory: 工厂c,提供多种Ҏ生成多达30多种图表Q用得比较多的是BarChart(q?,LineChart             Q折U图Q,PieChartQ饼状图Q。工厂方法看h比较l一QcreatXXXChart(图表标题Q            ?行标题,列标题,L据(CategoryDataSetQ?
ChartUtities: 公用c,提供各种持久保存图表数据的方法,比如saveChartAsJPEG(FileQ                           ?JFreeChart,width,height)
其他q有一些渲染类Q主要是用来化图表界面Q调整和优化昄风格{?/div>
ȝ来说q不错,比jasperReport要简单,上手很快Q图表效果也q不错,用来做普通数据图表够了



[b]七、Item Lable[/b]
   q里以柱状图Z说明Q具体来说就是在每个q上显C它的数据,具体有下面内容:
   A、 Item Lable 可见
   B、调?Item Lable 的颜艌Ӏ字体等
   C、调?Item Lable 的位|?br />   D、定?Item Lable 的内?br />   1、分配一?Lable Generator l?renderer
      BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();
      GategoryLableGenerator generator =new StandardGategoryLableGenerator(
           "{2}", new DecimalFormat("0.00")    //调整昄的数字和字符格式
      );
      barrenderer.setLableGenerator(generator);
   2、 Item Lable 可见
      barrenderer.setItemLableVisible(true);
   3、调?Item Lable 的颜艌Ӏ字体等
      barrenderer.setItemLablePaint(Color.red);
      barrenderer.setItemLableFont(new Font("SansSerif",Font.PLAIN,10));
   4、调?Item Lable 的位|?br />      q里涉及C个新的对?ItemLablePosition , ItemLablePosition的构造函数有两个或四个参?br />      public ItemLabelPosition(ItemLabelAnchor itemLabelAnchor,
                         org.jfree.ui.TextAnchor textAnchor,
                         org.jfree.ui.TextAnchor rotationAnchor,
                         double angle)
      itemLabelAnchor - Item Lable 的位|?Q最重要的!Q)
      textAnchor - Item Lable里包含的正文相对于Item Lable 的位|?br />      rotationAnchor - Item Lable里包含的正文旋{的位|?br />      angle - 旋{的角?br />      ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE12,
                                                      TextAnchor.CENTER_RIGHT,
                                                      TextAnchor.CENTER_RIGHT,
                                                      -1.57D);
      barrenderer.setPositiveItemLabelPosition(itemlabelposition);
   q样可以每个柱状上昄它的数据了,当然可以定制 Item Lable 的内容,比如 Item Lable text 过100的才
   昄Q这样就需要定制自qc,它要实现GategoryLableGenerator 接口Q实现generateItemLable()Ҏ?/p>

weibogao 2006-07-11 11:31 发表评论
]]>javascript 常用代码大全(转蝲)http://www.aygfsteel.com/weibogao/archive/2006/04/28/43706.htmlweibogaoweibogaoFri, 28 Apr 2006 01:23:00 GMThttp://www.aygfsteel.com/weibogao/archive/2006/04/28/43706.htmlhttp://www.aygfsteel.com/weibogao/comments/43706.htmlhttp://www.aygfsteel.com/weibogao/archive/2006/04/28/43706.html#Feedback0http://www.aygfsteel.com/weibogao/comments/commentRss/43706.htmlhttp://www.aygfsteel.com/weibogao/services/trackbacks/43706.html阅读全文

weibogao 2006-04-28 09:23 发表评论
]]>
FCKeditor在线~辑器的使用(转蝲)http://www.aygfsteel.com/weibogao/archive/2006/04/25/42961.htmlweibogaoweibogaoTue, 25 Apr 2006 02:34:00 GMThttp://www.aygfsteel.com/weibogao/archive/2006/04/25/42961.htmlhttp://www.aygfsteel.com/weibogao/comments/42961.htmlhttp://www.aygfsteel.com/weibogao/archive/2006/04/25/42961.html#Feedback0http://www.aygfsteel.com/weibogao/comments/commentRss/42961.htmlhttp://www.aygfsteel.com/weibogao/services/trackbacks/42961.html FCKeditor在线~辑器的使用(转蝲)

试用了一下FCKeditor,Ҏ|上的文章小l一下:
1.下蝲
FCKeditor.java 2.3 (FCKeditot for java)
FCKeditor 2.2 (FCKeditor基本文g)

2.建立目:tomcat/webapps/TestFCKeditor.

3.FCKeditor2.2解压~?整个目录FCKeditor复制到项目的根目录下Q?br />目录l构为:tomcat/webapps/TestFCKeditor/FCKeditor
然后FCKeditor-2.3.zipQjavaQ压~包中\web\WEB-INF\lib\目录下的两个jar文g拷到目的\WEB-INF\lib\目录下。把其中的src目录下的FCKeditor.tld文gcopy到TestFCKedit/FCKeitor/WEB-INF/?/p>

4.FCKeditor-2.3.zip压羃包中\web\WEB-INF\目录下的web.xml文g合ƈ到项目的\WEB-INF\目录下的web.xml文g中?/p>

5. 修改合ƈ后的web.xml文gQ将名ؓSimpleUploader的Servlet的enabled参数值改为trueQ?br />以允怸传功能,Connector Servlet的baseDir参数值用于设|上传文件存攄位置?br />d标签定义:
<taglib>
<taglib-uri>/TestFCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>

q行图:

6. 上面文g中两个servlet的映分别ؓQ?editor/filemanager/browser/default/connectors/jsp/connector
?editor/filemanager/upload/simpleuploaderQ需要在两个映射前面加上/FCKeditorQ?br />x?FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?br />/FCKeditor/editor/filemanager/upload/simpleuploader?/p>

7.q入skin文g夹,如果你想使用fckeditor默认的这U奶黄色Q?br />那就把除了default文g夹外的另两个文g夹直接删?

8.删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文g以外的所有文?
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文?br />删除/editor/filemanager/upload/下的所有文?br />删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文g的所有文?/p>

9.打开/FCKeditor/fckconfig.js
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL{的值替换成以下内容Q?br />FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;

FCKConfig.ImageBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;

FCKConfig.FlashBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;


FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;

10.其它
fckconfig.js总配|文Ӟ可用记录本打开Q修改后文件存为utf-8 ~码格式。找刎ͼ

FCKConfig.TabSpaces = 0 ; 改ؓFCKConfig.TabSpaces = 1 ; 卛_~辑器域内可以用Tab键?/p>

如果你的~辑器还用在|站前台的话Q比如说用于留言本或是日记回复时Q那׃得不考虑安全了,
在前台千万不要用Default的toolbarQ要么自定义一下功能,要么qpȝ已经定义好的BasicQ?br />也就是基本的toolbarQ找刎ͼ
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
'Smiley','SpecialChar','Replace','Preview'] ] ;
q是改过的BasicQ把囑փ功能LQ把d链接功能LQ因为图像和链接和flash和图像按钮添加功能都能让前台
늛接访问和上传文gQ?fckeditorq支持编辑域内的鼠标右键功能?br />
FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;

q也是改q的把鼠标右键的“链接、图像,FLASHQ图像按钮”功能都L?/p>

  扑ֈQ?FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字?
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

7.d文g /TestFCKeditor/test.jsp:
<%@ page language="java" import="com.fredck.FCKeditor.*" %>
<%@ taglib uri="/TestFCKeditor" prefix="FCK" %>
<script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script>

<%--
三种Ҏ调用FCKeditor
1.FCKeditor自定义标{?(必须加头文g <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> )
2.script脚本语言调用 (必须引用 脚本文g <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> )
3.FCKeditor API 调用 (必须加头文g <%@ page language="java" import="com.fredck.FCKeditor.*" %> )
--%>

<%--
<form action="show.jsp" method="post" target="_blank">
<FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"
width="700"
height="500"
skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"
toolbarSet = "Default"
>
input
</FCK:editor>
<input type="submit" value="Submit">
</form>
--%>

<form action="show.jsp" method="post" target="_blank">
<table border="0" width="700"><tr><td>
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ;
oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = "Default" ;
oFCKeditor.ReplaceTextarea();
</script>
<input type="submit" value="Submit">
</td></tr></table>
</form>

<%--
<form action="show.jsp" method="post" target="_blank">
<%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, "content" ) ;
oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;
oFCKeditor.setValue( "input" );
out.println( oFCKeditor.create() ) ;
%>
<br>
<input type="submit" value="Submit">
</form>
--%>

d文g/TestFCKeditor/show.jsp:
<%
String content = request.getParameter("content");
out.print(content);
%>

8.览http://localhost:8080/TestFCKeditor/test.jsp
ok!



weibogao 2006-04-25 10:34 发表评论
]]>·[转帖]DWR学习 -|忧忧 发表?2006-3-22 10:23:00 http://www.aygfsteel.com/weibogao/archive/2006/04/01/38615.htmlweibogaoweibogaoSat, 01 Apr 2006 08:30:00 GMThttp://www.aygfsteel.com/weibogao/archive/2006/04/01/38615.htmlhttp://www.aygfsteel.com/weibogao/comments/38615.htmlhttp://www.aygfsteel.com/weibogao/archive/2006/04/01/38615.html#Feedback0http://www.aygfsteel.com/weibogao/comments/commentRss/38615.htmlhttp://www.aygfsteel.com/weibogao/services/trackbacks/38615.html http://getahead.ltd.uk/dwr/
q段旉较闲,研究了一番dwr.发现dwr实现的AJAX有些地方实很是先进.比如动态生成javascript代码;隐藏的http协议;javascript于java代码交互的是javascript对象(或字W串){?
以下是我临时译的一些东?本来惛_?发现dwr实在是简?随便写?英文居差,C?

1、DWR: Easy AJAX for JAVA

作ؓ一个java open source library,DWR可以帮助开发h员完成应用AJAX技术的webE序。它可以让浏览器上的javascriptҎ调用q行在web服务器上javaҎ?

DWR主要׃部门l成。javascript与web服务器通信q更新web;q行在web服务器的Servlet处理hq把响应发回览器?

DWR采用新颖的方法实CAJAX(本来也没有确切的定义)Q在java代码基础上动态的生成javascript代码。web开发者可以直接调用这些javascript代码Q然而真正的代码是运行在web服务器上的java code。出与安全考虑Q开发者必配|哪些java class暴露lDWR.(dwr.xml)

q种?java到javascript)调用机制l用户一U感觉,好象常规的RPC机制Q或RMI or SOAP.但是它运行在web上,不需要Q何浏览器插g?

DWR不认为浏览器和web服务器之间协议重要,把系l界面放在首位。最大挑战是java method call的同步特征与ajax异步Ҏ之间的矛盾。在异步模型里,l果只有在方法结束后才有效。DWR解决了这个问题,把回调函数当成参Cl方法,处理完成后,自动调用回调Ҏ?

q个图表昄了,通过javascript事gQDWR能改变select的内容,当然q些内容由java代码q回?javascript函数Data.getOptions(populateList)由DWR动态生成,q个函数会调用java class DatacȝҎ。DWR处理如何q程调用Q包括{换所有的参数和返回的l果Qjavascript\javaQ。javaҎ执行完后Q执行回调方法populateList。在整个q程中我们就惛_用本地的Ҏ一栗?

2、Getting Started

废话说Q试试就ok了?
web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app id="dwr">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

dwr.xml 与web.xml同目?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="JDate">
<param name="class" value="/java.util.Date"/>
</create>
</allow>
</dwr>

index.html
<html>
<head>
<title>DWR - Test Home</title>
<script type='text/javascript' src="/dwr/interface/JDate.js"></script>
<script type='text/javascript' src="/dwr/engine.js"></script>
<script>
function init(){
JDate.getYear(load);
}
function load(data){
alert(data+1900+'q?)
}
</script>
</head>
<body onload="init()">
</body>
</html>

dwr.jar 下蝲放lib?

完了Q什么,够了Q就q些。访问ok!
3、Examples
http://www.aboutmyhealth.org/ q不是Google Suggest?ok.
4、源码浅?
dwr的设计很象webwork2的设?隐藏http协议,扩展性,兼容性及强?

通过研究uk.ltd.getahead.dwr.DWRServletq个servlet来研I下dwr到底是如何工作滴?

java代码:  

web.xml配置
<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


q样所有的/dwr/*所有请求都p个servlet来处理,它到底处理了些什么能。我们还以上面最单的例子来看?
1?web服务器启动,DWRServlet init()Ҏ调用Qinit主要做了以下工作?
讄日志U别、实例化DWR用到的单例类Q这些类在jvm中只有一个实例对象)、读去配|文Ӟ包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml. config*.xmlQ?
2、请求处?
DWRServlet.doGet, doPostҎ都调用processor.handle(req, resp)Ҏ处理。Processor对象在init()Ҏ中已l初始化了?
java代码:  

public void handle(HttpServletRequest req, HttpServletResponse resp)
        throws IOException
    {
        String pathinfo = req.getPathInfo();
        if(pathinfo == null || pathinfo.length() == 0 || pathinfo.equals("/"))
        {
            resp.sendRedirect(req.getContextPath() + req.getServletPath() + '/' + "index.html");
        } else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/index.html"))
        {
            doIndex(req, resp);
        } else
        if(pathinfo != null && pathinfo.startsWith("/test/"))
        {
            doTest(req, resp);
        } else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/engine.js"))
        {
            doFile(resp, "engine.js", "text/javascript");
        } else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/util.js"))
        {
            doFile(resp, "util.js", "text/javascript");
        } else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/deprecated.js"))
        {
            doFile(resp, "deprecated.js", "text/javascript");
        } else
        if(pathinfo != null && pathinfo.startsWith("/interface/"))
        {
            doInterface(req, resp);
        } else
        if(pathinfo != null && pathinfo.startsWith("/exec"))
        {
            doExec(req, resp);
        } else
        {
            log.warn("Page not found. In debug/test mode try viewing /[WEB-APP]/dwr/");
            resp.sendError(404);
        }
    }


哦。这些恍然大悟。dwr/*处理的请求也p几种?
Q?Qdwr/index.htmlQdwr/test/q种只能在debug模式下用,调试用?
dwr/engine.jsQdwr/util.jsQdwr/deprecated.js当这个请求到达,从dwr.jar包中d文g,响应回去。(重复h有缓存)
Q?Q当dwr/interface/q种h到来Q(例如我们在index.html中的 <script type='text/javascript' src="/dwr/interface/JDate.js"></script>QDWR做一件伟大的事。把我们在WEB-INF/dwr.xml中的
<create creator="new" javascript="JDate">
<param name="class" value="/java.util.Date"/>
</create>
java.util.Date转化为javascript函数?
http://localhost:port/simpledwr/dwr/interface/JDate.js看看吧?
l节也比较简单,通过java反射Q把Ҏ都写成javascript特定的方法。(我觉得这些{换可以放到缓存里Q下ơ调用没必要再生成一遍,不知道作者ؓ什么没q样做)?
Q?Qdwr/exec
javascript调用Ҏ时发送这U请求,可能是XMLHttpRequest或IFrame发送?
当然Qjavascript调用的方法签名与java代码一_包括参数Q还有javascript的回调方法也传到了服务器端,在服务器端很Ҏ实现。回调方法的java的执行结?q回cM <script>callMethod(l果)<script>的javascript字符?在浏览器执行。哈Q一切就q么单,巧妙?

dwr的设计构思很是y妙?
W一、把javac{化ؓjavascriptcȝdwr自动完成Q只需单的配置?
W二、应用v来极其简单。开发者不要该服务器代码就可以集成?
W三、容易测试。和webwork一P隐藏的http协议?
W四、及强扩展性。例如与spring集成Q只需修改一点代码?
W五、性能。就我与jason,{简单比较,dwr性能可能是最好的?/span>

weibogao 2006-04-01 16:30 发表评论
]]>
վ֩ģ壺 | | Ǩ| ߮| ̨| | | ³| | ʯׯ| Ѯ| | | | | ̩| | | ǿ| ̨| ʷ| ̫| ʯ| | ɣ| | ̨| | | | | | | ¤| ɽ| н| | | | | |