Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 03 - Manipulando requisições e respostas HTML com Servlets

Manipulando os parâmetros das requisições web II

Analise agora o código a seguir, cuja tela de resposta é mostrada na Figura 1.

Listagem 1 - Acessando parâmetros de requisição em um Servlet Resposta do ServletOlaPersonalizado

Como você pode perceber, a classe ServletOlaPersonalizado é um Servlet que implementa o método doGet(), ou seja, responde a requisições do tipo HTTP via método GET. A resposta desse Servlet irá depender da URL de invocação do Servlet, ou melhor, do valor do parâmetro nome que é passado através da URL. Por exemplo, a página de resposta desse Servlet, quando executado através da URL <http://localhost:8080/aula03/ServletOlaPersonalizado?nome=Eduardo>, é mostrada na Figura 1.

Caso você mude o valor do parâmetro para Lucy, teremos o resultado mostrado na Figura 2. Esse comportamento dinâmico, que muda de acordo com o valor do parâmetro nome, é dado pelo comando request.getParameter("nome") (linha 17 da Listagem 1). Esse comando aciona o método getParameter() da classe HttpServletRequest, o qual recebe como parâmetro uma String que representa o nome do parâmetro da requisição web cujo valor você deseja ter acesso. No caso, estamos interessados no valor do parâmetro identificado pela String “nome”.

Observe a primeira URL de acesso ao Servlet (http://localhost:8080/aula03/ServletOlaPersonalizado?nome=Eduardo) e note que está indicado que o valor do parâmetro nome é igual ao texto Eduardo, justamente o texto que aparece na página HTML da Figura 1. Ao trocar o valor desse parâmetro para Lucy, o valor retornado pelo comando request.getParameter("nome") será o valor “Lucy” e não mais “Eduardo”, fazendo com que a página resultante seja igual à da Figura 2. Fácil de entender, não é?

 Resposta do ServletOlaPersonalizado ao mudar valor do parâmetro

Ao trabalharmos com parâmetros nas requisições, temos que ter em mente que nem sempre os valores passados estão de acordo com o esperado. Considere, por exemplo, o caso das requisições tratadas pelo ServletOlaPersonalizado. Se o usuário digitar diretamente a URL no browser, ele pode:

  1. esquecer de colocar na URL o valor do parâmetro “nome”;
  2. digitar errado o nome do parâmetro, como no caso da URL <http://localhost:8080/aula03/ServletOlaPersonalizado?noome=Eduardo>.

Observe que o nome do parâmetro passado pelo usuário é agora “noome” e não mais “nome”, como esperado pelo Servlet.

Nesses casos, o que o comando request.getParameter("nome") irá retornar? Basicamente o valor null. Sempre que o valor de um parâmetro não for encontrado ou o próprio parâmetro não existir, o valor padrão null será retornado. Veja na Figura 3 o resultado quando nos esquecemos de passar o valor do parâmetro (note que o valor null, quando convertido para String, é igual ao texto “null”).

Esquecendo-se de passar o valor do parâmetro nome

Além disso, lembre-se de que existem pessoas na internet com intenções de “invadir e quebrar” os sistemas. Elas podem propositalmente deixar de passar parâmetros para o sistema ou então passar valores inválidos, buscando derrubar o sistema ou fazer com que ele tenha um comportamento inapropriado.

Quer ver um exemplo? Uma pessoa mal-intencionada pode criar uma página web com o link “clique aqui para ir para a empresa X”, onde X é a sua empresa e cujo link vai para o ServletOlaPersonalizado que você criou e hospedou no seu site empresarial. Basta que a URL do link criado contenha uma palavra inadequada para o parâmetro nome (ex: http://localhost:8080/aula03/ServletOlaPersonalizado?noome=@@@@$) para se ter um possível estrago.

Ao clicar no link da página web da pessoa mal-intencionada, um possível cliente verá o resultado impresso na tela e provavelmente ficará ofendido. Sem entender de programação, o cliente em potencial achará que a grosseria veio do seu site e não do site da pessoa mal-intencionada, já que a URL que aparecerá no navegador web é a do ServletOlaPersonalizado (seu site!). Então, fique atento!

Versão 5.3 - Todos os Direitos reservados