多语言网站生成静态页面实现思路以及用freemarker作模板生成静态页面的实现

news/2024/5/19 7:21:51/文章来源:https://blog.csdn.net/xingyunpi/article/details/7315286

现在呀,越来越多的网站要求做成多种语言,并且,大家好像都知道了html比动态的运行快,所以,也倾向自动生成静态页面这个功能,我就纳闷了,消息怎么传的那么快呀!好吧,说说多语言网站生成静态页面时候的主要瓶颈在哪些方面吧:

1.首先是列表类型的文章分页的生成

这个吧,肯定需要有自己的一套规则,这次我生成静态页面时候是这样规定的:

列表页:第n页:list_1_n.htm(其实,那个_1暂时没用,是预留的)

详细页:和list_1_n.html同级目录下建一个文件夹,文件夹命名为"n",也就是说,第n页的内容放到文件夹为"n"的文件夹内,文件名称命名为:0.html,1.html...一页下面用文章序号显示.(当然,我看到好多网站都用时间的,也可以)

2.生成网站的连接是个重点

开始的时候,其实忽略了这个问题,一直觉得,怎么生成内容并显示出来是最重要的,但是后来才发现,最烦人的地方时链接怎么放.我用的办法是在对应的实体类加上一个属性 String

href; 每次生成的时候,把href放进去.

考虑好了这两大方面,我觉得,整个网站就应该架构起来了,接下来,说一下生成静态页面的实现.

用的是freemarker作模板:

3.1 步骤:

3.1.1 myeclipse中新建一个webproject,引入struts2,最后目录结构:


3.1.2 工具类util包里面,是实现生成静态页面的类:

CreateHtml.java:

package com.guanghua.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class CreateHtml {/*** @author xingyunpi* @param ftl 模板文件* @param htmlName  生成html文件* @param map * @param relaPath* @throws IOException* @throws TemplateException*/public void init (String ftl,String htmlName,Map map,String relaPath) throws IOException,TemplateException{Configuration cfg=new Configuration();cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/");cfg.setEncoding(Locale.getDefault(), "UTF-8");Template template=cfg.getTemplate(ftl);template.setEncoding("UTF-8");String path=ServletActionContext.getServletContext().getRealPath("/");File fileName=new File(path+htmlName);Writer out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8"));template.process(map, out);out.flush();out.close();}
}
3.1.3 测试类:

HtmlTest.java

package com.guanghua.action;import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.guanghua.util.CreateHtml;
import com.opensymphony.xwork2.ActionSupport;import freemarker.template.TemplateException;
public class HtmlTest extends ActionSupport{private String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String execute(){CreateHtml createHtml=new CreateHtml();List<Person> persons=new ArrayList<Person>();for(int i=0;i<5;i++){Person p=new Person();p.setAge(24);p.setName("xingyupi");persons.add(p);}Map<String,List<Person>> map=new HashMap<String, List<Person>>();map.put("personlist", persons);String htmlName="personlist.html";String ftl="person.ftl";String relaPath="index.jsp";try {createHtml.init(ftl, htmlName, map, relaPath);} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();}this.msg=htmlName;return SUCCESS;}
}

3.1.4 实体类:

Person.java

