我依靠JAXB为我生成sitemap.xml。
我的控制器如下所示,并且我有一些数据库表来跟踪要显示在站点地图中的链接:-
SitemapController.java
@Controllerpublic class SitemapController { @RequestMapping(value = "/sitemap.xml", method = RequestMethod.GET) @ResponseBody public XmlUrlSet main() { XmlUrlSet xmlUrlSet = new XmlUrlSet(); create(xmlUrlSet, "", XmlUrl.Priority.HIGH); create(xmlUrlSet, "/link-1", XmlUrl.Priority.HIGH); create(xmlUrlSet, "/link-2", XmlUrl.Priority.MEDIUM); // for loop to generate all the links by querying against database ... return xmlUrlSet; } private void create(XmlUrlSet xmlUrlSet, String link, XmlUrl.Priority priority) { xmlUrlSet.addUrl(new XmlUrl("http://www.mysite.com" + link, priority)); }}XmlUrl.java
@XmlAccessorType(value = XmlAccessType.NONE)@XmlRootElement(name = "url")public class XmlUrl { public enum Priority { HIGH("1.0"), MEDIUM("0.5"); private String value; Priority(String value) { this.value = value; } public String getValue() { return value; } } @XmlElement private String loc; @XmlElement private String lastmod = new DateTime().toString(DateTimeFormat.forPattern("yyyy-MM-dd")); @XmlElement private String changefreq = "daily"; @XmlElement private String priority; public XmlUrl() { } public XmlUrl(String loc, Priority priority) { this.loc = loc; this.priority = priority.getValue(); } public String getLoc() { return loc; } public String getPriority() { return priority; } public String getChangefreq() { return changefreq; } public String getLastmod() { return lastmod; }}XmlUrlSet.java
@XmlAccessorType(value = XmlAccessType.NONE)@XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")public class XmlUrlSet { @XmlElements({@XmlElement(name = "url", type = XmlUrl.class)}) private Collection<XmlUrl> xmlUrls = new ArrayList<XmlUrl>(); public void addUrl(XmlUrl xmlUrl) { xmlUrls.add(xmlUrl); } public Collection<XmlUrl> getXmlUrls() { return xmlUrls; }}对于robots.txt,它看起来类似于以下内容,显然,您需要根据自己的喜好进行配置:-
RobotsController.java
@Controllerpublic class RobotsController { @RequestMapping(value = "/robots.txt", method = RequestMethod.GET) public String getRobots(HttpServletRequest request) { return (Arrays.asList("mysite.com", "www.mysite.com").contains(request.getServerName())) ? "robotsAllowed" : "robotsDisallowed"; }}


