J'ai été capable de faire fonctionner mon application à nouveau, en suivant les conseils de user2821894, mais après avoir essayé d'appeler une servlet, Tomcat 7 a cessé de fonctionner à nouveau! Si j'essaie de supprimer le code où j'appelle mon servlet, mon application Web ne fonctionne pas! Une fois que j'ai un problème avec un servlet, Tomcat cesse de fonctionner.
J'ai eu du mal à lancer mon projet Web sur Eclipse. J'ai eu un problème avec Tomcat 7. Donc, je «supprime» Tomcat 7 dans Eclipse, puis je l'ai ajouté à nouveau (encore une fois, Tomcat 7).
maintenant, je n'ai aucun problème à lancer mon projet Web, mais j'ai un problème avec mon servlet. Par exemple, je reçois une erreur comme
WebServlet cannot be resolved to a type
The attribute value is undefined for the annotation type
J'ai ajouté servlet-api 3.0.jar à mon projet, mais j'ai toujours ces problèmes.
C'est le code de mon servlet
package Jeans;
import Java.io.IOException;
import Java.io.InputStream;
import Java.sql.Connection;
import Java.sql.PreparedStatement;
import Java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
import com.Sun.Java.swing.plaf.windows.TMSchema.Part;
import javax.servlet.http.Part;
@WebServlet("/FileUploadDBServlet ")
//// i got an error here////////////////////////////
@MultipartConfig(maxFileSize = 16177215)
public class FileUploadDBServlet extends HttpServlet {
private String dbURL = "db";
private String dbUser = "dbuser";
private String dbPass = "dbpassword";
String messageMio = "da contorllare";
GestioneDB gestioneDB;
boolean connessione;
Connection conn;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String giorno= request.getParameter("giorno");
String mese= request.getParameter("mese");
String anno= request.getParameter("anno");
String dataFormatoItaliano = giorno + "-" + mese + "-" + anno;
String titolo = request.getParameter("titolo");
String titoletto = request.getParameter("titoletto");
String testoMouse = request.getParameter("testoMouse");
String link = request.getParameter("link");
String data = dataFormatoItaliano;
String testo = request.getParameter("testo");
//// i got an error here////////////////////////////
Part filePart = request.getPart("immaginePrincipale");
String didascaliaImmaginePrincipale = request.getParameter("didascaliaImmaginePrincipale");
InputStream immaginePrincipale = null;
if (filePart != null) {
// obtains input stream of the upload file
immaginePrincipale = filePart.getInputStream();
}
String message = null;
try {
gestioneDB = new GestioneDB();
conn = gestioneDB.cn();
gestioneDB.inserimentoNews(titolo, titoletto, testoMouse, link, testo, data, immaginePrincipale, didascaliaImmaginePrincipale);
String sql = "INSERT INTO allegati_news (allegato,didascalia,tipo,id_news,immagine) values (?,?,?,?,?)";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1, "firstName");
statement.setString(2, "lastName");
statement.setInt(3, 1);
statement.setInt(4,1);
if (immaginePrincipale != null) {
statement.setBlob(5, immaginePrincipale);
}
int row = statement.executeUpdate();
if (row > 0) {
message = "File salvato nel db";
}
} catch (SQLException ex) {
message = "ERROR: " + ex.getMessage();
ex.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
request.setAttribute("Message", gestioneDB.getInserimentoNewMessaggio());
getServletContext().getRequestDispatcher("/Message.jsp").forward(request, response);
}
}
}
Ceci est mon fichier web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Jeans2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>prova</display-name>
<servlet-name>prova</servlet-name>
<servlet-class>Jeans.prova</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>prova</servlet-name>
<url-pattern>/prova</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>FileUploadDBServlet</display-name>
<servlet-name>FileUploadDBServlet</servlet-name>
<servlet-class>Jeans.FileUploadDBServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadDBServlet</servlet-name>
<url-pattern>/FileUploadDBServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>BlobDisplay</display-name>
<servlet-name>BlobDisplay</servlet-name>
<servlet-class>Jeans.BlobDisplay</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BlobDisplay</servlet-name>
<url-pattern>/BlobDisplay</url-pattern>
</servlet-mapping>
</web-app>
Essayez d’ajouter servlet-api.jar au lieu de servelt-api-3.0 jar.Stop le serveur. Actualisez le projet, puis démarrez le serveur et voyez. Je pense que ça devrait marcher. Assurez-vous que vous ajoutez le fichier servlet-api.jar à partir du dossier Tomcat lib. Supposons que votre Tomcat soit dans C:\Tomcat\lib. Dans Eclipse, cliquez avec le bouton droit de la souris sur votre fichier jar externe project-properties-javabuildpath-add, puis sélectionnez servlet-api.jar dans votre dossier Tomcat.
Faites un clic droit sur le projet ---> Propriétés ---> Chemin de construction Java ---> Ajouter une bibliothèque ... ---> Exécution du serveur ---> Apache Tomcat ----> Terminer.
Une raison possible de cette erreur consiste à utiliser une version incorrecte de l'API Servlet. L'annotation @WebServlet
est prise en charge par Servlet 3.0 . Vous devez modifier la version de 2.5 à 3.0. Pour ce faire dans Eclipse, cliquez avec le bouton droit de la souris sur votre projet et ouvrez Propriétés . Sélectionnez Facettes du projet dans le menu de gauche de la page affichée. Ensuite, modifiez la version de Dynamic Web Module facet à 3.0.
Une autre raison possible peut être liée à votre version de Tomcat. Tomcat prend en charge Servlet 3.0 à partir de la version 7.0.
Téléchargez servlet-api.jar il y aura un fichier Zip. N'oubliez pas de le décompresser. Parce que j'ajoutais le dossier Zip et que cela ne fonctionnait pas. Arrêtez le serveur et nettoyez-le. publiez-le et redémarrez-le.