Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Como passar o valor de umavariável para um servlet

Criei uma variável nome e gostaria de passar o valor para um servlet. Assim consigo: Nome

Mas não quero enviar um input, só texto mesmo. Tentei fazer "Nome <%= produto.getNome() %>", mas o valor não é passado para o servlet.

8 respostas
<html>
<head><title>Página de teste</title></head>
<body>
<form action=” /testeServlet” method=”get”>
    Nome.: <input type=”text” name=”nome” />
<br />
<input type=”submit” value=”Enviar”/>
</form>
</body>
</html>
@WebServlet("/testeServlet")
public class Ola extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public Ola() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String nome = request.getParameter("nome");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("Bem Vindo<h3>"+nome+" " +"</h3>");
        out.close();
    }
}

Bom dia Thamirys,

Se você quer passar o valor vindo de uma página web para a servlet, é o que nosso amigo Ricardo exemplificou acima. Mas pelo que você postou:

Nome <%= produto.getNome() %>

Deu a entender que você está tentando mandar um valor da Servlet para a página, seria isso? Você queria que aparecesse "Nome Refrigerante", onde Refrigerante teria vindo da Servlet??

Oi Emerson, quero fazer as duas coisas.

Tenho uma página que recebe o nome do produto que vem de uma classe java. O valor é exibido na página através "<%= produto.getNome() %>", mas quero passar esse valor para um servlet através de uma tag, mas não quero um input, pois o valor é fixo não digitado em um input.

solução!

Certo, então para fazer o valor vindo da página mas sem ser um input que o usuário digita, você pode fazer o seguinte:

<input type="hidden" name="valor" value="123456"

Isso vai gerar um input com o valor que você especificar, fixo, e o usuário não verá nada na tela. Para pegar na Servlet será como você já está acostumada:

String valor = request.getParameter("valor");

Testa ai.

Já para exibir em uma página o valor que está em uma Servlet, você pode fazer assim:

Na Servlet, sete o valor como atributo do request, utilizando:

req.setAttribute("nomeProduto", produto.getNome());

Depois encaminhe para a página que você precisa:

RequestDispatcher dispatcher = req.getRequestDispatcher("sua_pagina.jsp");
dispatcher.forward(req, resp);

Na sua página web, pegue utilizando a seguinte expressão:

<p>Produto ${nomeProduto}.</p>

Para isso funcionar a página precisa ser um JSP, terminando com .jsp. Se for .html não dará certo. O caracter $ representa o escopo do request, por isso que dentro das chaves dele você coloca direto o nome do atributo que definiu na Servlet, ele já sabe que está procurando um atributo com aquele nome.

Abraço.

Funcionou Emerson, muito obrigada! :)

Deu super certo Emerson, nos dois casos, obrigada pela ajuda. Era exatamente o que estava precisando.

Abraço.

Legal, precisando estamos ai.

Abraço.