2014-11-15 75 views
0

我有一個網站,提供每20分鐘更新一次的新聞。我想動態地創建sitemap.xml。生成即時動態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。

有什麼想法?

回答

1

我有同樣的問題。我用servlet解決了它,它有註釋@WebServlet(「/ sitemap.xml」)。因此,請求http://your-site.com/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> 
相關問題