Cursos / Informática para Internet / Desenvolvimento Web I / Aula
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 ServletComo 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 é?
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:
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”).
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