如何将动态的jsp页面转换成静态的HTML页面 如何将动态的jsp页面转换成静态的HTML页面?而且要带参数的那种。。求教了如果能回答最好带例子。谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是说我访问webAction.do?method=list&XXX=aaa这样子。如果这个Action最后跳到product.jsp页面的话。我要想让product.jsp这个页面变成product.html里面的内容全是静态的 那个一般用Freeer这些工具。如果是sdfsd.jsp?ID=..这种生成静态页,我这里有个代码你可以参考下。import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;public class ToHtml extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=gb2312"; // Initialize global variables // Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); String test="xxx"; service(request, response,test); /*** 只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段, * 后一个提供servlet构造响应的方法。 */ } // Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void service(HttpServletRequest request, HttpServletResponse response,String test) throws ServletException, IOException { ServletContext sc = getServletContext(); String url="/article/detail_article.jsp?ID=200811300023576"; String name = "article.htm"; // 这是生成的html文件名 String pName = "C:\\article.htm"; // 生成html的完整路径 RequestDispatcher rd = sc.getRequestDispatcher(url); final ByteArrayOutputStream os = new ByteArrayOutputStream(); final ServletOutputStream stream = new ServletOutputStream() { public void write(byte[] data, int offset, int length) { os.write(data, offset, length); } public void write(int b) throws IOException { os.write(b); } }; final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os)); HttpServletResponse rep = new HttpServletResponseWrapper(response) { public ServletOutputStream getOutputStream() { return stream; } public PrintWriter getWriter() { return pw; } }; rd.include(request, rep); pw.flush(); FileOutputStream fos = new FileOutputStream(pName); // 把jsp输出的内容写到指定路径的htm文件中 os.writeTo(fos); fos.close(); response.sendRedirect(name); // 书写完毕后转向htm页面 }}直接输入Tohtml 可以将/article/detail_article.jsp?ID=200811300023576,这个文章的内容生成静态的。你可以以这个为基础写一个工具类。。把.jsp的位置和静态页的位置设置成接收来的参数。 我好像不是很能理解呢……一般带有参数的 URL 都是一些查询页面,查询条件都不一样的,这种怎么去生成静态页面啊? 哪有那么难理解的呀。。SEO优化。 你是想要网页静态化还是URL静态化啊? 知道是 SEO 优化啊,但是已经有 JSP 页面了,为什么再要去生成 HTML 啊?这不是多此一举么?拿 CSDN 的帖子来说,在发帖的时候就生成了一个 HTML 页面,我想 CSDN 并不是先生成 aspx 页面,再拿这个 aspx 去生成 HTML 的! 你已经发送请求到Action了,要进行查询,肯定需要动态生成页面,天知道你的查询条件是什么。所谓静态,就像这个:<a href="http://topic.csdn.net/u/20081230/12/55892829-a1e7-4820-b975-a93625c36d07.html">你的帖子</a>一篇篇帖子你可以给他生成静态页面放着,看到的连接直接就是.html的,不用再通过Id去数据库查,该静态页面已经存在了。 LZ的意思可能是想让后缀为HTML。改改配置就行了。 JAVA 连接SQL2005 问题 关于获取外键的name web工程找不到资源文件的问题 struts2 jessionid问题 JSP弹出页面问题 帮我看看啊,各位高手,为什么老是没有数据出来啊。但是放在java编辑器里面运行就有数据啊,这到底是为什么呢?急 一个Jsp实现数据库插入数据的问题 请教用户注册的问题 关于javabean 这样能不能使外部用户访问到我的tomcat? eclipse 如何编译javabean Servlet action is currently unavailable的错误
这样子。如果这个Action最后跳到product.jsp页面的话。我要想让product.jsp这个页面变成product.html里面的内容全是静态的
如果是sdfsd.jsp?ID=..这种生成静态页,我这里有个代码你可以参考下。
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;public class ToHtml extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=gb2312";
// Initialize global variables
// Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
String test="xxx";
service(request, response,test);
/**
* 只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,
* 后一个提供servlet构造响应的方法。
*/
}
// Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
public void service(HttpServletRequest request, HttpServletResponse response,String test)
throws ServletException, IOException {
ServletContext sc = getServletContext();
String url="/article/detail_article.jsp?ID=200811300023576";
String name = "article.htm"; // 这是生成的html文件名
String pName = "C:\\article.htm"; // 生成html的完整路径
RequestDispatcher rd = sc.getRequestDispatcher(url);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream() {
public void write(byte[] data, int offset, int length) {
os.write(data, offset, length);
}
public void write(int b) throws IOException {
os.write(b);
}
};
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
HttpServletResponse rep = new HttpServletResponseWrapper(response) {
public ServletOutputStream getOutputStream() {
return stream;
}
public PrintWriter getWriter() {
return pw;
}
};
rd.include(request, rep);
pw.flush();
FileOutputStream fos = new FileOutputStream(pName); // 把jsp输出的内容写到指定路径的htm文件中
os.writeTo(fos);
fos.close();
response.sendRedirect(name); // 书写完毕后转向htm页面
}
}
直接输入Tohtml 可以将/article/detail_article.jsp?ID=200811300023576,这个文章的内容生成静态的。
你可以以这个为基础写一个工具类。。把.jsp的位置和静态页的位置设置成接收来的参数。
你已经发送请求到Action了,要进行查询,肯定需要动态生成页面,天知道你的查询条件是什么。
所谓静态,就像这个:<a href="http://topic.csdn.net/u/20081230/12/55892829-a1e7-4820-b975-a93625c36d07.html">你的帖子</a>一篇篇帖子你可以给他生成静态页面放着,看到的连接直接就是.html的,不用再通过Id去数据库查,该静态页面已经存在了。
改改配置就行了。