logo网站设计成都建网站
成都网页设计网站制作建网站
首页 | 网站报价中心 | 网站优化推广 | 网页设计技术 | 行业资讯 | 域名主机常识 | 经典案例欣赏 | 网站建设方案 | 行业网特点 | 常见问题 | 美工设计
您当前的位置:成都网站设计工作室 -> 文章中心 -> 网站建设 -> 网站界面设计美工设计 -> 文章内容  
网站建设套餐

企业模板型 680元
服务内容
标准个人系列Ⅰ型+.国际顶级域名
主机空间:100Masp动态空间
精美页面:模板建站或20页以内静态页面
网站模块:公司介绍、新闻发布、产品展示、在线订购、留言版、人才招聘、计数器
网站特点:网站风格简洁明快,符合中小企业形象要求。功能紧凑实用,可

功能建站型 1480元-1980元
服务内容:200M/ASP空间,企业邮局(5个邮箱自由分配),.COM/.NET/.CN国际域名一个
制作形式:由我们专业技术和美工为您个性设计,使您的网站独一无二!架设栏目,添加非后台更新内,Access数据库,ASP程序,独立空间,强大后台,支持200-500人同时在线
网站功能:公司介绍,公司动态新闻,公司图片栏目,公司产品库,产品在线订购,会员注册功能,公司招聘,客户留言,联系我们,等栏目;提供强大后台可由客户随意制订,修改,添加,删除

高级建站型 2380元-4260元
服务内容:300M-500/ASP空间,企业邮局(5-30个邮箱自由分配), .COM/.NET/.CN/.COM.CN/.NET.CN国际域名一个,SQL(或Access数据库)制作专业高速安全的ASP或ASP.net程序,独立空间,强大后台,支持500-1000人同时在线
简单说明:(房产,家教,大型文章系统,房地产客户信息管理系统,旅游机票,火车票等预定系统,票务在线系统 ,网络办公OA系统 ,CRM客户资源管理系统,企业进销存系统,客户售后服务管理系统跨国公司产品展示系统,政府采购系统,学校考试系统--填空题考试系统,大型公司系统,中型型公司或个人门户型网站等)

开发定制型 4000元以上 (根据要求定制,价格面议)
服务内容:1024M-20G/ASP空间,企业邮局(5-50个邮箱自由分配), .COM/.NET/.CN/.COM.CN/.NET.CN国际域名一个,SQL(或Access数据库)制作专业高速安全的ASP或ASP.net程序,独立空间,强大后台,支持1000-10000人同时在线
简单说明:(大型房产,大型公司动画网站,英文网络办公系统,教育系统办公自动化系统,多功能信息办公平台,电子政务系统,公司或个人大型门户型网站,大型类似阿里巴巴商业贸


热门文章
· [组图] 5个红色调CSS酷站欣...
· 如何用CSS制作横向菜...
· [组图] 韩国楼盘房地产网站...
· [组图] 黑色调网站欣赏
· [组图] 服装网站欣赏
· [组图] flash案例
· [图文] 房产网站
· [图文] 红黑色调网站界面
· 成都私人建站,个人...
· [组图] 蓝色经典
生成静态页面解决方案
作者:佚名  来源:本站整理    发布人:admin

减小字体 增大字体

 

  相信很多人都希望自己的页面越快越好,最好是能静态的,提高客户访问速度。也便于搜索引擎搜索。所以,就希望我们的动态读取数据库的页面,尽可能的生成静态页面。一下系列文章,介绍一下个人的解决方案。

     本系列将介绍个人的一种方法,在不改变原来jsp文件的基础上,只需要加入少量的代码,就让你的新闻发布系统,很容易就完全变成静态的页面。

      本文假设你是用java开发的web动态页面。

     第一步,加入servlet.代码如下。

public class ToHtml extends HttpServlet {

 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String url = "";
  String name = "";

  ServletContext sc = getServletContext();

  String file_name = request.getParameter("file_name");// 你要访问的jsp文件名,如index,不包括扩展名

  // 则你访问这个servlet时加参数.http://wqz520520.blogbus.com

  url = "/" + file_name + ".jsf";// 你要生成的页面的文件名。我的扩展名为jsf .

  name = ConfConstants.CONTEXT_PATH+"\\"+ file_name + ".htm";// 这是生成的html文件名,如index.htm.文件名字与源文件名相同。扩展名为htm

//ConfConstants.CONTEXT_PATH为你的应用的上下文路径。

  RequestDispatcher rd = sc.getRequestDispatcher(url);

  final ByteArrayOutputStream ōs = 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(name); // 把jsp输出的内容写到xxx.htm
  os.writeTo(fos);
  fos.close();
  PrintWriter ōut = response.getWriter();
  out
    .print("<p align=center><font size=3 color=red>页面已经成功生成!single<br>http://www.agilejava.org/space/?233</font></p>");
 }
}

第二步、配置你的web.xml

 <servlet>
  <servlet-name>toHtml</servlet-name>
  <servlet-class>mj.util.html.ToHtml</servlet-class>//你的servlet的类。
 </servlet>
 <servlet-mapping>
  <servlet-name>toHtml</servlet-name>
  <url-pattern>/toHtml</url-pattern>
 </servlet-mapping>

第三步、运行servlet。如:http://wqz520520.blogbus.com

