gpt4 book ai didi

java - HttpServletRequest 类型的方法 getPart(String) 未定义

转载 作者:行者123 更新时间:2023-11-30 03:32:42 27 4
gpt4 key购买 nike

我一直在从事Java Web项目,其中我需要通过JSP页面上传图像并将其存储到MySQL数据库中。我正在以多部分形式输入图像,该图像适用于 Servlet 3.0 或更高版本。

我一直在使用 getPart("image") 逐部分获取图像,但它向我显示以下错误:“HttpServletRequest 类型的 getPart(String) 方法未定义”

  • 我使用的服务器:Tomcat 7
  • 我正在使用的 IDE:Eclipse Luna

以下是代码片段:

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

<%@ 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>
&nbsp;
<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:

<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>

lib 中的 jar 列表: The list of jars in the lib

最佳答案

您的类路径上有多个 Servlet API jar。 JSTL 太旧了,您的 pom.xml 中有一堆 JSTL 工件,它们拉入了旧的 servlet 版本。删除javax.servlet:jstl , jstl:jstl ,和javax.servlet.jsp.jstl:jstl-api从你的 pom.xml 尝试这个:

<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>java.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
</exclusions>
</dependency>

附注Eclipse 将 Tomcat 的 jar 添加到类路径中,以便您可以删除 java.servlet:servlet-api从你的 pom.xml 就是你想要的。如果保留,请添加 <scope>provided</scope>否则 Tomcat 会提示。 servlet 容器有责任提供 servlet 类,因此您不应该将它们包含在 WAR 中,尽管 Tomcat 足够聪明,可以防止它成为问题。

关于java - HttpServletRequest 类型的方法 getPart(String) 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28649992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com