浏览 4273 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-09-27
1.首页现在是jsp文件,布局样式都已固定下来了,用freemarker制作模板的话这外些部的css,js之类的文件还可不可以直接引用了? 2.页面使用了include标签 包含其他jsp文件,使用模板生成html时候这些引用的文件可以生成出来么? 3.原页面数据部分ognl标签使用的比较多,freemarker模板里边可以继续使用吧。 4.生成的html文件需要定时更新一次,用什么方法做比较好呢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-09-27
用urlrewriter 不更快更省事
|
|
返回顶楼 | |
发表时间:2012-09-27
1.可以
2.不可以 3.可以(rootMap的key,value保持与原来的名称一致就行了) 4.Quartz |
|
返回顶楼 | |
发表时间:2012-09-27
这个简单一个filter搞定,不要把那么大一个东西加进来就为解决一个首页静态化。
filter拦截首页请求验证是否已生成静态化(就是判断首页HTML文件存不存在),如果没有就生成静态页面(其实就是简单的将响应保存到HTML文件) 可以加个缓存变量控制静态页失效时间 这是思路具体实现坛子里都有,多找找 |
|
返回顶楼 | |
发表时间:2012-09-27
最后修改:2012-09-27
1,那些js css的可以直接引用。
2,那些 jsp也要用freemarker页面 才可以include 3,一样可以使用 不过一般都是用freemarker的 4,定时更新, 这种情况可能不一定 可能即时的,你可以用jms activemq中间件 后台发送消息 告诉前台要生成页面了。 |
|
返回顶楼 | |
发表时间:2012-09-27
js, css等完全不用改变, 模板页就是个普通的HTML页, 然后把需要输出的数据放到一个Map中, 填充到模板即可, 我现在也在使用freemarker生成静态页
你可以使用Quartz定时更新首页, 很方便 |
|
返回顶楼 | |
发表时间:2012-09-28
最后修改:2012-09-28
LZ为何要生成静态页面呢,你可以让Freemarker解析模板,然后生成HTML的字符串,填充到主页面的DIV中,这样就不用考虑每次都要刷新HTML页面了,写个方法给你看哈:
/** * 这个方法就是初始化模板引擎的,传入模板名称,他会解析模板,并最终渲染好,返回字符串 * @param templateName 传入模板文件名称 * @param templatePath 模板文件的绝对路径 * @param map map绑定的变量 * @param context Servlet Context * @return 返回渲染的HTML字符串 * @throws IOException * @throws TemplateException */ public String initialize(String templateName, String templatePath, Map<String, Object> map, ServletContext context) throws IOException, TemplateException { Configuration config = new Configuration(); config.setServletContextForTemplateLoading(context, templatePath); config.setEncoding(Locale.getDefault(), "UTF-8"); Template template = config.getTemplate(templateName); template.setEncoding("UTF-8"); StringWriter result = new StringWriter(); template.process(map, result); return result.toString(); } 然后,你在表现层的Action里面可以这么写: // 初始化一个Map对象,将变量绑定到Map中 Map<String, Object> map = new HashMap<String, Object>(); map.put("变量a", 变量a); map.put("变量b", 变量b); ...... // String result = FreemarkerUtil.initialize("template.htm", "/root/template_path", map, request.getSession().getServletContext()); response.getWriter().write(result); // 然后你在JSP页面指定div位置请求这个Action就可以了。 |
|
返回顶楼 | |
发表时间:2012-09-28
只有首页就直接URL访问首页的动态地址将网页内容保存为html就可以了。
首页复杂一点Freemarker要做模板麻烦死了。我反正是懒得写。 |
|
返回顶楼 | |
发表时间:2012-09-28
public static void main(String[] args) { try { URL url = new URL("http://www.kktrip.com/"); URLConnection con = url.openConnection(); InputStream is = con.getInputStream(); byte[] bs = new byte[1024]; int len; OutputStream os = new FileOutputStream("C:\\index.html"); while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } os.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("完毕"); } } 代码是写着玩的,别当真。 |
|
返回顶楼 | |
发表时间:2012-09-30
yanxiansheng 写道 public static void main(String[] args) { try { URL url = new URL("http://www.kktrip.com/"); URLConnection con = url.openConnection(); InputStream is = con.getInputStream(); byte[] bs = new byte[1024]; int len; OutputStream os = new FileOutputStream("C:\\index.html"); while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } os.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("完毕"); } } 代码是写着玩的,别当真。 正准备回复来着,发现楼上的已经把我的想法连着“代码”都弄了。 写个小程序去抓网页,然后存下来,就完成“静态”要求了。至于更新么,也不用复杂,用windows的计划任务,xUnix的crontab定时跑一下就行了。 |
|
返回顶楼 | |