sitemap java_Java动态生成SiteMap.xml,无需插件

建站以来,试过好多方法实现 sitemap.xml ,从最早的手动更新,到后来每次更新自动写入本地io文件。一方面感觉太零零散散,另外实时的程度不高,再加上好多ZZ引擎,sitemap的要求还能和别人不一样。。。总之最终决定写个动态的,通过springboot的GET接口返回字符串实现,xml结构不复杂,就自己拼。

共计3部分:

其中sitemap类是封装sitemap的实体类;提供了一个简单的Utils,超级简单可以忽略。还有一个在Controller中使用Demo.

SiteMap类:注意有参、全参构造方法,已经重写了toString为了符号xml要求。

import com.ruoyi.common.utils.DateUtils;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* @date 2020/7/8 9:45

*/

public class SiteMap {

private SimpleDateFormat sdf=new SimpleDateFormat("yyyy_MM_dd");

/**

* url https://www.xxx.com

*/

private String loc;

/**

* 最后更新时间 yyyy-MM-dd

*/

private Date lastmod;

/**

* 更新速度 always hourly daily weekly monthly yearly never

*/

private String changefreq;

/**

* 权重 1.0 0.9 0.8

*/

private String priority;

@Override

/** 重写 toString 适应xml格式 */

public String toString() {

StringBuffer sb= new StringBuffer();

sb.append("");

sb.append("" +loc+ "");

sb.append("" + sdf.format(lastmod) + "");

sb.append("" +changefreq+ "");

sb.append("" +priority+ "");

sb.append("");

return sb.toString();

}

public SiteMap() {

}

public SiteMap(String loc) {

this.loc=loc;

this.lastmod= new Date();

this.changefreq= SiteMapUtils.CHANGEFREQ_ALWAYS;

this.priority= "1.0";

}

public SiteMap(String loc, Date lastmod, String changefreq, String priority) {

this.loc=loc;

this.lastmod=lastmod;

this.changefreq=changefreq;

this.priority=priority;

}

}

最后在Controller中这样用:

@Controller

public class SiteMapController {

@Autowired

private IArticleService articleService;

public static String BEGIN_DOC = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +

"";

static String END_DOC = "";

static String CHANGEFREQ_DAILY = "daily";

public static String CHANGEFREQ_ALWAYS = "always";

@GetMapping(value = "/sitemap.xml", produces = {"application/xml"})

@ResponseBody

public String getSiteMap() {

StringBuffer sb = new StringBuffer();

sb.append(BEGIN_DOC);//拼接开始部分

sb.append(new SiteMap("http://wwww.xxxx.com"));//拼接网站首页地址

//下面是根据实际情况写,目的是生成整站的Url

List articles = articleService.selectArticleListRandom10();

for (Article a : articles) {

sb.append(new SiteMap("http://wwww.xxxx.xxx/article/" + a.getId() + ".html", a.getUpdateTime(), CHANGEFREQ_DAILY, "0.9"));

}

sb.append(END_DOC);//拼接结尾

return sb.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值