牛骨文教育服务平台(让学习变的简单)
博文笔记

new一个对象,构造函数会执行可以理解,为什么除了构造函数以外的函数也可以执行?

创建时间:2016-11-17 投稿人: 浏览次数:1637

如将相关内容输出到一个word文件中,代码如下(jfinal):

public static void main(String args[]) throws JsonProcessingException, IOException {

Map map = new HashMap();

map.put(key,value);
render(new OutWordRender("hello.vm", "要输出的信息表", map));// 输出word表,hello.vm是要输出的模板

}

public class OutWordRender extends Render {
String fileName = "";
String outPutFileName = "";
Map map=new HashMap();
static String TEMPLATE_PATH = "/WEB-INF/template/";


public OutWordRender(String fileName, String outPutFileName,Map map) {
this.fileName = fileName;
this.outPutFileName = outPutFileName;
this.map=map;
}


@Override
public void render() {
// TODO Auto-generated method stub
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("application/vnd.ms-word");
try {
outPutFileName = new String(outPutFileName.getBytes("gb2312"), "iso8859-1") + ".doc";
String filePath = request.getSession().getServletContext().getRealPath(TEMPLATE_PATH);
response.reset();
response.setHeader("Content-disposition", "attachment;" + "filename=" + outPutFileName);
ServletOutputStream out = response.getOutputStream();
OutputStreamWriter ow = new OutputStreamWriter(out, "UTF-8");
OutXMLToWord.generateFile(filePath, fileName, map, ow);
ow.flush();
ow.close();
ow = null;
} catch (Exception e) {
//System.out.println(e + "Word 文档生成失败!");
}
}


}

jfinal中的render就是渲染的意思。可以将运行的结果,渲染为网页送给brower,也可以渲染一些静态内容。http://blog.csdn.net/u010087886/article/details/51006713


在执行main函数的时候,由于new OutWordRender,所以OutWordRender类的构造函数执行可以理解,为什么OutWordRender类的render函数可以执行?

因为render是Render类的自动执行的方法,即如果new Render,则Render类的render方法就会执行。

OutWordRender继承了Render类,并重写了render方法,所以OutWordRender类的render方法也会自动执行。



==总结

1B继承类A,并重写A的自动执行方法FunXX,则new B的时候,FunXX也会自动执行。




2什么是渲染?就是将java代码运行结果,显式的输出出来(形式有:word供下载、html页面供浏览器显示等),就是渲染。




声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。