在做网站地图时更新成了一个麻烦,于是想到返回一个虚拟xml,动态生成网站地图。

例如sitemap.xml ,如果每次增加新网页都要在静态文件中添加url工程量将非常大,所有想到每次请求都查询新的网站地图。
上代码:
Controller层代码:

    /*** 获取sitemap.xml* 伪静态文件,每次返回的都是新的字符串*/@RequestMapping(value= "/sitemap.xml",produces= {"application/xml"})@ResponseBodypublic String getSitemap() {List<Subject> subjects = subjectService.findAllList(new Subject());//静态文件字符串return SiteMapUtils.getSiteMap(subjects);}

生成xml字符串方法:

/*** @ClassName SiteMapUtils* @Description TODO* @Author mwy* @Date 2020/6/22*/
public class SiteMapUtils {private final static String XML= "<?xml version=\"1.0\" encoding=\"utf-8\"?>";private final static String BEGIN_DOC= "<urlset>";private final static String END_DOC= "</urlset>";public final static String CHANGEFREQ_ALWAYS= "always";public final static String CHANGEFREQ_HOURLY= "hourly";public final static String CHANGEFREQ_DAILY= "daily";public final static String CHANGEFREQ_WEEKLY= "weekly";public final static String CHANGEFREQ_MONTHLY= "monthly";public final static String CHANGEFREQ_YEARLY= "yearly";public final static String CHANGEFREQ_NEVER= "never";public static String getSiteMap(List list) {StringBuffer sb= new StringBuffer();sb.append(XML);sb.append(BEGIN_DOC);for(Object obj:list){SiteMap siteMap = new SiteMap(obj);sb.append(siteMap.toString());}sb.append(END_DOC);return sb.toString();}}

生成单条url方法,重新toString,可写其他名字:

    @Override/** 重写 toString 适应xml格式 */public String toString() {StringBuffer sb = new StringBuffer();sb.append("<url>");sb.append("<loc>" + loc + "</loc>");sb.append("<lastmod>" + DateUtils.formatDate(lastmod) + "</lastmod>");if (StringUtils.isNotBlank(changefreq)) {sb.append("<changefreq>" + changefreq + "</changefreq>");}if (StringUtils.isNotBlank(priority)) {sb.append("<priority>" + priority + "</priority>");}sb.append("</url>");return sb.toString();}

日期格式化方法:

    /*** 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"*/public static String formatDate(Date date, Object... pattern) {String formatDate = null;if (pattern != null && pattern.length > 0) {formatDate = DateFormatUtils.format(date, pattern[0].toString());} else {formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");}return formatDate;}

于是,每次请求网站地图后都是最新的,但此方法会增加服务器压力,适合网站更新较快但没有多余精力维护网站地图的网站使用。
友情链接:www.how2xue.com,一个共同学习的网站

动态生成网站地图sitemap.xml相关推荐

  1. 教你创建Google网站地图Sitemap.xml(转)

    http://teachmyself.blog.163.com/blog/static/18881422920119895248288/ Sitemap.xml是 google搞出来的,也就是网站地图 ...

  2. 织梦后台如何生成站点地图sitemap.xml

    第一步在网站根目录建立sitemap.php文件 内容如下: 写一个计划任务文件命名为generate_sitemap.php,放在/plus/task目录里,文件内容如下: <?php//定时 ...

  3. 网站地图sitemap.xml的格式

    URL列表-XML格式及规范说明: 标签名称  属性  标签说明  标签类型  标签限制  可选/必选  urlset  / urlset用来标记整个文档的开头  /  /  必选  url  / u ...

  4. php生成站点地图,php生成百度站点地图sitemap.xml

    header("Content-type:text/html;charset=utf-8"); //php生成百度站点地图sitemap.xml //http://www.baid ...

  5. WordPress代码实现网站地图sitemap的html和xml的方法

    今天介绍的就是不使用插件完成WordPress代码实现网站地图sitemap的html和xml的方法,本站以前一直用着柳城的百度地图插件,今天心血来潮,想着还是直接代码吧,少用插件的好! 下面我就直接 ...

  6. ECshop生成网站地图url

    ECShop简单重写或动态,ECshop生成网站地图URL重复不能打开 2013-9-2 在管理业目录下面? /admin/sitemap.php 生成的网站地图地址:http://www.jdcct ...

  7. php自动生成网站地图txt,织梦网站地图生成插件+发布文章后自动生成地图

    织梦网站地图生成插件,可同时在网站根目录生成5种地图文件. 下载地址(根据自己网站编码选择安装) 百度网盘 提取码: 3bjg 安装好后的生成菜单在模块一栏里面 如果你想把生成网站地图这个菜单放在生成 ...

  8. nuxt.js做站点地图(sitemap.xml)详解

    前言 在做跨境电商项目中seo是必须要做的,seo中站点地图(sitemap.xml,robots.txt)又是必不可少的,这里就记录一下nuxt中站点地图是如何做的. 第一步:安装@/nuxt/si ...

  9. 帝国cmssitemap.php,帝国CMS网站地图sitemap的制作

    帝国CMS网站地图sitemap的制作 (2012-02-04 20:50:32) 标签: 杂谈 以前网站一直用的是在线生成工具来生成网站地图,比较方便,但是发现在线生成的无法显示出网站结构和全部的内 ...

最新文章

  1. Scrapy框架-去重原理讲解、数据收集以及信号量知识
  2. 一、预备知识―程序的内存分配
  3. C++操作符的优先级 及其记忆方法
  4. 分析函数在数据分析中的应用
  5. MegaCli命令总结
  6. php 采集暂停的原因,为什么小弟我curl的每次都只能抓取18个左右就自动停止了...
  7. GPS监控系统解决方案
  8. 获取rabbitmq连接对象_NET Core使用RabbitMQ
  9. Linux服务器操作系统 . 文件目录及文件管理
  10. php 公众号推送图片尺寸,微信公众号推送文图片什么尺寸最佳?
  11. DRILLNET 2.0------第二十四章 井涌模拟分析模型
  12. MSI(Message Signaled Interrupt)/MSI-X
  13. σ-代数、可测集、测度、可测空间、概率空间、随机变量、概率分布函数
  14. Openwrt无线中继设置并访问外网
  15. Web测试如何让IT门外汉更好的入门篇
  16. Web3D开发者兼职副业平台推荐
  17. Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑
  18. Vue3源码阅读指南——计算属性(effectcomputed)
  19. coreldraw x8里线段显示尺寸_CorelDRAW X8如何修改标尺单位
  20. RF发射器和接收器电路

热门文章

  1. 分享查看手机微信IP地址归属地方法
  2. Python第三方库turtle画小人发射爱心
  3. windows10 背景加载不出来变成黑色背景
  4. 移动商务,还是短信商务?
  5. 通用样式 -表格的每行的复选框选中打印
  6. 被诸葛亮的光环掩盖起来的三国英雄
  7. NYOJ_1273_宣传墙
  8. 百度网盘Mac版如何分享链接?创建百度网盘 for Mac分享链接的方法
  9. java怎么注释多行注释_java的注释格式和多行注释和单行注释
  10. android 远吗编译 刷机 小米,小米10/小米10 Pro系统源代码现已开源,能刷机才是为发烧而生...