package com.guanghua.action;public class Person {String name;int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

3.1.5 模板页面:

person.ftl:

<html><head><title></title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>
<table style="text-align:center;FONT-SIZE: 11pt; WIDTH: 600px; FONT-FAMILY: 宋体; BORDER-COLLAPSE: collapse" borderColor=#3399ff cellSpacing=0 cellPadding=0 align=center border=1>   <tr>   <td><b>name</b></td>   <td><b>age</b></td>   </tr>   <#list personlist as person>   <tr>   <td>${person.name}</td>   <td>${person.age}</td></tr>   </#list></body>
</html>

3.1.6 struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true" /><constant name="struts.i18n.encoding" value="UTF-8" />
<package namespace="/" name="default" extends="struts-default">
<action name="index" class="com.guanghua.action.HtmlTest"><result type="redirect">/${msg}</result>
</action>
</package>
</struts>

3.1.7 当然,还要引入freemarker.jar

3.2 最后附上freemarker.jar下载和项目下载:


freemarker.jar

CreateHtml.rar


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_872086.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在个人网站中引入Markdown编辑文本

Markdown是一种可以使用普通文本编辑器编写的标记语言&#xff0c;通过简单的标记语法&#xff0c;它可以使普通文本内容具有一定的格式。 下载地址 https://github.com/evilstreak/markdown-js/releases 选择markdown-browser-0.6.0-beta1.tgz 下载后解压会得到两个库文件…

推荐几个免费好用的毕业论文(设计)文献查找网站包括外文文献(亲测有用)

1、剑桥大学 https://www.repository.cam.ac.uk/discover 2、ScienceDirect https://www.sciencedirect.com/ 3、CiteSeerX http://citeseerx.ist.psu.edu/index 4、Open Accsess Library https://www.oalib.com/ 5、国家科技图书文献中心 http://oar.nstl.gov.cn…

推荐两个免费的论文查重网站(24小时一次)

推荐两个免费的论文查重网站&#xff08;一天24小时一次&#xff09; 这两个都要扫码登陆&#xff0c;然后选择免费查重&#xff0c;在后面的选择中要钱的都不要选择就能直接提交选择查重。 PaperWord https://www.paperword.com/ PaperYY https://www.paperyy.com/

网站优化策略

网站的优化建议 页面尽量只使用div标签并且嵌套层级不要太多。Html页面不能包含css、JavaScript代码&#xff0c;全部放到单独的文件。title标签包含关键词不要超过3个&#xff0c;每个页面title内容要对应页面内容。Description标签包含关键词4~5次&#xff0c;每个页面描述除…

4000万美元维护一个网站,贵吗?

5亿用户&#xff0c;365*24h连续运行&#xff0c;完美的浏览器&#xff08;桌面/移动&#xff09;兼容性&#xff0c;优秀的用户体验&#xff0c;一流的问题解答团队&#xff0c;TB级数据管理&#xff0c;支持300种语言&#xff0c;这是一个网站&#xff0c;非营利性&#xff0…

网站服务配置过程 nginxⅠ

1. nginx程序目录结构信息 /etc/logrotate.d/nginx 利用logrotate实现日志文件自动切割利用脚本定时任务实现日志切割#!/bin/bashmv nginx.log nginx.log_$(date %F_%T)systemctl restart nginx/etc/nginx/nginx.conf 主配置文件 /etc/nginx/conf.d/default…

网站服务架构部署(LNMP)

1. LNMP架构说明 LNMT: linux nginx mysql tomcat LNMP: linux nginx mysql php/python LAMP: linux apache mysql php 作用: 可以使用架构处理动态访问请求2. LNMP架构部署过程 Linux : 1) 系统安全服务需要关闭 selinux iptables 2) 确认系统/tmp目录权限 1777nginx : 1) 安…

网站服务负载均衡 Ⅰ

