Die Methode getPart(String) ist nicht definiert für den Typ HttpServletRequest
Habe ich die Arbeit auf Java-web-Projekt, in das ich brauche, um ein Bild hochzuladen, die durch die JSP-Seite, und speichern Sie es in eine MySQL-Datenbank.
Ich bin die Eingabe der Bild in multiparts, die verfügbar ist für Servlet 3.0 oder höher.
Habe ich mit der getPart("Bild"), um das Bild Teil für Teil, aber es zeigt mir folgenden Fehler:
"Der Methode getPart(String) ist nicht definiert für den Typ HttpServletRequest"
- Die server, die ich verwende: Tomcat 7
- Die IDE verwende ich Eclipse Luna
Hier sind die code-snippets:
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>
Die Liste der jar in den lib:
- Kompilieren-Fehler, richtig? Wenn ja, geben Sie bitte Ihre pom.xml, bauen.gradle, Liste der jar-Dateien in lib/ etc-was auch immer Sie verwenden für die dependency-management.
- Hi, ich habe die Liste von jars im lib. Abgesehen davon, habe ich extern Hinzugefügt, die die folgenden jar-Dateien: javax.servlet.jar, commons-fileupload-1.3.1.jar, commons-io-2.4.jar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie mehr als eine Servlet API jar auf deinem classpath. JSTL ist ooooold und Sie haben eine Reihe von JSTL Artefakte in Ihrem pom.xml das ziehen in eine alten-servlet-Versionen. Entfernen
javax.servlet:jstl
,jstl:jstl
, undjavax.servlet.jsp.jstl:jstl-api
von Ihrem pom.xml und versuchen Sie dies:P. S. Eclipse Hinzugefügt Tomcat jar-Dateien zum Klassenpfad, so können Sie entfernen
java.servlet:servlet-api
von Ihrem pom.xml ist Sie wollen. Wenn Sie halten Sie es, fügen Sie<scope>provided</scope>
oder Tomcat beschweren. Es ist der servlet-container, der die Verantwortung für die der servlet-Klassen, so sollten Sie nicht in den KRIEG, obwohl Tomcat ist smart genug, um es zu halten wird ein problem.Die Methode
ist in HttpServletRequest Java EE 6, aber nicht in HttpServletRequest Java EE 5.
Stellen Sie sicher, dass Sie mit Java EE 6.