Gerar sitemap.xml com Spring MVC e Sitemapgen4j

Se você quer melhorar o SEO do seu web site, criar um sitemap.xml vai te ajudar alavancar seu SEO. Veja neste post como gerar o sitemap.xml com Spring MVC utilizando o framework sitemapgen4j

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 6802 Visualizações

Gerar sitemap.xml com Spring MVC e Sitemapgen4j

Dependência do maven para sitemapgen4j

O primeiro passo para iniciar este tutorial é adicionar as dependencias necessárias, se você estiver utilizando um projeto com spring mvc todas as dependências do spring já estão adicionadas e você precisará apenas adicionar a dependência do sitemapgen4j.

Para adicionar a dependência, abra seu pom.xml e adicione entre as tags <dependencies></dependencies> o código:

<!-- https://mvnrepository.com/artifact/com.github.dfabulich/sitemapgen4j -->
<dependency>
    <groupId>com.github.dfabulich</groupId>
    <artifactId>sitemapgen4j</artifactId>
    <version>1.0.2</version>
</dependency>


Criando o seu controller do Spring MVC para o sitemap

O sitemap.xml é um arquivo em formato xml, existem algumas regras para sua criação, voçê pode ver as regras para a criação de um sitemap.xml acessando este outro artigo, mas para o momento já nós basta saber seu formato, num próximo momento você pode aperfeiçoar seu arquivo.

Então vamos lá, seu controller deve ficar no seguinte padrão:

import com.redfin.sitemapgenerator.ChangeFreq;
import com.redfin.sitemapgenerator.WebSitemapGenerator;
import com.redfin.sitemapgenerator.WebSitemapUrl;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.io.File;
import java.net.MalformedURLException;
import java.util.Date;
import java.util.List;


@Controller
public class HomeController {

    private final static String BASE_URL = "http://receitasdecodigo.com.br";


    @RequestMapping(path = "/sitemap.xml", produces = {MediaType.APPLICATION_XML_VALUE})
    @ResponseBody
    public FileSystemResource sitemap(HttpSession httpSession, Model model) {
        try {
            WebSitemapGenerator sitemap = WebSitemapGenerator
                    .builder(BASE_URL, new File("/home/wolmir/sitemap"))
                    /*.gzip(true)*/
                    .build();

            WebSitemapUrl url = new WebSitemapUrl
                    .Options(BASE_URL + "/post/other")
                    .lastMod(new Date())
                    .priority(0.8)
                    .changeFreq(ChangeFreq.WEEKLY)
                    .build();
            
            for (int i = 0; i < 1000; i++) {
                sitemap.addUrl(url);
            }

            List<File> write = sitemap.write();

            return new FileSystemResource(write.get(0));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return null;
    }
}

O importante neste controller que deve ser observado é o tipo do retorno, onde está recebendo uma chamada GET e produzindo XML, outra coisa importante é que estamos utilizando o nome como sitemap.xml dessa forma será criado o sitemap sempre que for chamado por algum spinner

Sem muito segredo o que vai precisar fazer a partir deste momento é criar seu código para montar as URL's que existam em seu site.

Acessando o conteúdo do sitemap.xml

Após adicionar a dependência e criar o controller basta verificar se tudo funcionou corretamente, abra o navegador e acesse, http://localhost:8080/sitemap.xml ou se estiver utilizando um contexto em sua aplicação adiciona a chamada, mas lembre-se de manter o sitemap.xml na rais de sua aplicação.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!