JSP页面如何静态化

Posted 自学编程吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP页面如何静态化相关的知识,希望对你有一定的参考价值。

页面静态化的好处是

  1. 缓存网页,提高访问速度

  2. 更容易让搜索引擎收录

ajax技术加载的网页,搜索引擎是不会收录的,还有URL里面#后面的都会去掉,因为会视为同一个页面的不同位置。

thymeleaf这个开源项目可以满足,这个单词的意思竟然是胸腺嘧啶,不知道老外怎么想的。thymeleaf是一个前端框架,它可以完成jsp的事情,也是通过标签,但是我觉得它不怎么方便,不过为了静态化就硬着头皮用了。

首先我们需要一个模板:

这是一个html文件,首先要注意,如果你的项目不是maven的(这年头还有人不用maven的?有,我就是一个),那么这个模板文件,应该放在src源文件夹下,编译后确保它(或者包含它的文件夹)在classes文件夹下。

然后这个html文件的html标签,要换成:

<html xmlns:th="http://www.thymeleaf.org">


循环的用法:

<li th:each="chapter : ${chapters}" th:id="'li_'+${chapter.code}">


条件的用法:

<ul th:if="${chapter.code==code or chapter.code==parentCode}">


文本替换,生成html代码后,测试两个字就被th:text部分的chapter.name替换掉了。还支持字符串拼接

<a th:href="${courseId}+'_'+${chapter.code}+'.html'" th:text="${chapter.name}">测试</a>


它其实就是一种标签,使用的时候,遵循它的标准来,这是完整的文档:

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html


现在看看后台java怎么写的,也就是上面的chapters这些数据

List<Chapter> fristClassChapters = chapterDao.queryFirstClassChapter(i);      //取得章节 List<Chapter> chapters = chapterDao.queryAllChapter(i); for (Chapter chapter : chapters) { String pageName = new StringBuilder().append(i).append("_").append(chapter.getCode()).append(".html")            .toString();         //准备写入模板的 ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();        //模板所在的目录 resolver.setPrefix("/htmls/");        //模板的后缀 resolver.setSuffix(".html"); TemplateEngine templateEngine = new TemplateEngine();        templateEngine.setTemplateResolver(resolver);
Context context = new Context();        //下面都是设置页面的数据,也就是html模板里面的 ${} context.setVariable("code", chapter.getCode()); context.setVariable("parentCode", chapter.getParentCode()); context.setVariable("chapters", fristClassChapters); context.setVariable("upchapters1", upchapters1); context.setVariable("upchapters2", upchapters2); context.setVariable("content", chapter.getContent()); context.setVariable("title", ChapterHelper.getChapterName(chapter.getCode()) + " " + chapter.getName()); context.setVariable("courseId", i);        try {          //pageName是要生成的模板文件的名字 FileWriter writer = new FileWriter(filePath + pageName);// "/Users/zebra/test.html"          //最后写入文件,study是模板文件,综合起来就是study.html放在htmls的文件夹下,这个文件夹在src源代码目录 templateEngine.process("study", context, writer);        } catch (IOException e) {       e.printStackTrace();        } }


然后定时运行这段代码,就可以定时生成HTML文件啦!

以上是关于JSP页面如何静态化的主要内容,如果未能解决你的问题,请参考以下文章

为什么做页面优化要用静态化,静态化如何落地?

手把手教你运营:SEO基础-HTML-静态化

jsp简介

高并发解决方案--页面静态化

网页静态化—redis | freemarker

大数据学习总结记录—页面静态化技术(Freemarker/velocity)& 网站伪静态(UrlRewriteFilter)