由于原有模板是以.htm方式存在的,
在转换成jsp方式时,对其中很多通用的代码,可以通过替换的方式直接转换为jstl语法的.
步骤如下:
1.首先将所有的htm文件名替换成jsp,
在命令行下运行 rename *.htm *.jsp即可.
2.将bbs\forumdata\cache\style_1.php中的css变量TABLEWIDTH等,
替换成类似${crtStyles['TABLEWIDTH']}的jstl语法.
全部只能手工替换
3.将*.jsp中的{lang forum_favorite}等替换成类似 <fmt:message key="faq" bundle="${forum_favorite}"/>
使用正则表达式进行替换:
editplus中的 查找内容为: {lang (.+)},替换内容为:<fmt:message key="faq" bundle="${\1}"/>
Jbuilder中的查找内容为 \{lang (.+)\},Pattern为:Regular Expressions,
替换内容为:(暂时未写出来,打算写程序进行替换操作)
用java程序替换的核心代码为:
//替换样式变量
content = content.replaceAll("FORMHASH", "formhash");
//替换样式变量 ${crtStyle['TABLEWIDTH']}
content = content.replaceAll("\\{([A-Z0-9]+)\\}", "\\${crtStyle\\['$1'\\]}");
//替换国际化定义
//content = content.replaceAll("\\{lang (.+?)\\}",
// "<fmt:message key=\"$1\" bundle=\"\\$\\{templates\\}\"/>");
//对标签属性里的值暂时不替换
content = content.replaceAll("([^\"])\\{lang (.+?)\\}",
"$1<fmt:message key=\"$2\" bundle=\"\\$\\{templates\\}\"/>");
//替换单层的属性访问
content = content.replaceAll("\\$([a-z]+?)\\[([a-z]+?)\\]",
"\\$\\{$1\\['$2'\\]\\}");
//替换标题部分的声明
content = content.replaceAll("\\{template header\\}",
"<%@page pageEncoding=\"UTF-8\" " +
"contentType=\"text/html;" +
" charset=UTF-8\"%>\n"
+ "<%@include file=\"/WEB-INF/" +
"inc/taglibs.jspf\"%>\n" +
"<jsp:include flush=\"true\" " +
"page=\"header.jsp\"/>\n");
////替换底部部分的声明
content = content.replaceAll("\\{template footer\\}",
"\n<jsp:include flush=\"true\" " +
"page=\"footer.jsp\"/>");
//替换其它引用声明
content = content.replaceAll("\\{template (.+?)\\}",
"\n<jsp:include flush=\"true\" " +
"page=\"$1.jsp\"/>");
//替换url定义
content = content.replaceAll("\\$indexname", "\\${settings.indexname}");
//替换网站名字
content = content.replaceAll("\\$bbname", "\\${settings.bbname}");
//替换导航标签
content = content.replaceAll("\\$navigation", "\\${navigation}");
//替换一些变量
//content = content.replaceAll("\\$pid", "\\${pid}");
content = content.replaceAll("\\$([a-z_]+)(\"|<|\\))", "\\${$1}$2");