2014-11-15 3 views
0

20 분마다 한 번씩 업데이트되는 뉴스를 제공하는 웹 사이트가 있습니다. sitemap.xml을 동적으로 만들고 싶습니다.파일로 저장하지 않고 즉석 동적 sitemap.xml 생성

정적 파일이 있으면 정기적으로 업데이트해야합니다. jsp 폴더를 만들고 "sitemap_x.xml"로 매핑하는 올바른 방법입니까? 내 DB에서 데이터를 가져 와서 XML 형식으로 인쇄하십시오.

는 말은 :

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

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

곧 50 만 개 소식이 있습니다, 그래서 내가 해달라고 DB와 파일을 모두 XML로 저장하려고합니다.

아이디어가 있으십니까?

답변

1

같은 문제가있었습니다. 주석을 가지고있는 서블릿으로 해결했습니다. @WebServlet ("/ sitemap.xml"). 따라서 서블릿은 http://your-site.com/sitemap.xml을 요청할 때 XML 형식의 응답을 생성합니다. XML 내부에는 데이터베이스의 링크가 있습니다. 이처럼 :

서블릿 :

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> 
관련 문제