Problemas com a Reescrita URL

Boa Tarde Galera,
To tendo vários problemas com a reescrita de URL, e gostaria da ajuda de vocês.

To fazendo um projetinho bem básico com dois servlets e uma classe java, só pra aprender o conceito de sessão com reescrita de URL.

Ele funciona da seguinte maneira:

A primeira pagina a ser aberta é o Catalogo.java, que é um servlet, ele instancia três objetos Item, que serve pra guardar os dados de cada item.
Ai eu crio um ArrayList e jogo esses três objetos Item nesse ArrayList, ai exibo com um for.
Nesse for, exibe o item completo e cria um form, que quando submetido, é enviado o id do item para o outro Servlet chamado TrataRequisicao.

O código-fonte do Catalgo.java:


package Servlets;

import Modelo.Item;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Catalogo extends HttpServlet {
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        //Cria tres objetos Item e adiciona as informações necessárias.
        //Esse item é uma classe java variavel, que só serve para receber e armazenar dados temporariamente.
        Item colecaoHarryPotter    = new Item("1", "Coleção Harry Potter", 50.99, "Ótimo Livro para crianças, uma coleção completa do fantástico mundo do Harry Potter");
        Item colecaoNarnia         = new Item("2", "Coleção Narnia", 147.90, "Coleção rara dos fantásticos livros da séria Naria");
        Item colecaoSenhorDosAneis = new Item("3", "Coleção Senhor dos Aneis", 123.65, "Coleção de livros Senhor dos Anéis, perfeito para sua estante, venha conferir");
        
        ArrayList listaItens = new ArrayList();//Cria uma ArrayList e adiciona os tres Itens a ela.
        listaItens.add(colecaoHarryPotter);
        listaItens.add(colecaoNarnia);
        listaItens.add(colecaoSenhorDosAneis);
        
        //Esse for percorre tres vezes, exibindo as informações do produto, reescrevendo a url para passar
        //o id session e cria form que quando submetido, envia o id do produto que foi add ao carrinho.
        for(int i=0; i<listaItens.size(); i++) {
            Item tempItem = (Item) listaItens.get(i);
            out.println("<br>");
            out.println("ID: " +tempItem.getIdProduto()+ "<br>");
            out.println("<h1>" +tempItem.getTituloProduto()+ " " +tempItem.getPrecoProduto()+ "</h1>");            
            out.println("<p>" +tempItem.getDescricaoProduto()+ "</p>");
            
            String formURL = "TrataRequisicao";
            formURL = response.encodeURL(formURL);
            
            out.println(
                    "<form action=\"" +formURL+ "\">"+
                    "<input type=\"hidden\" name=\"id\" value=\"" +tempItem.getIdProduto()+ "\">"+
                    "<input type=\"submit\" value=\"Add no carrinho\">"+
                    "</form>"
             );
        }
        
        //Aqui, quando o link é clicado, passa o id com o valor Fechasessao, que é testado no servlet TrataRequisicao
        
        out.println("<a href=\"" +response.encodeURL("TrataRequisicao?id=FechaSessao")+ "\">Fechar Sessão</a>");
      
    } 

O Servlet TrataRequisicao é chamado quando algum form do Catalogo.java é clicado.
Ele basicamente, cria uma sessão, e joga o carrinho com o novo item adicionado no objeto sessão, o codigo-fonte:


package Servlets;

import Modelo.Item;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class TrataRequisicao extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
       
        HttpSession sessao = request.getSession();//Cria um objeto sessao
        ArrayList carrinho = (ArrayList) sessao.getAttribute("carrinho");//Pega o carrinho antigo
        
        if(carrinho == null) {//Se o carrinho estiver vazio, cria um.
            carrinho = new ArrayList();
        }
            
        Object novoItem = (Object) request.getParameter("id");//Pega o valor de ide joga em novoItem
        if(novoItem.equals("FechaSessao")) {//Se o valor de id for FechaSessao, a sessão é fechada
            sessao.invalidate();
            //Encaminha para o Servlet Catalogo.
            getServletContext().getRequestDispatcher(response.encodeRedirectURL("/Catalogo")).forward(request,response); 
        }
        
        
        synchronized(carrinho) {
            if(novoItem != null) {//Se o novoItem for diferente de vazio, adiciona ao carrinho e adiciona o carrinho a sessão
                carrinho.add(novoItem);
                sessao.setAttribute("carrinho", carrinho);
            }
            
            if(carrinho.size() == 0) {
                out.println("<p>Sem itens</p>");
            }
            
                    //Exibe os itens do carrinho
            else{
                out.println("<ul>");
                    for(int i=0; i<carrinho.size(); i++) {
                        out.println("<li>" +(String)carrinho.get(i)+ "</li>");
                        }
                out.println("</ul>");

            }
            
            
        }
    } 

A classe java Item:


package Modelo;

public class Item {
    
    private String idProduto;
    private String tituloProduto;
    private double precoProduto;
    private String descricaoProduto;
    
    public Item(){}
    
    public Item(String idProduto, String tituloProduto, double precoProduto, String descricaoProduto){
        this.idProduto = idProduto;
        this.tituloProduto = tituloProduto;
        this.precoProduto = precoProduto;
        this.descricaoProduto = descricaoProduto;
    }

     getters e setter

O problema é que quando desabilito os cookies do google Chrome, a sessão não funciona, creio que a reescrita esteja errada, alguem pode me ajudar?