OK,这就在你的test项目的根目录下,生成了一个index.htm的静态文件。 

局限性:本文只能生成一个文件!访问一次,生成一个文件。并且生成的文件名也与原来的文件名相同。

比较适合主页生成静态页面。

 上面文章中,生成静态页面,是有一定的局限性的。生成主页是很方便,但要生成二级页面,就不方便了。

       本文假设一个新闻发布系统。希望后台发布的,前台显示的是静态的文档。这就涉及,主页要是静态的,同时二级列表也是静态的,新闻内容也是静态的。也就是说, 在发布一篇新闻的时候,可能涉及到三个地方生成静态文档。并且,要生成一个网页,必须访问一个servlet。在大量生成静态网页的时候,

      以下方法,可以解决这些问题。

    一、加入一下servelet

/**
 * @file_name 文件名及文件之后的参数.最好为a.jsf?fileId=aaaa 
 * @path 文件所在的路径.相对于根目录而言的.
 * @realName文件要保存的名字
 * @realPath文件要保存的真实路径。默认与文件所在的目录相同。
 */
public class ToHtmlPath extends HttpServlet {

 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String url = "";
  String name = "";

  ServletContext sc = getServletContext();

  String file_name = request.getParameter("file_name");// 你要访问的jsp文件,如news.jsf。
  // file_name如:fileDetail.jsf?fileId=56.要是有参数, 只有一个参数。并且以参数名作为文件名。
  String realName = request.getParameter("realName");// 要保存的文件名。如aaa;注意可以没有这个参数。

  String path = request.getParameter("path");// 你要访问的jsp文件路径。如news。注意可以没有这个参数。

  String realPath = request.getParameter("realPath");// 你要保存的文件路径,如htmlNews.注意可以没有这个参数。
  // 下面确定要保存的文件名字。
  if (realName == null || realName == "") {
   int a = 0;
   a = file_name.indexOf("=") + 1;
   realName = file_name.substring(a);
   if (realName.indexOf(".")>0) {
    realName = file_name.substring(0, file_name.indexOf("."));
   }
  }
  // 下面构造要访问的页面。
  if (path == null || path == "") {
   url = "/" + file_name;// 这是你要生成HTML的jsp文件,如
  } else {
   url = "/" + path + "/" + file_name;// 这是你要生成HTML的jsp文件,如
  }
  // 下面构造要保存的文件名,及路径。
  // 1、如果有realPath,则保存在realPath下。
  // 2、如果有path则保存在path下。
  // 3、否则,保存在根目录下。
  if (realPath == null || realPath == "") {
   if (path == null || path == "") {
    name = ConfConstants.CONTEXT_PATH + "\\" + realName + ".htm";// 这是生成的html文件名,如index.htm.说明: ConfConstants.CONTEXT_PATH为你的上下文路径。
   } else {
    name = ConfConstants.CONTEXT_PATH + "\\" + path + "\\"
      + realName + ".htm";// 这是生成的html文件名,如index.htm.
   }
  } else {
   name = ConfConstants.CONTEXT_PATH + "\\" + realPath + "\\"
     + realName + ".htm";// 这是生成的html文件名,如index.htm.
  }

  // 访问请求的页面,并生成指定的文件。
  RequestDispatcher rd = sc.getRequestDispatcher(url);

  final ByteArrayOutputStream ōs = 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(name); // 把jsp输出的内容写到xxx.htm
  os.writeTo(fos);
  fos.close();
  PrintWriter ōut = response.getWriter();
  out.print("<p align=center><font size=3 color=red>success!</font></p>");
 }
}

二、在web.xml里面配置你的servlet

 <servlet>
  <servlet-name>toHtmlPath</servlet-name>
  <servlet-class>mj.util.html.ToHtmlPath</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>toHtmlPath</servlet-name>
  <url-pattern>/toHtmlPath</url-pattern>
 </servlet-mapping>

三、写一个通用的方法, 供调用。

public class CallHtml {

 public static void callOnePage(String fileName, String path,
   String realName, String realPath) {
  try {
   String str = "http://wqz520520.blogbus.com="
     + fileName + "&&path=" + path + "&&realName=" + realName
     + "&&realPath=" + realPath;
   int httpResult;
   URL url = new URL(str);
   URLConnection connection = url.openConnection();
   connection.connect();
   HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
   httpResult = httpURLConnection.getResponseCode();
   if (httpResult != HttpURLConnection.HTTP_OK) {
    System.out.println("没有连接成功");
   } else {
    System.out.println("连接成功了 ");
   }
  } catch (Exception e) {
   // TOD handle exception
  }
 }

//这个方法适当重载,就可以省去一些参数传递。

}

四、在你的新闻发布save时,调用方法。

1、CallHtml.callOnePage("info.jsf?file_id=aaa",news,"", "");//将在news目录下生成一个aaa.htm的静态文件

2、CallHtml.callOnePage("newsList.jsf",news,"", "");//将在news目录下生成一个newsList.htm的静态文件,显示最新的新闻。

3、CallHtml.callOnePage("index.jsf","","", "");//生成主页。

好了,这就保持了,主页、列表、新闻内容都是最新的静态页面了。

[本日:1 本周:3 本月:8 总浏览数:256 ] [返回上一页] [打 印] [收 藏]

版权所有 成都网站建设超市
地址:成都洗面桥5号 邮编:610041