大家谈谈网站生成静态html页?
很多网站,像 阿里巴巴(http://china.alibaba.com/) 等等,网站里的所有数据页都是静态html 的页,最起码链接(.html)是这样的,是不是做的假象就不清楚了, 那如果都真的是静态页的话,那都是怎么生成的呢,大家谈谈,也可以指教指教~~
[解决办法]
正好在关注门户技术,留心一下。
[解决办法]
我也在关注这个问题
帮你顶顶
[解决办法]
呵呵 这个嘛 是你项目做的不多吧 我们原来用的都是jsp页面现在都要静态HTML 这样方便搜素引擎抓取页面信息 像google、百度这样的搜索网站好抓取 用html转换的 工具嘛网上都有
[解决办法]
这个确实是可以着重的研究一下
[解决办法]
4l不说就不说,说还不说清楚。。bs一个
[解决办法]
应该是转化工具转化的
[解决办法]
晕 我们是手改 公司里用的是工具转换的
[解决办法]
帮顶
有高手知道就分享下
[解决办法]
如果要是让我实现的话就只能用File写文件了 , 呵呵 , 但静态页生成肯定是有工具的 , 期待高手。
[解决办法]
是假象吧伪静态
[解决办法]
URLWrittern
可能是伪静态的哦。
不过如果要生成静态的应该也没问题啊,不过我还没想到一个更好的办法。
[解决办法]
我觉得这个首先得有一个模板的概念吧。
然后通过后台程序填充模板应该就可以了吧!
具体的实现细节不是很清楚。
[解决办法]
用模板做了
没什么复杂
或者
url重写
[解决办法]
html里面用了自己写的标签就可以实现了!
[解决办法]
LZ可以研究一下cms
[解决办法]
真正的高手呢?
快出来给指点下吧。
让在迷雾中的人们看到一丝光明。
[解决办法]
大型门户正在跑的网站服务器大多数并不且备动态功能. 有统一的发布系统,在内网操作.大多是在预览审核后才同步到外部服务器的。
象搜索什么的,都有自己独立的服务器.
与上面有冲突有,比如,BBS,blog的,这就是靠服务器数量、程序取胜了.然后是有很多编辑在盯首着。
通过上面,应该明白小型网站与大型门户网站相比,不同的不止是的程序。而是很多很多因素。
生成静态页面,这样的技术都一样的。
[解决办法]
如何将jsp动态网页转换成静态页面[转]2008年01月05日 星期六 21:42如果我可以将jsp动态网页转换成静态页面,那么访问的时候就不需要频繁的访问数据库了。
jsp 显示内容缓存技巧
前段时间做自己社区的论坛,在jive 的基础上做一个页面显示所有论坛的帖子,可以称
之为总版,模仿forum 类的接口做个superforum 并且实现cachable,不过因为这个页面
刷新量比较大,虽然被cache 了,我还是想办法进行页面的缓存,感觉用jsp 产生的html
静态内容当缓存,页面访问速度应该有所提高。
首先想到的一种办法,是采用java.net 的urlconnection 把服务器上的jsp 抓过来做缓
存,不过我觉得这样做太见外了,自己服务器上的东西,为何要用http 去访问.于是想另外一
个办法,把jsp 的out 对象的输出控制到自己希望的地方.比如输出到静态文件,又或者保存
成全局的字符串变量.这样的话,浏览就不需要执行jsp,只是浏览该html 了.仅仅在数据有更
新的时候进行一次update 操作,把jsp 重新输出为html.
我觉得,浏览事件比数据插入或更新发生的次数多的时候.不妨试试这个办法来提高页
面访问速度.
整件事情有点像把jsp 当作模板,生成静态的html 页面.
将如下代码写入web-xml
<filter>
<filter-name>filecapturefilter</filter-name>
<filter-class>com.junjing.filter.filecapturefilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filecapturefilter</filter-name>
<url-pattern>/latest.jsp</url-pattern>
</filter-mapping>
latest.jsp 是我要cache 的页面
java 源码代码如下
/** * start file filecapturefilter.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class filecapturefilter implements filter
{
private string protdirpath;
public void init(filterconfig filterconfig)
throws servletexception
{
protdirpath = filterconfig.getservletcontext().getrealpath("/");
}
public void dofilter(servletrequest request,servletresponse response,filterchain
chain)
throws ioexception, servletexception
{
string filename = protdirpath + "forum/lastest.html";
printwriter out = response.getwriter();
filecaptureresponsewrapper responsewrapper = new
filecaptureresponsewrapper((httpservletresponse)response);
chain.dofilter(request, responsewrapper);
// fill responsewrapper up
string html = responsewrapper.tostring();
//得到的html 页面结果字符串
// responsewrapper.writefile(filename);
// dump the contents 写成html 文件,也可以保存在内存
//responsewrapper.writeresponse( out );
// back to browser
//responsewrapper.sendredirect("lastestthread.jsp");
}
public void destroy() {}
}
/** * end file filecapturefilter.java */
/** * start file filecaptureresponsewrapper.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class filecaptureresponsewrapper
extends httpservletresponsewrapper
{
private chararraywriter output;
public string tostring()
{
return output.tostring();
}
public filecaptureresponsewrapper(httpservletresponse response)
{
super(response);
output = new chararraywriter();
}
public printwriter getwriter()
{
return new printwriter(output);
}
public void writefile(string filename)
throws ioexception
{
filewriter fw = new filewriter(filename);
fw.write( output.tochararray() );
fw.close();
}
public void writeresponse(printwriter out)
{
out.print( output.tochararray() );
}
}
/** * end file filecaptureresponsewrapper.java */
附件源代码
不过采用resin 服务器的话,以上代码会失效。因为resin 没有实现getwriter 方法,而
是采用getoutputstream 取而代之,所以必须修改些代码来迎合resin 运行环境:
/** * start file filecaptureresponsewrapper.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class filecaptureresponsewrapper
extends httpservletresponsewrapper
{
private chararraywriter output;
public string tostring()
{
return output.tostring();
}
public filecaptureresponsewrapper(httpservletresponse response)
{
super(response);
output = new chararraywriter();
}
public printwriter getwriter()
{
return new printwriter(output);
}
public void writefile(string filename)
throws ioexception
{
filewriter fw = new filewriter(filename);
fw.write( output.tostring());
fw.close();
}
public servletoutputstream getoutputstream()
throws java.io.ioexception
{
return new servletoutputstream();
}
public void write(int b)
throws ioexception
{
output.write(b);
}
public void write(byte b[])
throws ioexception
{
output.write(new string(b,"gbk"));
}
public void write(byte b[], int off, int len)
throws ioexception
{
output.write(new string(b, off, len));
}
};
}
public void writeresponse(printwriter out)
{
out.print(output.tochararray());
}
}
/** * end file filecaptureresponsewrapper.java */
.
转自:http://www.comsonic.com.cn/software/p28/A283410.shtml
[解决办法]
不知道你有没有发现,这些静态的页面都是统一的模版,只是里面的内容不一样罢了。我做的时候是首先上传一个新闻,然后把这个新闻的内容加载到模版中。生成html。然后在连接这个html就可以了!
[解决办法]
此群是一个 java Flex 技术群,如有想在知识方面想共同进步的请加入,长期不发言者 将会被清楚
群号:90551956
希望大家都能带着知识和问题进来
[解决办法]
如果要是让我实现的话就只能用File写文件了 , 呵呵 , 但静态页生成肯定是有工具的 , 期待高手。
[解决办法]
freemarker
[解决办法]
没什么好稀奇...
...所有的动态页面,都是要被变成静态html,才能访问到的...
[解决办法]
查看下这个网页的源代码文件,不就什么都知道了...
[解决办法]
有些是伪静态的 rurlrewrite 看上去是静态的
也可以直接生成静态页面 比如用freemarker velocity
[解决办法]
关注下,期待 高手。。。。。。
[解决办法]
我觉得我绝对不是静态的,有种办法可以实现上面的说法,实质上页面时动态的,但是现实给客户端的是htm
[解决办法]
struts2.x+freemarker生成html
下载实例 : http://www.lifeispig.cn/article.asp?id=165
[解决办法]
http://topic.csdn.net/u/20090613/12/30302a5d-33c0-4ce4-b9e3-cd503dbafac1.html
说实话,这里面的东西我看不懂!!!
[解决办法]
我做过网站,其实很多门户网站为了提高搜索引擎的排名,会倾向于把页面做成HTML页,这里用到了伪静态技术,就是把动态页映射到一个HTML的URL,不难实现。
[解决办法]
自己想的一个伪静态方法:
增加过滤器,过滤所有 html ,将被请求的 HTML 路径修改为对应的 JSP
(应该也可以指向对应的 action,未测试)
经测试,
用 request.getParamater getAttribute, session.getAttribute 等,同样可以得到传递的参数
另外,因为是服务器端跳转,所以浏览器中的路径看到的是 *.html
关键代码如下:
- Java code
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)arg0; HttpServletResponse response = (HttpServletResponse)arg1; String uri = request.getRequestURI(); String projectPath = request.getContextPath(); if(uri.endsWith(".html")){ uri = uri.replaceAll("^\\" + projectPath, "");// 去掉工程路径 uri = uri.replaceAll("\\.html$", ".jsp");// 修改被请求页为对应的JSP request.setAttribute("attr", "abc"); request.getSession().setAttribute("attr2", "def"); request.getRequestDispatcher(uri).forward(arg0, arg1); return; } arg2.doFilter(arg0, arg1); }
------解决方案--------------------
[解决办法]
urlrewrite 伪静态?
[解决办法]
[解决办法]
freemarker 写好模板,后台装载数据,生成静态页面,
不过要实时生成,估计就要个filter拦截数据了
[解决办法]
真所谓的是众说纷纭啦!
[解决办法]
urlrewrite 是一种解决方法,不要在浏览器看到的是什么结尾的就是什么程序。这个都是可以配置的。我个人建义中小的网站用urlrewrite可以的,加个缓存。一般都行,例如apache配置转发。这样就不用java还用拦截,这样比urlrewrite效果好点。处理静态nginx是目前相对最好的163,sina都是用的这个。以前开发个相对访问还可以的网站,我们的首页是生成静态的。一个小时生成一次,为什么喜欢。htm .html.因为爬虫喜欢,做成HTML页,搜索引擎爬你的页面会多点。
[解决办法]
像论坛这类交互性强的 个人觉得不要生成静态好。
一般静态化都是有个轮询器,隔一段时间执行
[解决办法]
看到那种网页一般都有些有规律的分隔符号吗(比如"/"号)?如果有,一般是伪静态,一种搜索优化(SEO)方法。那些隔开的就是参数。http服务器大都有此功能,写个正则替换罢了。
不过隔一段时间,内容不太会变的时候,一般会调用静态化程序,生成正的html文件。
[解决办法]
按照各位高手的说法就是伪静态,用转化工具实现的洛
[解决办法]
- Java code
<!--页头Begin--><div class="top cbody"><div class="toplogo"><a href=""><img src="${root}/default/article/img/logo.gif" alt="" /></a></div><div class="topbanner"> </div><div class="toplink"><ul> <li><a href="#">高级搜索</a></li> <li><a href="javascript:void(0);" onclick="javascript:window.external.AddFavorite('http://www.JEECMS.com','JEECMS - 国内专业、开源、免费的JAVA (JSP)版网站管理系统');">收藏本站</a></li> <li><a href="/">联系我们</a></li> <li><a href="javascript:void(0);" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage(location.href)">设为首页</a></li></ul></div></div><!--页头End--> <!--导航栏Begin--><div class="topmenu cbody1"><ul> <li class="thisclass"><a href="${base}/">首 页</a> [@cms.ChnlList id='' inner='1';c]</li> <li class="thisclass"><a href="${c.url}">${c.name}</a> [/@cms.ChnlList]</li> <li class="thisclass"><a href="${base}/jeecms/Guestbook.jspx" target="_blank">留言板</a></li></ul></div><!--导航栏End-->