1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 动态生成网站地图sitemap.xml

动态生成网站地图sitemap.xml

时间:2019-02-16 18:01:00

相关推荐

动态生成网站地图sitemap.xml

在做网站地图时更新成了一个麻烦,于是想到返回一个虚拟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 /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;}

于是,每次请求网站地图后都是最新的,但此方法会增加服务器压力,适合网站更新较快但没有多余精力维护网站地图的网站使用。

友情链接:,一个共同学习的网站

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。