Java 生成即时动态sitemap.xml而不将其保存为文件

Java 生成即时动态sitemap.xml而不将其保存为文件,java,jsp,servlets,web,seo,Java,Jsp,Servlets,Web,Seo,我有一个网站,提供每20分钟更新一次的新闻。我想动态生成sitemap.xml 如果我有一个静态文件,我应该定期更新它。创建jsp文件夹并将其映射为“sitemap_x.xml”是否正确;从我的数据库中获取数据并以XML格式打印 我的意思是: 搜索引擎机器人-->sitemap.xml-->sitemap\u x.xml-->xmlgenerator.jsp--> out.println(“myurl.com/content--42924”); 我很快就会有500k新闻,所以我不想把它们都保存

我有一个网站,提供每20分钟更新一次的新闻。我想动态生成sitemap.xml

如果我有一个静态文件,我应该定期更新它。创建jsp文件夹并将其映射为“sitemap_x.xml”是否正确;从我的数据库中获取数据并以XML格式打印

我的意思是:

搜索引擎机器人-->sitemap.xml-->sitemap\u x.xml-->xmlgenerator.jsp-->

out.println(“myurl.com/content--42924”);
我很快就会有500k新闻,所以我不想把它们都保存为xml


有什么想法吗?

我也有同样的问题。我通过servlet解决了这个问题,它有注释@WebServlet(“/sitemap.xml”)。所以,当请求时,servlet以XML格式生成响应。XML内部是来自数据库的链接。 像这样:

servlet:

RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/site_map.jsp");

links = getLinksFromDatabase();

request.setAttribute("baseUrl", baseUrl);
request.setAttribute("links", links);

dispatcher.forward(request, response);
site_map.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

<c:forEach items="${links}" var="link">
    <url>
        <loc><c:out value="${baseUrl}" />/<c:out value="${link}" /></loc>
    </url>
</c:forEach>

</urlset>

/
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

<c:forEach items="${links}" var="link">
    <url>
        <loc><c:out value="${baseUrl}" />/<c:out value="${link}" /></loc>
    </url>
</c:forEach>

</urlset>