La méthode getPart(Chaîne de caractères) n'est pas défini pour le type HttpServletRequest
J'ai travaillé sur Java web du projet dans lequel j'ai besoin de télécharger une image par le biais de la page JSP, et le stocker dans une base de données MySQL.
Je suis dans l'image en multipartites qui est disponible pour la Servlet 3.0 ou supérieur.
J'ai été en utilisant le getPart("image") pour obtenir l'image de la partie par partie, mais il me montre le message d'erreur suivant:
"La méthode getPart(Chaîne de caractères) n'est pas défini pour le type HttpServletRequest"
- Le serveur, je suis en utilisant: Tomcat 7
- L'IDE que j'utilise: Eclipse Luna
Voici les extraits de code:
ImageUploadServlet:
package com.nagarro.imagemanagementutility.controller;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import com.nagarro.imagemanagementutility.util.Constants;
/**
* Servlet implementation class ImageUploadServlet
*/
@MultipartConfig(maxFileSize=Constants.MAX_FILE_SIZE) //Upload image file size upto 16 MB
public class ImageUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImageUploadServlet() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream inputStream = null;
//obtains the upload image file in this multipart request
Part imagePart = request.getPart("photo");
}
}
UserImageUtility.jsp
HTML:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Image Management Utility</title>
</head>
<body>
<table border="1" align="center" width="900px">
<tr>
<td>
<div align="center">
<h3>Image Management Utility</h3>
</div>
</td>
</tr>
<tr>
<td>
<div>Please select an image file to upload (Max Size 1 MB)</div>
<form action="ImageUploadServlet" method="post"
enctype="multipart/form-data">
<input type="file" name="image" size="50" />
<div align="right">
<input type="submit" name="sbtnSubmit" value="Submit" />
<input type="button" name="btnCancel" value="Cancel" />
</div>
</form>
</td>
</tr>
</table>
</body>
</html>
pom.xml:
HTML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nagarro</groupId>
<artifactId>Assignment_4_ImageManagementUtility</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Assignment_4_ImageManagementUtility Maven Webapp</name>
<url>http://maven.apache.org</url>
<build>
<finalName>Assignment_4_ImageManagementUtility</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.nagarro.imagemanagementutility.controller.ApplicationLauncher</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<finalName></finalName>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
<!-- Hibernate uses slf4j for logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
</project>
La liste des jar dans le répertoire "lib":
- Erreur de compilation, c'est exact? Si oui, veuillez fournir votre pom.xml, de construire.gradle, liste des jarres dans lib/, etc-ce que vous utilisez pour la gestion de la dépendance.
- Salut, j'ai ajouté la liste des pots dans la lib. En dehors de cela, j'ai ajoutés de manière externe le jars suivants: javax.servlet.jar, commons-fileupload-1.3.1.jar, commons-io-2.4.jar
Vous devez vous connecter pour publier un commentaire.
Vous avez plus d'un Servlet API jar sur votre classpath. JSTL est ooooold et vous avez un tas de JSTL artefacts dans votre pom.xml en tirant dans le vieux-servlet versions. Supprimer
javax.servlet:jstl
,jstl:jstl
, etjavax.servlet.jsp.jstl:jstl-api
à partir de votre pom.xml et essayez plutôt ceci:P. S. Eclipse ajouté Tomcat, les pots pour le chemin de classe de sorte que vous pouvez supprimer
java.servlet:servlet-api
à partir de votre pom.xml est vous voulez. Si vous le gardez, ajouter<scope>provided</scope>
ou Tomcat va se plaindre. C'est le conteneur de servlet a la responsabilité de fournir les servlets, de sorte que vous ne devriez pas inclure dans votre GUERRE, même si Tomcat est assez intelligent pour garder d'être un problème.La méthode
est disponible dans HttpServletRequest Java EE 6, mais pas dans HttpServletRequest Java EE 5.
Assurez-vous que vous êtes à l'aide de Java EE 6.