问个弱弱的问题

xuexijava 2009-12-14 01:46:24
要实现一个弱弱的功能
即用户在文本区写入一段文本,这段文本可能很长比如是一篇论文之类,
点提交后存入数据库,现在想把用户存入的文本调用来显示在网页上
要求按用户输入时的格式显示(如换行,制表符,段落,居中显示之类,还有就是字体大小颜色了。。。)
现在问题是
1、后台数据库用哪个类型Text还有Blob或者Clob?
2、像CSDN这样的回复文本编辑器是自己写还是有这样的插件?
3、如何能按用户编辑的格式原样显示在网页上?
4、我用text类型存储用户编辑的文本
然后用个方法
public static String replaceHtml(String contents) {
contents = contents.replace("<", "<");
contents = contents.replace(">", ">");
contents = contents.replace("\"", """);
contents = contents.replace("\n", "<br/>");
contents = contents.replace(" ", " ");

return contents;
}
转换来实现换行空格等,不知道这种方法是不是太笨有没有更好的方法实现?
5、大侠们给个完美的解决方案,有代码更好!
6、回贴有分,完美解决方案的给100分
...全文
337 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaochengfu1 2009-12-16
  • 打赏
  • 举报
回复
fckeditor + textarea
bobo415 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuexijava 的回复:]
引用 1 楼 chl19871024 的回复:
1、后台数据库用哪个类型Text还有Blob或者Clob?
储存大量文本 还是 TEXT类型吧。。。。
2、像CSDN这样的回复文本编辑器是自己写还是有这样的插件?
CSDN的文本编辑器 是.NET的插件
3、如何能按用户编辑的格式原样显示在网页上?

这个 不了解。。。

我的意思是说Java中有没有类似的文本编辑器,有哪种?
按用户编辑的格式显示就是说,用户在文本编辑器中设置的文章字体颜色,换行,段落对齐方式都存入数据库,在调出来显示的时候怎么能原样显示
[/Quote]
FCKeditor 用这个最好 里面还可以添加图片等东西 好用
一般是把这个东西放到一个iframe中

xuexijava 2009-12-16
  • 打赏
  • 举报
回复
如果过滤JavaScript代码怎么写
吴佳峻 2009-12-15
  • 打赏
  • 举报
回复
SqlServer数据库用text类型,就是一个文本编辑器,fckedit是好,但是功能
太强大了,又不太好看,建议找个其他的文本编辑器,至于显示效果,如果你用
fckedit,或者其他直接生成html的在线编辑器,可以直接取出来,显示编辑时
的效果,但要过滤js脚本,如果你不用直接生成html标签的编辑器,就要在后台
用正则表达式进行替换。两种选择,随你。前面的比较简单些。
crazylaa 2009-12-15
  • 打赏
  • 举报
回复
用ckeditor+CLOB(oracle或其他的text),文本格式不用操心,ckeditor会把格式转成源码。
http://ckeditor.com/
xryy002 2009-12-15
  • 打赏
  • 举报
回复
d
xuexijava 2009-12-15
  • 打赏
  • 举报
回复
谢谢大家。。。。。。
总结下
1、数据库格式用clob,blog,text
2、用户编辑用个插件比如说fckedit,它会直接生成Html格式存入数据库,
3、显示的时候过滤下JavaScript代码。
是这样吗?
哪位能给个代码看看,先谢了
junkor 2009-12-15
  • 打赏
  • 举报
回复
编辑器CKEditor(原来叫FCKEditor),浏览器兼容性很好,而且免费(网上有教程,教你如何裁剪不需要的编辑器功能,很强的大)
也可以用飞鱼编辑器,不过老版本的貌似只支持IE
数据库用text就行了吧……
Landor2004 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 xuexijava 的回复:]
谢谢大家。。。。。。
总结下
1、数据库格式用clob,blog,text
2、用户编辑用个插件比如说fckedit,它会直接生成Html格式存入数据库,
3、显示的时候过滤下JavaScript代码。
是这样吗?
哪位能给个代码看看,先谢了
[/Quote]

1 用clob
2 直接用fckeditor
3 显示的时候,可以用jstl显示,记得设置escapeXml为true,即可进行解析并显示
或者直接用request.getAttribute("")直接进行格式化显示
小栗色兔子 2009-12-15
  • 打赏
  • 举报
回复
sorry,是text
小栗色兔子 2009-12-15
  • 打赏
  • 举报
回复
fckeditor + textarea就可以啦
xiagirl 2009-12-15
  • 打赏
  • 举报
回复
up
xuexijava 2009-12-15
  • 打赏
  • 举报
回复
再顶
mianfeidog 2009-12-14
  • 打赏
  • 举报
回复
lz你好,我做过文章发布的东西,用的FCKeditor,把自己知道的跟你说下,希望对你有帮助。
1.我的mysql数据库,保存文章用的类型是LONGTEXT。
2.像CSDN这样的文本编辑器应该用了插件,一些地方可以自定义修改的。
3.FCKeditor中会把用户编辑的格式也存进数据库,这个可以不用关心。第四个问题答案省略。
5.你可以去浪曦下个视频,上面有FCKeditor的教程。
ahhh90h 2009-12-14
  • 打赏
  • 举报
回复
学习
whut_lcy 2009-12-14
  • 打赏
  • 举报
回复
1)关于页面编辑器,可以用web office。或者在网上下载一个模版
2)关于数据库保存,clob,blog,text都可以。CLOB是专门保存文本的。建议用这个。TEXT大小有限
3)关于显示。可以用struts的标签来做
java_running 2009-12-14
  • 打赏
  • 举报
回复
关注着
java_running 2009-12-14
  • 打赏
  • 举报
回复
楼主有没有使用过 freemarker
将你显示的网页当做一个模板, 然后在模板中定义一个变量,例如: ${content} , 将内容填充到content中。

不知道这个可不可以做到lz想要的效果,值得一试....

相关代码:


package com.publish.service;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;


import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;


public class HtmlTempletExecute {


// freemarkerCfg
private Configuration configuration;

public HtmlTempletExecute(){
if(configuration==null){
configuration = new Configuration();
}
}




/**
* 生成静态文件
* @param templateFileDir 模板根路径 D:/html/templet/
* @param templateFileName 模版名称eg:(templet.html)
* @param propMap 用于处理模板的属性Object映射
* @param htmlFilePath 要生成的静态文件的路径,例如 "D:/html/2009/7/"
* @param htmlFileName 要生成的文件名,例如 "distnation.htm"
* @return
*/
public boolean buildHtml(String templateFileDir,String templateFileName,Map propMap, String htmlFilePath,String htmlFileName){
try {
configuration.setDirectoryForTemplateLoading(new File(templateFileDir)); // 加载 必须先load 模板
configuration.setDefaultEncoding("gb2312");
Template template = configuration.getTemplate(templateFileName); // 得到templete
template.setEncoding("gb2312");
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
fileExistsOrCreate(htmlFilePath); //创建生成文件目录
File htmlFile = new File(htmlFilePath + htmlFileName);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile),"gb2312"));
template.process(propMap,out);
out.flush();
return true;
} catch (TemplateException ex){
return false;
} catch (IOException e) {
return false;
}
}


public void fileExistsOrCreate(String filePath){
File file = new File(filePath);
if(!file.exists()){
file.mkdirs();
}
}
}



yuzuru 2009-12-14
  • 打赏
  • 举报
回复
建议自己先选定一个编辑器,然后试试输入的内容会被如何处理,然后在确定是否需要做替换。
自己试过了,印象才深刻。
加载更多回复(12)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