`

JSP静态化技术总结(开源)

    博客分类:
  • jsp
阅读更多
JSP静态化技术总结(开源)


                    开场白不知道写点什么好,最近对自己的生活没什么感觉。直接切入正题,本人一向喜欢分享技术,懒得藏着

什么,能为Java学习路遇到困难的朋友提供帮助,我感到非常高兴,也希望结识更多喜爱编程的朋友,今天写点JSP静态化技术,

网上这方面知识大多比较片面而且原理不清晰。所以我想总结一下。



                    网站提高性能的方案有很多,网站架构方面考虑,最初的性能优化可以考虑提高单台服务器的配置。把数据库

和代码分别部署在两台服务器,页面缓存,数据缓存,静态化,分布式,代码读写分离,负载均衡。这些东西都是大型网站发展

所必须经历的升级过程,前两种方案非常容易实现,页面缓存J2EE中用的不多,数据缓存可以借助hibernate提供的第三方支持,

分布式和读写分离,我的方案是使用EJB3,均衡负载可由Apache+Tomcat提供,我也已经实现。相比于这些web技术,说心里话

我觉得还是C/C++,比较难学。现在还好我还是一名学生,有很多机会学到更多原理性的东西。本文简单说一下页面静态化技术,

也就是jsp通过html模板生成html页面,比较高级点的处理就是让它自动静态化,其实无论使用什么框架原理都是相通的。我就刨开

框架的束缚,用最基础的servlet和jsp实现,自动静态化技术。



需要一个过滤器(Servlet)实现何时静态化的判断,还需要一个jsp页面实现静态化业务,然后需要静态化页面的模板

(html),一个文件流操作类。

模板页



Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>My JSP 'index.jsp' starting page</title>
    </head>
    <body>
        <center>
            <a href="../index.jsp">返回首页</a>
        </center>
        <div align="center">
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i1###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title1###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author1###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date1###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id1###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id1###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id1###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id2###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id2###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id2###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date2###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id2###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id2###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id2###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i3###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title3###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author3###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date3###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id3###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id3###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id3###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i4###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title4###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author4###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date4###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id4###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id4###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id4###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
            <table width="40%" border="1" bordercolor="#000000">
                <tr>
                    <td bordercolor="#FFFFFF">
                        编号:
                    </td>
                    <td bordercolor="#FFFFFF">###i5###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        标题:
                    </td>
                    <td bordercolor="#FFFFFF">###title5###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        作者:
                    </td>
                    <td bordercolor="#FFFFFF">###author5###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        发布日期:
                    </td>
                    <td bordercolor="#FFFFFF">###release_date5###</td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        内容:
                    </td>
                    <td bordercolor="#FFFFFF"><a href="./showDetail.jsp?id=###id5###">查看详细新闻</a></td>
                </tr>
                <tr>
                    <td bordercolor="#FFFFFF">
                        <a href="./editNews.jsp?id=###id5###">修改</a>&nbsp;&nbsp;&nbsp;
                        <a href="./deleteNewsHandler.jsp?id=###id5###">删除</a>
                    </td>
                </tr>
            </table>
            <br>
        </div>
        <br>
        <br>
    </body>
</html>

                   

过滤器的过滤方法:



public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession session = req.getSession();

        long timeNum = new Date().getTime();
        String strNum = String.valueOf(session.getAttribute("updateTime"));

        if (null == strNum && strNum.equals("")) {
            long Num = timeNum - Long.valueOf(strNum);
            if (Num >= 7200000) {
                session.setAttribute("updateTime", String.valueOf(timeNum));
                res.sendRedirect(req.getContextPath() + url);
                chain.doFilter(request, response);
            }
        } else {
            session.setAttribute("updateTime", String.valueOf(timeNum));
            res.sendRedirect(req.getContextPath() + url);
            chain.doFilter(request, response);
        }
        chain.doFilter(request, response);
    }


jsp的处理核心方法:



String Modelpath = request.getRealPath("/") + "/news/listNewsMoban.html"; //模板文件地址
            String OutHTMLpath = request.getRealPath("/") + "/news/listNews.html";//静态页文件地址

            try {
                FileStreamHelp fsh = new FileStreamHelp();//实例化文件操作辅助类

                String htmlcode = fsh.ReadFile(Modelpath);//读取模板文件
               
                int i = 0;
                List<Object> listnews = new ArrayList<Object>();
                BaseDao dao = new NewsDaoImpl();
                try {
                    listnews = dao.listObject();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                Iterator<Object> it = listnews.iterator();
                while (it.hasNext() && i <= 5) {
                    News news = (News) it.next();
                    i++;
                    htmlcode=htmlcode.replaceAll("###i"+i+"###", String.valueOf(i));
                    htmlcode=htmlcode.replaceAll("###title"+i+"###", news.getTitle());
                    htmlcode=htmlcode.replaceAll("###author"+i+"###", news.getAuthor());
                    htmlcode=htmlcode.replaceAll("###release_date"+i+"###", news.getRelease_date());
                    htmlcode=htmlcode.replaceAll("###id"+i+"###",String.valueOf(news.getId()));
                    }
               
                fsh.WriteFile(htmlcode, OutHTMLpath);//生成首页文件
            } catch (Exception e) {
                e.printStackTrace();
            }
            session.setAttribute("updateTime",new Date().getTime());
            response.sendRedirect(request.getContextPath() + "/index.jsp");


其实原理很简单。抛砖引玉,再复杂的需求都是由这些基础代码发展起来的。



分享到:
评论

相关推荐

    动态JSP页面静态化,html输出

    4. 使用第三方工具:有一些开源工具如SiteMesh、FreeMarker等可以帮助实现JSP页面静态化。这些工具通常提供了更完善的管理界面和配置选项,简化了静态化过程。 5. 混合模式:结合动态和静态页面,对于不常变化的...

    freemarker把jsp静态化简单应用

    6. **JSP静态化** JSP静态化是指将原本动态生成的JSP页面转换为纯HTML页面,减少服务器端的计算负担,提高页面加载速度。在FreeMarker中,我们可以预先生成HTML页面并存储在服务器上,当用户请求时直接返回静态页面...

    动态页面静态化汇总--页面静态化方案

    动态页面静态化是一种提高网站性能和搜索引擎友好度的技术手段,主要通过将原本由服务器动态生成的HTML页面转换为预先生成的静态HTML文件。这样,用户请求时,服务器无需执行数据库查询和其他复杂操作,而是直接返回...

    页面静态化实例,jsp转化成html

    页面静态化是Web开发中一种优化...在实际项目中,可以根据具体需求和场景进行调整和扩展,比如使用成熟的开源工具如Apache JSPC,或者Spring Boot的Thymeleaf模板引擎配合静态化库来实现更高效、更灵活的静态化策略。

    JSP伪静态实现

    ### JSP伪静态技术概述与实现 #### 一、伪静态技术简介 伪静态技术是一种将动态网页(如JSP)伪装成静态网页的技术。它通过URL重写等手段,将原本带有查询字符串的动态URL转换为易于记忆且对搜索引擎友好的静态URL...

    jsp URLRewirte地址静态化

    **JSP URLRewrite地址静态化** 在Web开发中,URL重写(URLRewrite)是一种优化技术,常用于将动态URL转化为看似静态的URL,从而提高网站的SEO(搜索引擎优化)性能,同时也能提供更好的用户体验。在JSP中,我们可以...

    web struts 当当jsp静态页面

    4. **JSP静态页面**:JSP(JavaServer Pages)是Java平台上的动态网页技术。在这个项目中,"jsp静态页面"可能指的是不包含任何Java代码或者仅包含EL(Expression Language)和JSTL(JavaServer Pages Standard Tag ...

    java 页面静态化

    在实际应用中,我们可以通过各种开源工具和框架来实现Java页面静态化,例如: - **FreeMarker** 或 **Thymeleaf**:这两个是常见的Java模板引擎,可以在服务器端将数据和模板结合生成HTML。 - **SiteMesh** 或 **...

    网页静态化例程 网站静态化学习的第一步

    MyEclipse是一款强大的集成开发环境,支持Java、JSP、Servlet等Web开发语言,非常适合进行网页静态化的开发。 第一步,我们需要设置项目环境。创建一个新的Dynamic Web Project,导入必要的库,如Freemarker。...

    JSP使用URLRewirte实现静态 例子

    本篇文章将深入探讨如何在JSP环境中使用URLRewrite工具来实现URL的伪静态化,以及其背后的原理和优势。 首先,我们要理解什么是URL伪静态化。在动态网站中,URL通常会包含一些参数,如 "?id=123",这样的URL对于...

    15个JSP项目实例技术源代码

    本资源"15个JSP项目实例技术源代码"提供了一系列实际应用场景的JSP项目示例,对于学习和掌握JSP技术具有很高的参考价值。 ### JSP基础知识 1. **JSP语法结构**:JSP页面由静态内容(HTML、CSS、JavaScript)和动态...

    JSP使用URLRewirte实现url地址伪静态化

    总结,JSP中使用URLRewrite实现URL伪静态化能够提高网站的专业性,增强用户体验,同时对SEO有显著的提升。理解并熟练掌握URLRewriteFilter的配置和规则编写,将使你的Web应用程序更具竞争力。通过不断实践和优化,你...

    jsp 开源oa 项目

    基于JSP的开源OA项目提供了良好的二次开发基础,通过理解和利用JSP的技术特性,可以有效地定制和优化OA系统,满足不同组织的个性化需求。同时,持续关注JSP和OA领域的最新技术和最佳实践,有助于保持系统的先进性和...

    jsp 利用urlrewritefilter实现伪静态

    4. **伪静态化**:伪静态技术是为了改善动态URL对搜索引擎的友好性。动态URL通常包含问号(?)、等号(=)等特殊字符,这些对于搜索引擎来说不友好。通过URLRewriteFilter,我们可以将`/product?id=123`这样的动态...

    JSP宝典BBS开源代码

    【JSP宝典BBS开源代码】是一个基于JavaServer Pages(JSP)技术构建的论坛系统源码。这个开源项目提供了完整的BBS功能,对于学习和理解JSP开发、Web应用架构以及数据库交互等方面有着重要的参考价值。下面将对这个...

    简易java开源订销管理系统JSP源码

    【简易Java开源订销管理系统JSP源码】是一款基于Java技术开发的进销存管理软件,主要用于帮助企业或个人实现高效的商品订购、销售和库存管理。该系统采用JSP(Java Server Pages)作为前端展示技术,结合Servlet进行...

    简单的伪静态,看了很多 自己做了一个简单的jsp的伪静态,和大家分享哈,其实很简单的

    在本例中,作者提到了一个基于JSP的伪静态实现,JSP(JavaServer Pages)是Java的一种动态网页技术。 【描述】中的“看了很多,和大家分享哈!”暗示了作者可能从多个来源学习了伪静态技术,并且自行实践后,觉得颇...

    jsp期末复习资料总结

    JSP(Java Server Pages)是由Sun Microsystems公司提出的动态网页技术标准,它是一种基于Java的动态网页开发技术。JSP页面能够嵌入HTML、XML等静态内容,同时支持Java代码和JavaServer Pages Standard Tag Library ...

    jsp源码其他类别MeyboMailWeb开源简化版-meybomailweb

    根据提供的文件信息,我们可以了解到这是一个名为“MeyboMail Web”的开源简化版本项目,它主要基于JSP(Java Server Pages)技术实现。接下来,我们将详细探讨这个项目的几个关键知识点。 ### JSP技术简介 JSP是...

    jspRun开源论坛JspRun!_6.0.0_GBK.zip

    jspRun开源论坛是一款基于Java技术开发的开源社区系统,其设计目标是提供类似Discuz! 6的功能,为用户搭建互动性强、易于管理的在线社区平台。该系统以其高效、稳定、可扩展性而受到开发者和用户的青睐。在深入探讨...

Global site tag (gtag.js) - Google Analytics