??xml version="1.0" encoding="utf-8" standalone="yes"?> 未用AJAX之前 目前大多数的Struts应用都是标准?#8220;如同一个^面文档的web面”的结构。如果你x仿一些桌面应用程?比如那些使用Java SwingQVisual BasicQ或者Delphi建立的应用程?Q那么你有两个选择:你可以发送所有的可能作ؓ面的一部分被请求的信息Q用大量的JavaScript来操作其动态的昄(一个很慢ƈ且非企业UJava的方?;或者你可以不改变Ş式地提交到后台服务器(一U有效的Ҏ(gu)) 。AJAX提高l你了融合前面的最佌x?动态的面Q但是大多数的应用是在你的web服务器的JavaE序来处理的?/p>
AJAX 101 AJAX和现有的动态HTML技术非常相|q在其上增加了一个发送到“后台”服务器的h来获取需要的新的或者更新的信息。AJAX的机制在其他地方已经有详l的说明――请查看本文后的Resources来获取更多。但是你臛_需要知? 在你的Struts应用中用AJAX 你阅M本文Q然后你会对使用AJAX来创建动态的web面感兴,q且想知道如何将它加入到你的Struts应用中。这只是选择之一。那么你会如何选择? 我们选择在Struts应用中增加AJAX的优势是: 实现Ҏ(gu) 我们如何真正的诏L们的选择?我们首先应该注意一?#8220;标准?#8221;(没有AJAX)Struts应用是如何工作的。在此应用中Q一个一般的事g程如下: 现有的Struts应用 一个演CZ件流E的单Struts应用可以在以下地址下蝲: struts-non-ajax.zip。此ZStruts的应用,是基于用L(fng)输入昄或者隐藏蓝色和l色的表根{图1昄了蝲入初始页面的画面。图2昄了用戯入值ƈ点击了提交后的画面。虽然简单,但它已经以表示一个Struts的工作流E?/p>
?1. 没有AJAX的例?初始屏幕 ?2. 没有AJAX的例?输入值ƈ点击了提?/p>
服务器端的代码是:一个Struts Action使用struts-config.xml 中定义的D{发到(相同?JSP。这个例子代码中一些需要注意的地方?
该应用ƈ没有M“错误”。类似的Struts目好多q都是这样做的。但是,我们如何在不d复杂的JavaScript或者频J的表单提交的前提下Qؓ此应用增加动态的元素? 我们的第一个Struts AJAX应用 观察下下面的?和图4。第一眼看上去Q它们和前面的例子没有说明区别。它们的不同之处在于Q页面蝲入后(?)然后文本框中的值改变了Q窗体自动提交而不昄I白的,然后在图4中显C结果。普通的提交按钮仍然在,你也可以选择使用它?/p>
?3. 面载入后的AJAX例子 ?4. AJAX调用后的AJAX例子 dAJAX是出奇的Ҏ(gu)。服务器端的代码和前面的例子是一L(fng): 一个Struts的ActionForm来后L据,一个Struts的Action来执行需要的d(例如Q存储数据库)然后转发到适当的JSP面来显C结果?/p>
l箋 如果你希望就此停止阅?跌q个例子的工作说?Q但是这里的是和你需要{换你的Struts应用C个Struts-AJAX应用同样的风? JavaScriptҎ(gu)retrieveURL()调用服务器的Struts(通过URL)Q获取JSP响应Q然后更新显C页面中?标签中的部分。就是这么简? AJAX解决Ҏ(gu)的细?/p>
我们例子变为AJAX-Struts应用的时候,需要三个变? 我们详l的说明上面的每一步?/p>
发送AJAXh到服务器
有两个方?在下面列?用于发送请求到服务器?/p>
· retrieveURL()Ҏ(gu)获得服务器的URL和Struts form。URL用于使用AJAXQform的值用于传递到服务器?/p>
· getFormAsString()Ҏ(gu)用于retrieveURL()中form命名的值组装成查询字符Ԍq发送到服务器?/p>
使用Ҏ(gu)很简单,使用onclick()/onChange()事g来触发retrieveURL()更新昄?/p>
在这两个Ҏ(gu)中有一些有的东西?/p>
在retrieveURL()Ҏ(gu)中,req.onreadystatechange = processStateChange (注意Q没有括?q一行来告诉览器在服务器响应到辄时候调用processStateChange()Ҏ(gu)(该方法将在后面介l?。retrieveURL()Ҏ(gu)?现在已经是AJAX的标准了)同样军_是用IE览?ActiveX)q是使用Netscape/Mozilla (XmlHttpRequest) 来实现跨览器兼宏V?/p>
getFormAsString()Ҏ(gu)HTML form转换成字W串q接在URL后面(q样允许我们发送HTTP GETh)。这个字W串是经q{换的(比如Q空D{换成%20{?Qƈ且是一个Struts能将其组装成ActionForm的格?q不需要Struts清楚的明白这个是来之AJAX的请?。注意,在本例中我们使用HTTP GETQ用HTTP POST的方法也是类似的?/p>
function retrieveURL(url,nameOfFormToPost) { //url转换成字W串 //调用AJAX // 非IE览?br>req = new XMLHttpRequest(); req = new ActiveXObject("Microsoft.XMLHTTP"); getFormAsString() 是一?#8220;U有” Ҏ(gu)Q在retrieveURL()中用?/p>
function getFormAsString(formName){ //讄q回字符?br>returnString =""; //取得表单的?br>formElements=document.forms[formName].elements; //循环数组Q组装url for(var i=formElements.length-1;i>=0; --i ){ //q回字符?br>return returnString; 到现在ؓ止,我们学习q了使用JavaScript来完成AJAX调用(前面列出)QStruts ActionQActionForm以及JSP(基本没有变化Q只是增加了标签)。ؓ了完善我们对Struts-AJAX目的了解,我们需要了解三个用于根据服务器q回的结果而更新页面的JavaScriptҎ(gu)?/p>
function processStateChange() { if (req.readyState == 4) { // 完成 //响应的文本分割成Span元素 //使用q些Span元素更新面 } else { function replaceExistingWithNewHtml //循环newTextElements //判断是否?if(newTextElements[i]. //获得span的名? 讄在第一和第二个引号之间 //获得内容Q在W一?gt;标记后的所有内?br>startContentPos=newTextElements[i]. //现在更新现有的Document中的元素Q? //分割文档 //处理每个元素 //删除掉第一个span后面的元?br>spanPos = returnElements[i]. //如果扑ֈ匚w的,获得span前的内容 新的控制?/p>
d以下的JavaScript代码到我们的应用中,以下的步骤将在服务器和浏览器中执行?/p>
在你的应用中设计AJAX 以上描述的JavaScriptҎ(gu)能在大多数的应用中用,包括比我们的例子复杂得多的。但是,在用之前,你需要注意以下几? · 避免复制代码Q最好在初始化请?如,昄完整的页?和AJAX(更新部分面)h中用相同的Struts Action和JSP?/p>
·在公qAction(控制?中,军_JSP面(所有的JSP面或者其中的一部分)中的一个区域需要传送到览器。通过在web服务器的session或者ActionForm中设定标记来让JSP面知道哪些部分需要提交?/p>
· 在JSP中,使用Struts 或者JSTL标签来决定提交的HTML区域?/p>
使用AJAX的本例子Q可以在以下下蝲: struts-Ajax.zip l语 AJAX技术允许我们在创徏和用web应用的时候完全的改变。本文介l了一个简单的技术,在现有的Struts应用中增加Struts的处理。它允许我们利用我们已有的东西,不仅仅是代码Q还包括了开发的技能。作Z个好的品,它同样允许我们写出更清晰Q更L(fng)植性的Java Struts应用?/p>
版权声明QTechtarget获Matrix授权发布,如需转蝲误pMatrix
原因?hibernate 使用c3p0q接orcale数据后不会释?Q?c3p0的最大连接数?00Q但昄c3p0有BugQ导致数据库q接池不够用Q导致进E锁歅R?br />后换Proxool后,观察正常?br />
下面转引其它|友文章说明c3p0 ?Proxool?dbcp 的区?
<!-- JDBC驱动E序 -->
2<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 数据库用户名 -->
3<property name="connection.username">root</property> <!-- 数据库密?nbsp;-->
上面的一D配|,?span class="hilite2" style="background-color: #ffffff">c3p0?span class="hilite1" style="background-color: #ffffff">dbcp中,都是必需的,因ؓhibernate会根据上q的配置来生成connectionsQ再交给c3p0?span class="hilite1" style="background-color: #ffffff">dbcp理.
1 C3P0
只需在hibernate.cfg.xml中加?
<property name="c3p0.min_size">5</property>
2<property name="c3p0.max_size">30</property>
3<property name="c3p0.time_out">1800</property>
4<property name="c3p0.max_statement">50</property>
5
q有在classespath中加?span class="hilite2" style="background-color: #ffffff">c3p0-0.8.4.5.jar
2 dbcp
在hibernate.cfg.xml中加?
<property name="dbcp.maxActive">100</property>
2<property name="dbcp.whenExhaustedAction">1</property>
3<property name="dbcp.maxWait">60000</property>
4<property name="dbcp.maxIdle">10</property>
5
6<property name="dbcp.ps.maxActive">100</property>
7<property name="dbcp.ps.whenExhaustedAction">1</property>
8<property name="dbcp.ps.maxWait">60000</property>
9<property name="dbcp.ps.maxIdle">10</property>
10
q有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.
3 proxool
׃数据库connection在较长时间没有访问下会自动断开q接Q导致浏览出错,增加proxool作ؓ数据库pool。它有自动连接功能?br />1)、从http://proxool.sourceforge...下蝲proxoolQ释放proxool.jar到WEB-INF/lib
2)、在hibernate.cfg.xml中增加:
<property name="hibernate.proxool.pool_alias">dbpool</property>
2<property name="hibernate.proxool.xml">proxool.xml</property>
3<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
4
3)、在与hibernate.cfg.xml同目录Qsrc根目录下Q增加proxool.xml文gQ?br />
<?xml version="1.0" encoding="utf-8"?>
2<!-- the proxool configuration can be embedded within your own application's.
3 Anything outside the "proxool" tag is ignored. -->
4<something-else-entirely>
5 <proxool>
6 <alias>dbpool</alias>
7 <!--proxool只能理p׃生的q接-->
8 <driver-url>
9 jdbc:mysql://127.0.0.1:3306/wlsh?characterEncoding=GBK&useUnicode=true&autoReconnect=true </driver-url>
10 <driver-class>com.mysql.jdbc.Driver</driver-class>
11 <driver-properties>
12 <property name="user" value="root" />
13 <property name="password" value="123456" />
14 </driver-properties>
15 <!-- proxool自动侦察各个q接状态的旉间隔(毫秒),侦察到空闲的q接马上回?时的销?/span>-->
16 <house-keeping-sleep-time>90000</house-keeping-sleep-time>
17 <!-- 最保持的I闲q接?/span>-->
18 <prototype-count>5</prototype-count>
19 <!-- 允许最大连接数,过了这个连接,再有hӞ排在队列中{候,最大的{待h数由maximum-new-connections军_-->
20 <maximum-connection-count>100</maximum-connection-count>
21 <!-- 最连接数-->
22 <minimum-connection-count>10</minimum-connection-count>
23 </proxool>
24</something-else-entirely>
25
于在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp?BUG,在某些种情会产生很多I接不能释放,所以抛弃了对dbcp的支持。至于c3p0Q有评论说它的算法不是最优的Q因为网上查资料得知Q有|友做了一个实验,在同一目中分别用了几个常用的q接池,然后试其性能Q发现c3p0占用资源比较大,效率也不高。所以,Z上述原因Qproxool不少行家推荐使用Q而且暂时来说Q是负面评h(hun)是最的一个。在三星中也有项目是用proxool的。从性能和出错率来说QproxoolE微比前两种好些。C3P0Q稳定性似乎不错,在这斚wg有很好的口碑。至于性能Q应该不是最好的Q算是中规中矩的cd?
Proxool的口似乎很好,不大见到负面的评P从官方资料上来看Q有许多有用的特性和特点Q也是许多h推荐的?br />
]]>
很显然这是一个没有找到对应的cL件的异常?br />
q有两个包commons-pool.jar和commons-dbcp-1.2.1.jar需要引入到工程中?/span>
]]>
AJAX?#8220;异步的JavaScript和XML”的羃写。这是一Ҏ(gu)术,而不是一个如Struts一L(fng)框架。ؓ什么在AJAX周围会有q么多的x?q是因ؓAJAX使web面看v来ƈ不像一个^面的文档Q而更像用h期望的如桌面应用的动态GUI应用E序。AJAX技术能在很多的览器上使用(包括IE和Netscape/Mozilla)。它已经为Microsoft(用于Outlook的web客户?和Google(用户Google Maps和Gmail)所使用?
url=url+getFormAsString(nameOfFormToPost);
if (window.XMLHttpRequest) {
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true);
} catch (e) {
alert("Server Communication Problem\n"+e);
}
req.send(null);
} else if (window.ActiveXObject) {
// IE
if (req) {
req.onreadystatechange=processStateChange;
req.open("GET", url, true);
req.send();
}
}
}
//?/strutsaction.do&name=value'q样的格?/p>
//转化每一个?br>returnString+="&"
+escape(formElements[i].name)+"="
+escape(formElements[i].value);
}
}
if (req.status == 200) { // 响应正常
spanElements =
splitTextIntoSpan(req.responseText);
replaceExistingWithNewHtml(spanElements);
alert("Problem with server response:\n "
+ req.statusText);
}
}
}
replaceExistingWithNewHtml() 是ؓprocessStateChange()使用?#8220;U有”Ҏ(gu)?/p>
(newTextElements){
for(var i=newTextElements.length-1;i>=0;--i){
indexOf("-1){
//认span元素是以下的格式
//NewContent
startNamePos=newTextElements[i].
indexOf('"')+1;
endNamePos=newTextElements[i].
indexOf('"',startNamePos);
name=newTextElements[i].
substring(startNamePos,endNamePos);
indexOf('>')+1;
content=newTextElements[i].
substring(startContentPos);
// 保文档存在该元?br>if(document.getElementById(name)){
document.getElementById(name).
innerHTML = content;
}
}
}
splitTextIntoSpan() 是ؓprocessStateChange() 使用?#8220;U有”Ҏ(gu)?br>function splitTextIntoSpan(textToSplit){
returnElements=textToSplit.
split("")
for(var i=returnElements.length-1;i>=0;--i){
indexOf("
if(spanPos>0){
subString=returnElements[i].
substring(spanPos);
returnElements[i]=subString;
}
}
return returnElements;
}
作?作?Paul Browne;pawenwen(作者的blog:http://blog.matrix.org.cn/page/pawenwen)
译文:点击
]]>
2.建立目:
建立目tomcat/webapps/TestFCKeditor.
3.FCKeditor2.4解压~?br>FCKeditor2.4解压~?整个目录FCKeditor复制到项目的根目录下Qƈ解压羃出来的文件夹fckeditor重命名ؓFCKeditor
目录l构为:tomcat/webapps/TestFCKeditor/FCKeditor
然后FCKeditor-2.3.zipQjavaQ压~包中\web\WEB-INF\lib\目录下的两个jar文g拷到目的\WEB-INF\ lib\目录下。把其中的src目录下的FCKeditor.tld文gcopy到TestFCKedit/WEB-INF/?/p>
4.合ƈweb.xml:
FCKeditor-2.3.zip压羃包中\web\WEB-INF\目录下的web.xml文g合ƈ到项目的\WEB-INF\目录下的web.xml文g中?/p>
5. 修改合ƈ后的web.xml文g
修改合ƈ后的web.xml文gQ将名ؓSimpleUploader的Servlet的enabled参数值改为trueQ?br>以允怸传功能,Connector Servlet的baseDir参数值用于设|上传文件存攄位置?br>在web.xml最后添加标{֮?
<taglib>
<taglib-uri>/TestFCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>
现在的web.xml文g没有<taglib>标签了,应该直接在jsp文g中用:<%@ taglib uri="
6. 映射: 8.删除无用文g 9.修改配置Q?br>打开/FCKeditor/fckconfig.js FCKConfig.ImageBrowserURL FCKConfig.FlashBrowserURL FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ; 10.其它 FCKConfig.TabSpaces = 0 ; 改ؓFCKConfig.TabSpaces = 1 ; 卛_~辑器域内可以用Tab键?/p>
如果你的~辑器还用在|站前台的话Q比如说用于留言本或是日记回复时Q那׃得不考虑安全了, FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField', q也是改q的把鼠标右键的“链接、图像,FLASHQ图像按?#8221;功能都去掉?/p>
扑ֈQ?FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; <%-- d文g/TestFCKeditor/show.jsp: 配置选项: AutoDetectLanguage=true/false 自动语a 解决上传q: ----------------------------------------------------------------another 我的开发环境是ubuntu7.04, pȝ默认~码是utf-8, 问题一QXML request error: Internel Server Error(500) 出现错误的地Ҏ(gu)在:Ҏ(gu)入图片,点Browse按钮的时候: 找资料:http://lamono.javaeye.com/blog/49135 FCKeditor-java没有很好的解决中文问题。需要我们修改它的源代码后重新编译打包。打包过E如下: 3?把tomcat安装目录?server/lib中的catalina-ant.jar拯?WEB-INF/lib目录 下?br>4?打开build.xml q行antddist, 可以生成新的FCKeditor-2.3.jar?/p>
问题三: 上传时新建的中文目录全部q?虽然上传到服务器上的文g名正常,但在JSP面点下载链接时文g名ؕ码导致不能正怸载?/p>
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" / 我只试了Ҏ(gu)一Q问题解冻I q样, FCKeditorl于可以正常使用了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?br>=================================================================
上面文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?br>q两个名字根据你攑֜工程中的FCKeditor文g夹名U而定。?/p>
7.修改skin文g?br>q入skin文g夹,如果你想使用fckeditor默认的这U奶黄色Q?br>那就把除了default文g夹外的另两个文g夹直接删?Q徏议不删除Q以后要用到其中的一个文件夹Q?/p>
删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文g以外的所有文Ӟ保留文g夹editor
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文?br>删除/editor/filemanager/upload/下的所有文?br>删除/editor/lang/下的除了fcklanguagemanager.jsQ我下蝲的没有这个文Ӟ, en.js, zh.js, zh-cn.js四个文g的所有文?/p>
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL{的值替换成以下内容Q?br>FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;
fckconfig.js总配|文Ӟ可用记录本打开Q修改后文件存为utf-8 ~码格式。找刎ͼ
在前台千万不要用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支持编辑域内的鼠标右键功能?/p>
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
加上几种我们常用的字?br>FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
11.d文g
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>
三种Ҏ(gu)调用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>
--%>
//JS调用方式
<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>
//FCKeditor API 调用
<%--
<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>
--%>
<%
String content = request.getParameter("content");
out.print(content);
%>
12.试
览http://localhost:8080/TestFCKeditor/test.jsp
最后注意。。不同的版本 变量名称可能不一栗请参考你使用的API文档
BaseHref="" 相对链接的基地址
ContentLangDirection="ltr/rtl" 默认文字方向
ContextMenu=字符串数l?右键菜单的内?br>CustomConfigurationsPath="" 自定义配|文件\径和名称
Debug=true/false 是否开启调试功?q样,当调用FCKDebug.Output()?会在调试H中输出内容
DefaultLanguage="" ~省语言
EditorAreaCss="" ~辑区的样式表文?br>EnableSourceXHTML=true/false 为TRUE?当由可视化界面切换到代码|,把HTML处理成XHTML
EnableXHTML=true/false 是否允许使用XHTML取代HTML
FillEmptyBlocks=true/false 使用q个功能,可以空的块U元素用I格来替?br>FontColors="" 讄昄颜色拑֏器时文字颜色列表
FontFormats="" 讄昄在文字格式列表中的命?br>FontNames="" 字体列表中的字体?br>FontSizes="" 字体大小中的字号列表
ForcePasteAsPlainText=true/false 强制_脓(chung)为纯文本
ForceSimpleAmpersand=true/false 是否不把&W号转换为XML实体
FormatIndentator="" 当在源码格式下羃q代码用的字符
FormatOutput=true/false 当输出内Ҏ(gu)是否自动格式化代?br>FormatSource=true/false 在切换到代码视图时是否自动格式化代码
FullPage=true/false 是否允许~辑整个HTML文g,q是仅允许编辑B(ti)ODY间的内容
GeckoUseSPAN=true/false 是否允许SPAN标记代替B,I,U标记
IeSpellDownloadUrl=""下蝲拼写查器的网址
ImageBrowser=true/false 是否允许览服务器功?br>ImageBrowserURL="" 览服务器时q行的URL
ImageBrowserWindowHeight="" 囑փ览器窗口高?br>ImageBrowserWindowWidth="" 囑փ览器窗口宽?br>LinkBrowser=true/false 是否允许在插入链接时览服务?br>LinkBrowserURL="" 插入链接时浏览服务器的URL
LinkBrowserWindowHeight=""链接目标览器窗口高?br>LinkBrowserWindowWidth=""链接目标览器窗口宽?br>Plugins=object 注册插g
PluginsPath="" 插g文g?br>ShowBorders=true/false 合ƈҎ(gu)
SkinPath="" 皮肤文g夹位|?br>SmileyColumns=12 囄H列?br>SmileyImages=字符数组 囄H中囄文g名数l?br>SmileyPath="" 囄文g夹\?br>SmileyWindowHeight 囄H口高度
SmileyWindowWidth 囄H口宽度
SpellChecker="ieSpell/Spellerpages" 讄拼写查器
StartupFocus=true/false 开启时FOCUS到编辑器
StylesXmlPath="" 讄定义CSS样式列表的XML文g的位|?br>TabSpaces=4 TAB键生的I格字符?br>ToolBarCanCollapse=true/false 是否允许展开/折叠工具?br>ToolbarSets=object 允许使用TOOLBAR集合
ToolbarStartExpanded=true/false 开启是TOOLBAR是否展开
UseBROnCarriageReturn=true/false 当回车时是生BR标记q是P或者DIV标记
在SimpleUploaderServlet.java和ConnectorServlet.java两个文g里找?br>DiskFileUpload upload = new DiskFileUpload();
分别在其后加?upload.setHeaderEncoding("utf-8");
q样解决了文件上传的中文q问题.
但是在控制台昄的中文内容还是ؕ?但是没关p?我们没必要去看控制台下的中文
FCKeditor2.4.2 Java版用说?br>下蝲地址以及基本配置请参考:http://hi.baidu.com/wain19/blog/item/c33fb0fab74f24dfb48f312d.html
期间Q本人遇C下面q些问题Q?/p>
XML request error: Internel Server Error(500)
拯xalan.jar和serialize.jar?WEB-INF/libQ问题解冟?/p>
1?新徏一个web工程名字为FCKeditor-java-2.3Q然后把FCKeditor-2.3-java.zip解压~后的代码拷贝到工程目录下?br>2。如果是用的Eclipse,使用快捷键Ctrl+Shift+R
在SimpleUploaderServlet.java和ConnectorServlet.java两个文g里找?br>DiskFileUpload upload = new DiskFileUpload();
分别在其后加?upload.setHeaderEncoding("utf-8");
现在如果直接q行antdQ会报下面的错误Q?br>taskdef class org.apache.catalina.ant.DeployTask cannot be found
扑ֈ
<property name="catalina.home"
修改成你自己的tomcat安装目录
<property name="catalina.home" value="/home/uniquejava/tool/tomcat5028/"/>
扑ֈ
<taskdef name="deploy"
修改成如下内?br> <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
以下Z人原?http://blog.csdn.net/nickshen3/
怎么FCKeditor2.4使用在自qweb中?br>1. 在webapps创徏test文g夏Vwebapps\test
2. 下载的FCKeditor2.3的Java包FCKeditor-2.3.zip解压~,q将web文g夹下的两个文件夹_samplesQW(xu)EB-INF拯到刚才徏立的webapps\test下。再src文g夹下的FCKeditor.tld拯到WEB-INF下?br>3. 在webapps\test\下徏立文件夹FCKeditor ?br>4. 刚才下载的 FCKeditor_2.4.3.zip 解压~,然后fckeditor文g夹下?editorQ文件夹Q?fckconfig.js,fckeditor.js,fckstyles.xml,fcktemplates.xml。四个文件拷贝到刚才建立的文件夹FCKeditor下?br>5.修改test\_samples\jsp\sample02.jsp文gQ将原来?br> <FCK:editor id="EditorDefault" basePath="/FCKeditor/"
改ؓ<FCK:editor id="EditorDefault" basePath="/test/FCKeditor/"。以后用的时候只需test换成目的名U即可?br>6.打开tomcat。测?a href="http://localhost:8080/test/_samples/jsp/sample02.jsp">Http://localhost:8080/test/_samples/jsp/sample02.jsp
另外 Q? http://www.aygfsteel.com/youxia/archive/2007/03/15/104077.html
q样子的话,当在应用中把userLoginListener加入到session中时Q就会自动把用户信息加入到缓冲池中了?br>如:
session.setAttribute("userLoginListener",userLoginListener);
Q原创,转蝲请保留文章出?a id=Editor_Edit_hlEntryLink title="view: 动态WEB应用中的用户SESSION理Ҏ(gu)" href="http://www.aygfsteel.com/bnlovebn/archive/2007/07/04/128006.html" target=_blank>http://www.aygfsteel.com/bnlovebn/archive/2007/07/04/128006.htmlQ?br>
Q。顺便把JApplet上传文g的代码也贴上?
JApplet端示?
sendRedirect()实际上是reponse.setStatus(302)的快h式,后者用于设|Http响应的状态代码?/span>
?在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
response.sendRedirect("/index.jsp");
}
׃response是jsp面中的隐含对象Q故在jsp面中可以用response.sendRedirect()直接实现重定位?br />注意Q?br />(1).使用response.sendRedirectӞ前面不能有HTML输出?br />qƈ不是l对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制Q一般在8KQ我是说JSP SERVERQ,q就意味着Q除非你关闭了cacheQ或者你使用了out.flush()强制hQ那么在使用sendRedirect之前Q有量的HTML输出也是允许的?br />(2).response.sendRedirect之后Q应该紧跟一句return;
我们已经知道response.sendRedirect是通过览器来做{向的Q所以只有在面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出q有什么意义呢Q而且有可能会因ؓ后面的输出导致{向失败?br />比较Q?br />(1).Request Dispatcher.forward()是容器中控制权的转向Q在客户端浏览器地址栏中不会昄{向后的地址Q?br />(2).response.sendRedirect()则是完全的蟩转,览器将会得到蟩转的地址Qƈ重新发送请求链接。这P从浏览器的地址栏中可以看到跌{后的链接地址?br />前者更加高效,在前者可以满需要时Q尽量用RequestDispatcher.forward()Ҏ(gu).
注:在有些情况下Q比如,需要蟩转到一个其它服务器上的资源Q则必须使用HttpServletResponse.sendRequest()Ҏ(gu)?br />
3.<jsp:forward page="" />
它的底层部分是由RequestDispatcher来实现的Q因此它带有RequestDispatcher.forward()Ҏ(gu)的印记?br />
如果?lt;jsp:forward>之前有很多输?前面的输出已使缓冲区?自动输出到客户?那么该语句将不v作用,q一点应该特别注意?br />另外要注意:它不能改变浏览器地址Q刷新的话会D重复提交
4.JSP中实现在某页面停留若q秒?自动重定向到另一面
在html文g中,下面的代码:
<meta http-equiv="refresh" content="300; url=target.jsp">
它的含义Q在5分钟之后正在览的页面将会自动变为target.htmlq一c代码中300为刷新的延迟旉Q以Uؓ单位。targer.htmlZ惌{向的目标?若ؓ本页则ؓ自动h本页?br /> ׃可知Q可以通过setHeader来实现某面停留若干U后,自动重定向到另一面?br /> 关键代码Q?br /> String content=stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
ASP面Q?br /><%response.redirect "面路径"%>
有好几种Ҏ(gu)Q?br />(1)在页面中跌{Q加入以下句子,2U后跛_test.html
<meta HTTP-EQUIV=REFRESH CONTENT='2; URL=test.html'>
(2)2U后转到l(f)y2.php
<script>setTimeout("location.href="/home/ly2.php'",2000)</script>
(3)在php中用header()函数跌{Q?br /> header("Location :http://www.xxx.com");
(4)用一个按钮,点击后蟩转:(5U按?
<input type=button value=Return onClick
="javascript:location.href('URL');">
<input type=button value=Return onClick=
"javascript:window.location.href('URL');">
<input type=button value=Return onClick
="javascript:window.location.replace('URL');">
<input type=button value=Return onClick
="javascript:window.location.assign('URL');">
<input type="button" value="Return" onClick
="window.location='URL'" /><!--q种最?->
写完后调试的q程中,老报错:java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStreamQ少了commons-io.jarQ加上后Q就ok?br />
在Controller端,可以用以下方式取得上传的文gQ可以上传多个文Ӟ
public Set getMultipartFileForForm(HttpServletRequest req) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
// CommonsMultipartFile file = (CommonsMultipartFile)
// multipartRequest.getFile("attach");//attach为form为file的id?br /> // MultipartHttpServletRequest multipartRequest =
// (MultipartHttpServletRequest)request;
Set fileset = new LinkedHashSet();
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
String key = (String) it.next();
MultipartFile file = multipartRequest.getFile(key);
if (file.getOriginalFilename().length() > 0) {
fileset.add(file);
}
}
return fileset;
}