É sempre difícil testar/depurar um programa JSP ou servlet. Os programas JSP e Servlets tendem a envolver muita interação cliente/servidor, o que pode causar erros e é difícil reproduzir o ambiente de erro.
A seguir daremos algumas dicas e sugestões para ajudá-lo a depurar seu programa.
System.out.println() pode marcar facilmente se um trecho de código foi executado. Claro, também podemos imprimir vários valores. também:
Como o objeto System se tornou um objeto Java central, ele pode ser usado em qualquer lugar sem a introdução de classes adicionais. O escopo de uso inclui Servlets, JSP, RMI, EJB's, Beans, classes e aplicações independentes.
Comparado com a interrupção da execução em um ponto de interrupção, o uso de System.out para saída não terá um impacto significativo no processo de execução do aplicativo. Esse recurso é muito útil em aplicativos onde o mecanismo de temporização é muito importante.
A seguir, é fornecida a sintaxe para usar System.out.println():
System.out.println("Mensagem de depuração");Aqui está um exemplo simples usando System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head><title>System.out.println</title></ head><body><c:forEach var="counter" Begin="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "contador= " + pageContext.findAttribute("contador") );Agora, se você executar o exemplo acima, produzirá os seguintes resultados:
-4-3-2-1012345Se estiver usando um servidor Tomcat, você poderá encontrar o seguinte conteúdo adicional no arquivo stdout.log no diretório logs:
contador=1contador=2contador=3contador=4contador=5contador=6contador=7contador=8contador=9contador=10Usando este método, variáveis e outras informações podem ser enviadas para o log do sistema para análise e localização da causa subjacente do problema.
A estrutura de criação de log J2SE fornece serviços de criação de log para qualquer classe em execução na JVM. Portanto, podemos usar esta estrutura para registrar qualquer informação.
Vamos reescrever o código acima para usar a API do logger no JDK:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@page import="java.util.logging.Logger" %><html> <head><title>Logger.info</title></head><body><% Logger logger=Logger.getLogger(this.getClass().getName());%><c:forEach var="counter " Begin="1" end="10" step="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/ </br> <% String mensagem = "counter=" + pageContext.findAttribute("contador") + " myCount=" + pageContext.findAttribute("myCount"); :forEach></body></html>Os resultados são semelhantes ao anterior, porém, pode gerar informações adicionais para o arquivo stdout.log. Aqui usamos o método info no logger. Abaixo, fornecemos um instantâneo do arquivo stdout.log:
24 de setembro de 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=1 myCount=-424-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=2 myCount=- 324-setembro-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador = 3 minha contagem = -224-setembro-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador = 4 minha contagem = -124-setembro-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador = 5 minha contagem = 024 de setembro de 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador = 6 minha contagem = 124 de setembro de 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador = 7myCount=224-set-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=8 myCount=324-Set-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=9 myCount=424-Set-2013 23: 31:31org.apache.jsp.main_jsp _jspServiceINFO: contador = 10 minha contagem = 5As mensagens podem ser enviadas com várias prioridades, usando os métodos sever(), warning(), info(), config(), fine(), finer() ebest(). O método fine() é usado para registrar as melhores informações, e o método sever() é usado para registrar as informações mais sérias.
Use a estrutura Log4J para registrar mensagens em diferentes arquivos, que são classificados com base na gravidade e importância.
NetBeans é uma estrutura de árvore e um ambiente de desenvolvimento Java abrangente de código aberto que oferece suporte ao desenvolvimento de aplicativos Java independentes e aplicativos de rede, além de suporte à depuração JSP.
O NetBeans suporta as seguintes funções básicas de depuração:
ponto de interrupção
Rastreamento de etapa única
ponto de observação
Informações detalhadas podem ser encontradas no manual do NetBeans.
Você pode usar comandos jdb em JSPs e servlets para depurar como aplicativos normais.
Normalmente, depuramos o objeto sun.servlet.http.HttpServer diretamente para ver como o HttpServer executa JSP/Servlets em resposta a solicitações HTTP. Isso é muito semelhante à depuração de miniaplicativos. A diferença é que o que o programa applet realmente depura é sun.applet.AppletViewer.
A maioria dos depuradores pode ignorar automaticamente alguns detalhes ao depurar miniaplicativos porque sabem como depurar miniaplicativos. Se quiser transferir o objeto de depuração para JSP, você precisará fazer as duas coisas a seguir:
Configure o caminho de classe do depurador para que ele possa localizar sun.servlet.http.Http-Server e classes relacionadas.
Configure o classpath do depurador para que ele possa localizar seus arquivos JSP e classes relacionadas.
Depois de definir o caminho de classe, comece a depurar sun.servlet.http.Http-Server. Você pode definir um ponto de interrupção em qualquer lugar do arquivo JSP como desejar e, em seguida, usar o navegador para enviar uma solicitação ao servidor e você verá o programa parar no ponto de interrupção.
Os comentários no programa desempenham um determinado papel na depuração do programa de várias maneiras. Os comentários podem ser usados em muitos aspectos da depuração de um programa.
JSP usa anotações Java. Se um bug desaparecer, dê uma olhada no código que você acabou de comentar e geralmente você descobrirá o porquê.
Às vezes também é útil visualizar as solicitações e respostas HTTP brutas quando o JSP não está se comportando conforme planejado. Se você estiver familiarizado com a estrutura do HTTP, poderá observar diretamente a solicitação e a resposta e ver o que está acontecendo com esses módulos de cabeçalho.
Aqui revelamos mais duas dicas para depurar JSP:
Use um navegador para exibir o conteúdo original da página e distinguir se há um problema de formato. Esta opção geralmente está no menu Exibir.
Certifique-se de que o navegador não capture a saída da solicitação anterior ao forçar o recarregamento da página. Se você estiver usando o navegador Netscape Navigator, use Shift-Reload; se você estiver usando o navegador IE, use Shift-Refresh.