导航:首页 > 编程语言 > jsp网页静态化

jsp网页静态化

发布时间:2021-12-04 13:38:04

jsp如何静态化

文件的名字还是jsp但是url的名字可以改。当然这只是改了url的后缀名,比如Struts的.action、.do;名字无所谓,你要改成.html也可以。。这跟静态化没关系。

② JSP 页面静态化 的几种方式 哪个比较好

1.保存数据,然后马上生成页面,在页面生成前,用户是无法访问到的。
这个方法最简单,也最常见。
2.可以过滤器,可以用freemarker等

③ 各位大神,请问现在一般的Jsp页面静态化是如何实现的呢

你说的静态是什么静态啊? 页面内容静态还是 访问URL 路径显示伪静态的啊?
前者 可以使用模板技术 velocity 和freemarker 实现
后者 通过 apache 配置重写规则 配置虚拟主机 Rewirite 自己去 google~

④ 如何使用freemarker将jsp网页静态化

整个网站首页的基本结构是通过jsp的include标签将所有通过freemarker生成的静态页面组织起来。后台控制各个部分的静态页生成。这样做将首页进行了拆分,便于了静态页面的维护,当我们需要生成“友情链接”部分的时候就只生成友情链接部分,而不需要将整个页面都从新生成一次。
以下是我生成静态页最核心的方法,使用freemarker。

/**
* 生成静态页面主方法
* @param context ServletContext
* @param data 一个Map的数据结果集
* @param templatePath ftl模版路径
* @param targetHtmlPath 生成静态页面的路径
*/
public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
Configuration freemarkerCfg = new Configuration();
//加载模版
freemarkerCfg.(context, "/");
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
try {
//指定模版路径
Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
template.setEncoding("UTF-8");
//静态页面路径
String htmlPath = context.getRealPath("/html")+"/"+targetHtmlPath;
File htmlFile = new File(htmlPath);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
//处理模版
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}

其实很简单,只要Google一下就有很多这方面的代码。我也是Google的代码然后自己再根据实际情况修改。简单说明一下参数:
ServletContext :这个不用说了吧。做java web的应该都知道,只不过struts2中这样获取ServletActionContext.getServletContext()
Map<String,Object> data : 模版的数据来源。freemarker通过一个Map给ftl模版送数据。
现在已友情链接为列子详细介绍静态页面如何生成。其他模块以此类推。
String templatePath : ftl所在的路径。我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
String targetHtmlPath : 最后生成静态页的路径:我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。

友情链接根据这段代码<jsp:include page="/html/index_link.html" flush="true"></jsp:include>我们需要freemarker生成一个index_link.html文件。友情链接数据来源通过数据库查询获取。
然后再写一个方法专门生成友情链接静态页面:

/**
* 生成友情链接的静态页index_link.html
* @param context
* @param data
*/
public static void createIndexFriendLink(ServletContext context,Map<String,Object> data){
crateHTML(context,data,"index_link.ftl","index_link.html");
}

此方法调用上面的createHTML方法。
然后根据以上方法我们就可以再Struts2的action里面从数据库查询数据放入map调用createIndexFriendLink()方法生成静态页了。
这是action中的一个方法:
/**
* 生成友情链接静态页index_link.html
* @return
*/
public String createLink(){
//权限验证
if(! this.isAccess())
return "error";
try{
//得到友情链接
List links = friendLinkDAO.findAll();
//准备数据
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
//调用静态页面方法
HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data);
addActionMessage("静态页面生成成功!");
return "message";
}catch(Exception e){
e.printStackTrace();
return "failure";
}
}

List links = friendLinkDAO.findAll();通过spring注入action的hiberate DAO获取数据给list然后通过以下代码
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
准备数据调用createIndexFriendLink()方法。
以下是:ftl模版源码:

<#if links?size != 0>
< div class="link">
<strong>友情链接:</strong>
<#list links as link>
<a href="${link.linkUrl}" target="_blank" title="${link.linkName}">${link.linkName}</a>
</#list>
< /div>
< #else>
< div class="link"></div>
< /#if>

阅读全文

与jsp网页静态化相关的资料

热点内容
显卡数据怎么设置 浏览:557
无法创建cad图纸集文件 浏览:788
纸质文件转换电子版 浏览:807
矩阵键盘扫描程序原理 浏览:986
怎么开发高级编程 浏览:530
政府的拆迁红头文件在哪里找 浏览:600
xp串口工具 浏览:469
反射javaforname区别 浏览:249
java添加计时器和图片 浏览:452
shell编辑文件内容 浏览:614
u盘驱动在哪个文件夹里 浏览:938
华为手机跟苹果手机怎么克隆app 浏览:172
cad文件为什么显示文件名是否正确 浏览:174
程序配置文件能自动转换成txt 浏览:985
r4烧录卡不同版本 浏览:962
怎么升级qq群为2000 浏览:347
微信己册除的文件怎样找回来 浏览:715
苹果美国账号共享2017 浏览:252
ps文件修改后打开还是原图 浏览:220
烧卡机苹果4微信qq哪里下载 浏览:780

友情链接