struts 的应用
ckediteor 在配置好struts的基础上,再进行配置;关于struts2的配置这里就不在进行重复了。
https://cksource.com/ckfinder/download;
http://ckeditor.com/download // 这里有三个不同的版本可以使用;
struts2+ckeditor + ckfinder
ckeditor_4.5.3_full.zip
ckfinder_java_2.4.zip
CKEditor 3.6.6.2 for Java
2、拷贝ckeditor
ckeditor_4.5.3_full.zip /ckeditor
3、拷贝ckfinder
CKFinderJava-2.4.war\ckfinder
拷贝在WebRoot路径;
4、引入jar;
首先引的是ckfinder的jar包。(1)CKFinderJava-2.4.war\WEB-INF\lib 下;
去除两个commons jar;
(2)ckeditor-java-3.6.6.2.war\WEB-INF\lib 下的ckeditor-java-core-3.5.3.jar
5、引入config.xml修改
CKFinderJava-2.4.war\WEB-INF
enabled = true
<baseDir></baseDir>
<baseURL>/ckscxz/userfiles/</baseURL>
6、修改web.xml
配置CKEditor的servlet等信息
struts2拦截 /* ,ckeditor的servlet优先被struts2拦截
二种方式:
1、修改struts2拦截设置 将/* 修改为*.action或*.do
2、自定义CKeditor的过滤器,让它来继承Struts2的过滤器FilterDispatcher
获得完整的http url的地址,然后判断URL地址中是否包含CKEditor的servlet
拦截规则"/ckfinder/core/connector/java /*/",
若包含,struts2就不拦截该URL请求,而直接转发,交给CKEditor的servlet来处理;
若不包含,则拦截器拦截该URL请求,由struts2来处理
7、ckeditor config.js配置
config.language = "zh-cn" ;
config.image_previewText = ' ';
config.filebrowserBrowseUrl = '/ckscxz/ckfinder/ckfinder.html' ;
config.filebrowserImageBrowseUrl = '/ckscxz/ckfinder/ckfinder.html?type=Images' ;
config.filebrowserFlashBrowseUrl = '/ckscxz/ckfinder/ckfinder.html?type=Flash' ;
config.filebrowserUploadUrl = '/ckscxz/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Files' ;
config.filebrowserImageUploadUrl = '/ckscxz/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Images' ;
config.filebrowserFlashUploadUrl = '/ckscxz/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Flash' ;
config.filebrowserWindowWidth = '1000';
config.filebrowserWindowHeight = '700';
---------------关于破解------------------
--图片预览文字替换ckeditor/config.js
config.image_previewText = " ";
-----------------------------------
--ckfinder/ckfinder.js
--浏览服务器左下角信息不展示 下面代码注释
if (!D) this.dV().getChild(0).appendHtml(A || B || y != 4 ? t: u + "\x3c\142\x3e" + k.htmlEncode(a.ed) + "\x3c\057\142\x3e\x3c\x2f\x64\151\166\x3e");
-----------------------------------
--隐藏版权信息
找到<h4 class='message_content'>
改为<h4 style='display:none;' class='message_content'>
-----------------------------------
--避免上传文件乱码,将上传文件名以时间戳命名
解决办法:修改源码FileUploadCommand.class getFileItemName方法
这里讲下struts接收参数的问题;
1.使用Action的属性接收参数;
2.使用DOmainMoedl接收参数;
3.使用ModelDriven接收参数;
String[] s =filepath.split("\\\\"); 用字符串分割地址是这样子的;
regex为\\\\,因为在java中\\表示一个\,而regex中\\也表示\,所以当\\\\解析成regex的时候为\\。
struts 访问Servlet的API
在Servlet里我们有两个方法doget和dopost方法;
方法里有两个参数;
在Servlet里我们可以直接调用这两个参数;也就是活是存在的;
再看下struts2的Action的execute方法;
public String execute() throws Exception{ return SUCCESS; }
struts是没有提供任何servlet的api的;但是提供了三种方式去访问servlet API;
01. ActionContext;
02.实现 接口;
03.ServletActionContext;