1. 负载均衡详述部分 Syntax: upstream name { ... } --- 指定可以分配用户请求web节点信息 Default: — Context: http分配后端节点方式方法: 根据能力进行分配用户访问请求 weight --权重 按比例进行权重分配访问资源 upstream oldboy { server 10.0.0.7:80 weight3; se…

python爬虫爬取网站文章

这次爬取网站为&#xff1a;‘http://www.agri.cn/kj/syjs/zzjs/’ 程序大致分为六步&#xff1a; 1、引入相关的库和设置两个正则表达式规则 2、设置爬取的网页数量 3、设置网页中包含文章的HTML部分 4、在获取的部分中提取包含文章连接的HTML语言 5、获取文章连接 6、根…

【服务器】iis的重启服务器、重启iis、回收(重启)线程池、刷新网站

windows自带iis&#xff0c;如果没有的也可以控制面板中启用 1、在开始按钮点击右键&#xff0c;选择控制面板。 2、接着我们从控制面板选择“程序”。 3、然后选择“启用或关闭windows功能”。 4、从列表中选择Internet Infomation Services。 5、并且把相应的功能条…

【调优】网站前后端性能优化

文章目录 前端1. 尽可能减少要传输的数据量2. 减少关键资源的总数3. 缩短关键渲染路径长度4.网络传输优化Total Connection TimeTTFB Content Download 5.预加载 后端1. 批量思想&#xff1a;批量操作数据库2. 异步思想&#xff1a;耗时操作&#xff0c;考虑放到异步执行3. 空…

网站的消息通知系统设计漫谈

现在的很多网站都有消息通知系统&#xff0c;比如新浪微博页面右上角的小黄签&#xff0c;比如Facebook页面左上角的Notifications。但是消息通知系统的说法是个笼统的概念&#xff0c;我理解的其本质功能是网站把某些对用户有价值的信息及时告知用户。比如常见的SNS关系中谁关…

计算机学习网站

C语言中文网&#xff1a;C语言程序设计门户网站(入门教程、编程软件)http://c.biancheng.net/Python3 os.path() 模块 | 菜鸟教程Python3 os.path() 模块 Python3 OS 文件/目录方法 os.path 模块主要用于获取文件的属性。 以下是 os.path 模块的几种常用方法&#xff1a; 方法说…

HTML资料之网站ico图标

◆ 使用ico图标&#xff1a; 将favicon.ico 这个图标放到根目录下&#xff0c;使用link标签引用。 <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"/>注&#xff1a;后面的type“image/x-icon” 属性可以省略。 ◆ ◆ 制…

curl网站开发指南

我一向以为&#xff0c;curl只是一个编程用的函数库。 最近才发现&#xff0c;这个命令本身&#xff0c;就是一个无比有用的网站开发工具&#xff0c;请看我整理的它的用法。 curl网站开发指南 阮一峰 整理 curl是一种命令行工具&#xff0c;作用是发出网络请求&#xff0c;然…

VuePress + Github Pages 搭建博客网站

VuePress Github Pages 搭建博客网站 VuePress VuePress 是基于 Vue 的静态网站生成器&#xff0c;有以下特点&#xff1a; 简洁至上&#xff1a;以 Markdown 为中心的项目结构&#xff0c;以最少的配置帮助你专注于写作Vue 驱动&#xff1a;享受 Vue webpack 的开发体验&…

黑色大气版织梦资源网网站kyuan源码

介绍&#xff1a; 1&#xff1a;上传源码到根目录 2&#xff1a;修改数据库账号密码 打开文件data 打开common.inc.php文件修改自己的数据库账号密码 点击保存 3&#xff1a;上传数据库文件 4&#xff1a;访问后台 域名yunwu 后台账号&#xff1a;admin 密码&#xff1a;12…

Lerx开源网站内容管理系统

介绍&#xff1a; Lerx 开源网站内容管理系统(CMS)是一个以JavaMySQL进行开发的内容管理系统源码。 一.简介 1.跨平台设计&#xff0c;能无差别运行于Windows、Linux、MacOS等系统平台。 2.采用了安全、稳定的基于Java的SpringMVC框架。 3.数据库ORM持久化框架使用Hibernate 5…

小说站群网站响应式源码

介绍&#xff1a; 绿茶小说站群2.x-秒收隔天速出权重-小说流量稳定收割机-精品轻量级PHP站群系统站群系统,小说行业专用引流精品站群,绿茶小说站群为独立站群系统&#xff08;无需依托CMS&#xff09;&#xff0c;独立的整篇小说优化内容库&#xff08;拒绝句子拼凑&#xff0…

QQ手游网站源码

介绍&#xff1a; 昨天在群聊中看到有人发 直接吧源码上次主机或者宝塔的根目录即可! 网盘下载地址&#xff1a; http://kekewl.net/gY8K11yEtyx 图片&#xff1a;