Appel d'une méthode java dans jsp

j'ai une classe java qui exécute certaines opérations sur des fichiers. Comme le code java est énorme, Je ne veux pas écrire ce code dans jsp. Je veux appeler les méthodes dans jsp chaque fois que nécessaire.

s'il vous plaît, dites-moi le chemin où je dois garder ce fichier. Aussi quelques exemples de code comment l'utiliser serait utile.

19
demandé sur sth 2010-03-01 10:00:48

5 réponses

je pense que la question est, comment rendre le code Java disponible pour un JSP? Vous rendrait disponible comme n'importe quel autre code Java, ce qui signifie qu'il doit être compilé dans un .fichier de classe et de les mettre sur le chemin de la classe.

dans les applications web, cela signifie que le fichier de classe doit exister sous WEB-INF/classes dans les applications web .fichier war ou répertoire, dans la structure de répertoire habituelle correspondant à son paquet. Donc, compilez et déployez ce code avec tous les autres Code Java de votre application., et il devrait être dans le bon endroit.

notez que vous devrez importer votre classe dans le JSP, ou utiliser le nom complet de la classe, mais autrement vous pouvez écrire n'importe quel code Java que vous voulez en utilisant la syntaxe<%%>.

vous pouvez également déclarer une méthode dans un autre utilitaire JSP, en utilisant <%! % > syntaxe (notez la !), l'importation de la JSP, et ensuite appeler la méthode déclarée dans un bloc. C'est un mauvais style cependant.

10
répondu Sean Owen 2010-03-01 08:35:43

Dans la servlet (qui s'exécute avant le JSP):

Person p = new Person(); // instantiate business object
p.init(...); // init it or something
request.setAttribute("person", p); // make it available to the template as 'person'

Dans le modèle, vous pouvez utiliser ceci:

your age is: ${person.age}  <%-- calls person.getAge() --%>
24
répondu cherouvim 2011-11-22 17:55:45

selon le type d'action que vous souhaitez appeler, vous utilisez normalement des taglibs, des fonctions EL ou des servlets. Le code Java n'a pas vraiment sa place dans les fichiers JSP, mais dans les classes Java.

si vous voulez pré-traiter une requête, utilisez le Servlet doGet() méthode. E. g.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Preprocess request here.
    doYourThingHere();
    // And forward to JSP to display data.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}

si vous voulez post-traiter une demande après avoir soumis un formulaire, utilisez le Servlet doPost() méthode à la place.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Postprocess request here.
    doYourThingHere();
    // And forward to JSP to display results.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}

Si vous voulez contrôlez le flux de page et / ou la sortie HTML, utilisez un taglib comme JSTL core taglib ou créer personnaliser les balises.

si vous voulez exécuter des fonctions statiques/helper, utilisez des fonctions EL comme JSTL fn taglib ou créer fonctions personnalisées.

7
répondu BalusC 2010-03-01 12:45:45

bien que je ne vous conseille pas de faire des appels java dans JSP, vous pouvez le faire à l'intérieur de votre JSP:

<%
   //Your java code here (like you do in normal java class file.
%>

<!-- HTML/JSP tags here -->

au cas où vous vous demandez, le <% ... %> la section s'appelle scriptlet : -)

4
répondu Buhake Sindi 2010-03-01 11:13:56

en fait, jsp n'est pas le bon endroit pour "effectuer certaines opérations sur des fichiers". Avez-vous entendu parler MVC modèle?

si vous êtes toujours intéressé à appeler la méthode java à partir de jsp, vous pouvez le faire, par exemple:

1. <% MyUtils.performOperation("delete") %> ( scriptlet)

2. <my-utils:perform operation="delete"/> (balise personnalisée)

en tout cas je vous recommande google sur les scriptlets, les étiquettes personnalisées jsp et le motif MVC.

Meilleures Salutations, Gedevan

1
répondu gedevan 2010-03-01 08:59:52