Pq o dado selecionado não é passado para o proximo formulário?

Fiz um formulário onde o cliente vai selecionar o serviço, e dps de selecionado, e pagina vai redirecionar para outra jsp, que vai carregar o cpf do cliente e o serviço que ele selecionou, porem a pagina só carrega o cpf

DAO-------------

public Servico carregaPorIdServico(int idservico) throws Exception{
        Servico s = new Servico();
        String sql = "SELECT * FROM servico WHERE idservico=?";
        this.conectar();
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, idservico);
        ResultSet rs = pstm.executeQuery();
        if (rs.next()) {
            s.setIdservico(rs.getInt("idservico"));
            s.setNome(rs.getString("nome"));
            s.setPreco(rs.getDouble("preco"));
        }
        this.desconectar();
        return s;
    }

Método--------------------

public void carregar() throws Exception{
        ServicoDAO sDAO = new ServicoDAO();
        this.nome = sDAO.carregaPorIdServico(this.idservico).getNome();
        this.preco = sDAO.carregaPorIdServico(this.idservico).getPreco();
    }

formulário para selecionar o serviço------------

        <h1>Registrar Agendamento do Cliente</h1>
        <form action="form_registrar_agendamento2.jsp" method="post">
            <input type="hidden" name="cpf" value="<%=c.getCpf() %>"/>    
            Cpf :<%=c.getCpf() %> /
            Nome do Cliente:<%=c.getNome() %><br/>
            Selecione o Serviço Desejado:
            <select name="id_servico" size="1" required>
                <option value="">Selecione ...</option>
                <% for(Servico serv:lista2) { %>
                <option value="<%=serv.getIdservico() %>"><%=serv.getNome() %></option>
                <% } %> 
            </select>
            <input type="submit" value="próximo" /><br/>
            <br><br><br><br>
            <h2> Tabela de Serviços</h2>
            <table border="1">
            <tr>
                <th>NOME</th>
                <th>PREÇO</th>
            </tr>
            <%
            ArrayList<Servico> lista = new ArrayList<Servico>();
            try{
                Servico s = new Servico();
                lista = s.listar();
            }catch(Exception e){
                out.print("Erro: "+e);
            }      
            for(Servico sl:lista){
            %>
            <tr>
                <td><%=sl.getNome() %></td>
                <td><%=sl.getPreco()%></td>
            </tr>
            <%
            }           
            %>
        </table>
        </center>

formulario2------

<%
String cpf = request.getParameter("cpf");
Cliente c = new Cliente();
try{
   c.setCpf(cpf);
   c.carregar();
}catch(Exception e){
    out.print("Erro:"+e);
}

%>
<%
String idservico = request.getParameter("idservico");
Servico s = new Servico();
try{
   s.setIdservico(Integer.parseInt(idservico));
   s.carregar();
}catch(Exception e){
    out.print("Erro:"+e);
}

%>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
         <%@include file="menu.jsp" %>
        <center>
        <h1>Registrar Agendamento do Cliente</h1>
        <form action="form_registrar_agendamento2.jsp" method="post">
            <input type="hidden" name="cpf" value="<%=c.getCpf() %>"/>    
            
            Cpf :<%=c.getCpf() %> /
            Nome do Cliente:<%=c.getNome() %><br/>
            Servico: <%=s.getIdservico() %>
         
            </select><input type="submit" value="próximo" /><br/>
            <br><br><br><br>
            </center>
    </body>

Carreguei o idservico na jsp
e coloquei o getIdservico para ser mostrado na tela, dps que o cliente seleciona, porem o valor que mostra é zero e não o nome do serviço
Alguém pode me ajudar? Obrigado

Olá,

Creio que o problema ocorra pois, no html , do formulario 1, você chamou o select option deste modo

 <select name="id_servico" size="1" required>

No entanto, você solicita o parâmetro no segundo formulário como

request.getParameter(idservico);

Quando você usa o getParameter o nome do parâmetro deve ser o mesmo nome do elemento no HTML. Sendo assim, deixe os nomes iguais.

Fiz isso amigo e msm assim não funcionou, eu tenho que passar por um input
Usei esse

`<input type="hidden" name="idservico" value="<%=serv.getIdservico() %>"/>`

Porem com esse input os campos do select ficam fora da caixa, isso ocorre quando coloco esse input, mas sem ele os dados não vão pra outra jsp