web-dev-qa-db-fra.com

Appeler une Java en jsp

J'ai une classe Java qui effectue certaines opérations sur les fichiers. Puisque le code Java est énorme, je ne veux pas écrire ce code en jsp. Je veux pour appeler les méthodes dans jsp chaque fois que nécessaire.

Veuillez me dire le chemin où je dois conserver ce fichier. Un exemple de code d'utilisation pourrait également être utile.

19
Hara Chaitanya

Je pense que la question est de savoir comment rendre le code Java Java disponible pour un JSP? Vous le rendriez disponible comme tout autre code Java, ce qui signifie qu'il a besoin à compiler dans un fichier .class et à mettre sur le chemin de classe.

Dans les applications Web, cela signifie que le fichier de classe doit exister sous WEB-INF/classes dans le fichier ou répertoire .war de l'application, dans la structure de répertoire habituelle correspondant à son package. Donc, compilez et déployez ce code avec toutes vos autres applications Java, et il devrait être au bon endroit.

Notez que vous devrez importer votre classe dans la JSP ou utiliser le nom de classe complet, mais sinon vous pouvez écrire le code Java que vous aimez en utilisant la syntaxe <%%>).

Vous pouvez également déclarer une méthode dans un autre utilitaire JSP, en utilisant <%! %> syntaxe (notez le!), importez le JSP, puis appelez la méthode déclarée dans un tel bloc. C'est du mauvais style cependant.

10
Sean Owen

Dans le 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
cherouvim

Selon le type d'action que vous souhaitez appeler, vous utilisez normalement les balises tag, les fonctions EL ou les servlets pour. Java n'appartient vraiment pas vraiment aux fichiers JSP, mais aux classes Java.

Si vous souhaitez prétraiter une demande, utilisez la méthode Servlet doGet() . Par exemple.

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 souhaitez post-traiter une demande après l'envoi d'un formulaire, utilisez plutôt la méthode Servlet doPost() .

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 souhaitez contrôler le flux de page et/ou la sortie HTML, utilisez un taglib comme JSTL core taglib ou créez tags personnalisés .

Si vous souhaitez exécuter des fonctions statiques/d'assistance, utilisez des fonctions EL comme JSTL fn taglib ou créez fonctions personnalisées .

7
BalusC

Bien que je ne vous conseille pas de faire des appels Java dans JSP, vous pouvez le faire dans votre JSP:

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

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

Au cas où vous vous poseriez la question, le <% ... %> la section s'appelle scriptlet :-)

4
Buhake Sindi

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

Si vous souhaitez toujours appeler Java de jsp, vous pouvez le faire, par exemple:
1. <% MyUtils.performOperation("delete") %> ( scriptlet )
2. <my-utils:perform operation="delete"/> (balise personnalisée)

Quoi qu'il en soit, je vous recommande de google sur les scriptlets, les balises personnalisées jsp et le modèle MVC.
Cordialement, Gedevan

1
gedevan