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

标签 java jsp servlets web seo

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

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

我的意思是:

search_engine_bot --> sitemap.xml --> sitemap_x.xml --> xmlgenerator.jsp -->

out.println("<url><loc>myurl.com/content--42924</loc></url>");

我很快就会有 50 万条新闻,所以我不想将它们同时保存为 XML 数据库和文件。

有什么想法吗?

最佳答案

我遇到了同样的问题。我通过servlet解决了它,它有注释@WebServlet("/sitemap.xml")。所以,当请求 http://your-site.com/sitemap.xml , servlet 生成 XML 格式的响应。 XML 内部是来自您的数据库的链接。 像这样:

服务小程序:

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

links = getLinksFromDatabase();

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

dispatcher.forward(request, response);

站点地图.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>

关于java - 生成即时动态 sitemap.xml 而不将其保存为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951673/

相关文章:

java - c3p0 导致应用程序偶尔超时

java - 如何解决这个 java.lang.NoClassDefFoundError

java - 无法为 JSP 编译类

servlets - 如何让用户知道他/她的 session 已过期?

java - 抽象类未初始化参数

java - 当我从另一个 Activity 中删除元素时,如何清除一个 Activity 的数组列表?

java - JSP 中如何使用 .do 文件在 Java 和 Struts 框架之外的前端 Web 表单之间传递数据?

jquery - 使用jsp、servlet将图像上传到mysql

java - 使用 HttpServletRequestWrapper 时无法发送 jsp 参数?

java - 使用 Servlet 处理 Cookie