2017-09-20 1 views
0

Je rencontre des problèmes lorsque j'essaie d'utiliser l'une de mes classes Java dans une application Web JSP (tomcat).JSP Utilisation de classes personnalisées à partir de WEB-INF

J'ai ma classe assis dans le répertoire WEB-INF (compilé ainsi)

/approot/WEB-INF/classes/c_myclass.java 
/approot/WEB-INF/classes/c_myclass.class 

package myclass; 

public class c_myclass { 

    // class variable 
    String classvar; 

    // constructor 
    public c_myclass(String arg) { 
     // do stuff 
    } 

    // class function 
    public void classfunc(String arg) { 
     // do stuff 
    } 

} 

J'ai mon index.jsp assis à la racine de mon répertoire app

/approot/index.jsp 

// these seems to work 
<%@ page import = "java.io.*" %> 
<%@ page import = "myclass.*" %> 

<!DOCTYPE html> 
<html> 

<head> 
    <title>Nothing</title> 
</head> 

<body> 
<%! 
    // global var for testing 
    // this fails 
    public static c_myclass myClass; 
%> 
</body> 

</html> 

Je J'ai fait quelque chose de très similaire en Java normal et cela a fonctionné mais ici je reçois une erreur et je ne sais pas pourquoi

c_appclasses cannot be resolved to a type 

Répondre

0

J'ai trouvé la raison pour laquelle cela ne fonctionne pas, cela concerne le répertoire WEB-INF. Il doit être agencé en fonction du nom de l'emballage, donc pour mon cas.

package myclass; 

public class c_myclass { 

    // class variable 
    String classvar; 

    // constructor 
    public c_myclass(String arg) { 
     // do stuff 
    } 

    // class function 
    public void classfunc(String arg) { 
     // do stuff 
    } 

} 

Le nom du package est maclasse il doit être dans un répertoire nommé maclasse

package myclass; 
/approot/WEB-INF/classes/myclass/c_myclass.java 
/approot/WEB-INF/classes/myclass/c_myclass.class 

Si le nom du package a des arrêts supplémentaires alors WEB-INF aura besoin des sous-répertoires supplémentaires.

package com.myclass; 
/approot/WEB-INF/classes/com/myclass/c_myclass.java 
/approot/WEB-INF/classes/com/myclass/c_myclass.class 
0

Si vous avez collé le fichier de code Java Source dans le répertoire WEB-INF, cela ne fonctionnera pas puisque le code source n'est pas exécuté sur votre machine. Tout d'abord, vous devez compiler le fichier java dans un fichier de classe - bytecode interprété par votre machine virtuelle Java.


AFAIK, vous ne pouvez pas utiliser des mots clés comme public ou static comme ça dans un fichier JSP. JSP n'est pas une définition de classe mais plutôt du code source interprété à l'exécution par votre moteur de servlet. Tout ce que vous écrivez dans un bloc JSP comme celui-ci est pratiquement dans un contexte de méthode.


En d'autres termes, vous devriez peut-être envisager de consulter un guide/tutoriel pour Java WEB MVC. Votre configuration est assez mauvaise pratique.

+0

Merci pour votre réponse, y en a-t-il une que vous recommanderiez? – Trent

+1

Personnellement, je préfère utiliser Spring web mvc. Mis à part le guide officiel, il y a beaucoup de tutoriels là-bas. Je ne peux pas en recommander, mais je suis sûr que google vous aidera. – Link64

+0

Même après avoir compilé la classe, cela ne fonctionne toujours pas. Il dit qu'il ne peut pas être résolu – Trent