类似网易、新浪新闻模板页面
如题 如http://news.163.com/08/0513/20/4BRO7OA80001124J.html 这个页面
这样一个新闻模板怎么做呢?大家讨论下
------解决方案--------------------
以下来源个人经历
使用freemarker模板
1、创建作为模板的html页,在模板中设置要显示的样式,数据的位置等
2、配置模板对应的信息(路径,文件,文件类型等)
<bean id="GenerateNewsReview" parent="GenerateFileBean">
<property name="templateJSP"
value="music/news/newsreview.html" />
<property name="generateFile"
value="/slice/static/public/music/news/newreview.jsp" />
</bean>
上面的例子是通过newsreview.html生成newreview.jsp,这里没有格式的限制,都可以相互生成,xml都可以。
3、创建action或servlet,使用freemarker。
freemarker可以根据传入的数据对象和模板文件返回生成之后的文件流
将生成好的文件流写入要生成文件里.
总之,模板的创建的方法有很多。原理都一样,那就是把模板中要显示“可变数据”的位置确定,在生成页面时将位置用真实数据替代,然后写到要生的文件中。
这就是说,没有文件类型的限制。jsp=>html,jsp=>jsp,html=>html,html=>jsp,html=>xml等都可以,但注意的是如果要生成的页面使用了javaBean等
哪么生成页面一定是jsp,xhtml等,而不是html.这是一定要注意的
下面给了一个使用freemarker的代码,注意是通过给定的模板文件和数据返回生成好了的文件流
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public String getContentFromFreeMarker(String templateFile, Map map)
{
FreeMarkerConfig cfg = (FreeMarkerConfig)ApplicationFactory.getContext().getBean(
"freemarkerConfig");
Configuration config = cfg.getConfiguration();
StringWriter result = new StringWriter();
try
{
Template template = config.getTemplate(templateFile);
template.process(map, result);
result.flush();
}
catch(
IOException ex)
{
}
catch(TemplateException ex1)
{
}
return result.toString();
}
我的工程使用了spring
freemarker使用了org.springframework.web.servlet.view.freemarker包