2010-10-06 3 views
0

J'essaie d'afficher des données dynamiques en jsp. pour cela j'appelle la méthode java dans un jsp en utilisant l'expression jsp. cette méthode java prend beaucoup de temps mais elle retourne une certaine valeur (je ne peux pas réduire le temps d'exécution de la méthode.) Mais mon jsp est vide. Quelqu'un peut-il expliquer quelle serait la raison et comment résoudre. Ce code n'est pas écrit par moi Mais j'ai besoin de trouver la cause.impossible d'afficher jsp

mon code jsp ressemble

display.jsp 

     ..... hello......start... 

     <%= obj.getDynamicData() %>  

     .....completed .... end  
+0

+1 au commentaire de BalusC ici. –

Répondre

2

Il est probable parce que vous êtes (ab) en utilisant JSP pour exécuter du code Java brut. Lorsqu'une exception est lancée à mi-chemin de l'envoi de la sortie JSP, le reste de la JSP ne sera plus envoyé au navigateur. Mais le serveur web ne peut plus changer la réponse dans une page d'erreur avec des détails d'exception et le webbrowser se retrouvera avec une sortie HTML halfbaked qui est souvent affichée comme une page blanche.

Toute exception non interceptée est généralement enregistrée dans le fichier journal du serveur. Vous devez rechercher dans les journaux du serveur l'exception et la trace de pile afin de pouvoir corriger la cause du problème. Les exceptions contiennent des informations valables sur la cause du problème.

Une page HTML en demi-page est simplement une page HTML incomplète qui a empêché le webbrowser de comprendre comment l'afficher correctement. Clic droit de la page dans webbrowser et choos Voir Source. Vérifiez si c'est comme prévu, si nécessaire avec l'aide du w3 validator. En outre, cela peut valoir la peine d'essayer dans différents (meilleurs) navigateurs comme Firefox et Chrome. MSIE6/7 est connu pour s'étouffer comme ça quand il a reçu énormément de code HTML <table>. Il a un mauvais moteur de rendu de table.


Pour vous sauver de problèmes futurs comme celui-ci, je suggère de déplacer tout ce code Java et dans une classe Servlet afin que vous puissiez obtenir un plus convivial (au moins, il vaut mieux que de creuser dans les fichiers journaux du serveur) page d'erreur en cas d'exception dans le code Java. Voir aussi How to avoid Java code in JSP?

+0

La méthode Java ne lance aucune exception. et je peux obtenir la valeur de retour de la méthode. mais je ne rend pas en jsp – Satya

+0

Les symptômes indiquent le contraire. Avez-vous vérifié les journaux du serveur? Avez-vous vérifié la sortie HTML récupérée dans le navigateur? Notez que les exceptions ne vont pas nécessairement dans le fichier journal standard. Vérifiez également le fichier journal des erreurs. Le nom de fichier/emplacement exact dépend du servletcontainer utilisé. – BalusC

+0

@Satya, comment savez-vous que vous pouvez obtenir la valeur de retour si la page sur laquelle vous imprimez la valeur de retour n'est pas rendue? –

1

Sur la base des commentaires in BalusC's answer:

Lorsque je commente l'appel à obj.getDynamicData(), page jsp correctement rendue.

l'une des deux choses qui pourrait arriver:

  1. obj.getDynamicData() jette une exception qui ne sont pas pris et manipulé
  2. Votre conteneur de servlet/serveur peut être configuré avec une sorte de « délai d'attente de demande "cela ferme la connexion HTTP s'il faut plus d'un certain temps pour traiter la requête, et obj.getDynamicData() prend tellement de temps à s'exécuter que ce délai est déclenché.

Avez-vous une sorte de journalisation dans votre code ou JSP qui vous indique ce qui se passe côté serveur après que cette méthode a terminé le traitement? Une indication forte que # 2 se produit serait si vous continuez à voir l'activité de journal du thread traitant la demande de JSP (et obj.getDynamicData()) après que le navigateur ait cessé d'attendre la demande/a reçu la page blanche.

Et pour écarter les choses simples, êtes-vous sûr que le serveur renvoie une réponse vide, et non que votre navigateur affiche une page vierge parce que le serveur a retourné une demi-page HTML? Assurez-vous de vérifier View Source, utilisez un outil comme Firebug et/ou faites la même requête HTTP que vous faites dans un navigateur à partir d'un outil de ligne de commande tel que curl ou wget.

Questions connexes