jsp动态网页静态化,jsp动态网页特性

本文目录一览:

如何将动态页面jsp转换为html静态的网页

要自动生成静态页面,用Filter截获jsp请求并先进行预处理,自动生成Html,是个不错的主意。一个很容易想到的方法是在Filter截获Request后,,导向一个Servlet,在这个Servlet中向本机发送一个http请求,然后将响应写入一个文件:

URLConnection urlConn = URLConnection.open();

注意要避免递归。

另一个方法是不模拟http,而是定制Response,把服务器返回的JSP响应输出到我们自己的Response中,就可以将响应快速写入Html文件,然后再发送给客户。而且,由于没有http模拟请求,直接读取服务器响应速度非常快。

截获Response的关键便是实现一个WrappedResponse,让服务器将响应写入我们的WrappedResponse中。这类似于一个代理模式,Servlet 2.x已经提供了一个WrappedResponse类,我们只需要复写其中的一些关键方法即可。

WrappedResponse实现了Response接口,它需要一个Response作为构造函数的参数,事实上这正是代理模式的应用:WrappedResponse充当了代理角色,它会将JSP/Servlet容器的某些方法调用进行预处理,我们需要实现自己的方法。

综上:用Filter实现HTML缓冲的步骤是:

1. 用Filter截获请求,如/a.jsp?id=123,映射到对应的html文件名为/html/a.jspid=123.htm。

2. 查找是否有/html/a.jspid=123.htm,如果有,直接forward到此html,结束。

3. 如果没有,实现一个WrappedResponse,然后调用filterChain(request, wrappedResponse)。

4. 将返回的WrappedResponse写入文件/html/a.jspid=123.htm,然后返回响应给用户。

5. 下一次用户发送相同的请求时,到第2步就结束了。

使用这个方法的好处是不用更改现有的Servlet,JSP页,限制是,JSP页面结果不能与Session相关,需要登陆或用户定制的页面不能用这种方法缓冲。

jsp动态网站静态化

我有个个人的想法,就是定期把解析好的html 页面做成一个备份,比如每天做一备份,如果内容没有改变的时候就让用户直接访问静态的html 如果检测到有内容改变的话重新吧新生成的页面备份下来替换原来的页面。 不知道对你有没有帮助!!

如何将jsp页面转换成静态页面

将jsp页面转换成静态页面的步骤:

1、在jsp页面中加入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时加参数.如

      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=centerfont size=3 color=red页面已经成功生成!singlebr? 233/font/p”);

     }

    }

2、配置web.xml

servlet

      servlet-nametoHtml/servlet-name

      servlet-classmj.util.html.ToHtml/servlet-class//你的servlet的类。

     /servlet

     servlet-mapping

      servlet-nametoHtml/servlet-name

      url-pattern/toHtml/url-pattern

     /servlet-mapping

3、运行servlet。如: 

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

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/185427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-26 12:18
下一篇 2024-11-26 12:18

相关推荐

  • Python计算机语言的特性与应用

    Python,是一种高层次、解释型的、面向对象的计算机编程语言。 一、简介 Python编程语言的初衷是:代码简洁易读、可拓展性强、适用范围广。其应用领域包括Web开发、数据科学、…

    编程 2025-04-29
  • Centos7配置静态ip

    本文将详细阐述如何在Centos7系统中配置静态ip。 一、查看网络接口 在配置静态ip之前,我们首先需要查看系统中的网络接口,以确定我们需要配置的网卡是哪一个。 ifconfig…

    编程 2025-04-29
  • Python中通过对象不能调用类方法和静态方法的解析

    当我们在使用Python编写程序时,可能会遇到通过对象调用类方法和静态方法失败的问题,那么这是为什么呢?接下来,我们将从多个方面对这个问题进行详细解析。 一、类方法和静态方法的定义…

    编程 2025-04-27
  • Apache伪静态配置Java

    本文将会从多个角度阐述如何在Apache中正确伪装Java应用程序,实现URL的静态化,提高网站的SEO优化和性能。以下是相关的配置和代码实例。 一、RewriteEngine的配…

    编程 2025-04-27
  • Python列表的特性

    Python列表是一种能够保存任意对象的动态数组结构。Python列表具有以下特性: 一、可变性 Python列表是可变的,可以动态改变其元素。可以通过索引来访问和修改列表中的元素…

    编程 2025-04-27
  • Java8特性详解

    Java8是Java语言的一个重要版本。有很多新的特性被加入,比如Lambda表达式、方法引用、Stream API等。这些特性提供了更为一致、紧凑的代码风格和更好的可读性,使得J…

    编程 2025-04-25
  • 为什么web项目的欢迎页必须是jsp?

    在web项目中,欢迎页通常是用户首次访问的页面。而对于这个页面的选择,我们通常会选择jsp作为欢迎页,其原因是什么呢? 一、JSP的优势 JSP与HTML和CSS的结合,可以实现动…

    编程 2025-04-25
  • Java 14:新的特性和改进

    一、Records Java 14中引入了Records,这是一种新的类声明,用于声明轻量、不可变值类。Records类似于传统Java类,但通过简化声明,目的是更容易地定义数据聚…

    编程 2025-04-25
  • 删除静态路由

    一、静态路由的定义 路由(Routing)是指在一组互联的计算机网络中,根据一定的算法规则实现两个节点之间选择合适的路径并且传送数据包的过程。简单来说,路由就是在网络中选择一条可达…

    编程 2025-04-25
  • 静态文件服务器

    一、文件服务器简介 静态文件服务器是一个基于HTTP协议的服务器应用程序,它旨在提供对本地或远程文件系统中的静态内容(包括HTML、CSS、图像、视频和JavaScript文件等)…

    编程 2025-04-24

发表回复

登录后才能评论