Java EE-@MultipartConfig不起作用

Java EE-@MultipartConfig不起作用,java,jakarta-ee,java-ee-7,Java,Jakarta Ee,Java Ee 7,我有一个.jsp文件,它通过表单向servlet发送一个多部分/表单数据,当我将请求传递给servlet时(从action属性),我尝试获取request.getParts(),我得到无法处理部分,因为没有提供多部分配置错误。请注意,启动.jsp文件时,即使在尝试按表单上载数据之前,我也会收到相同的消息。因此,问题可能出在.jsp文件中。我在servlet上使用了@MultipartConfig,但它不起作用 这是我的DisplayAlbum.jsp <%@page contentType

我有一个.jsp文件,它通过表单向servlet发送一个
多部分/表单数据
,当我将请求传递给servlet时(从action属性),我尝试获取
request.getParts()
,我得到
无法处理部分,因为没有提供多部分配置
错误。请注意,启动.jsp文件时,即使在尝试按表单上载数据之前,我也会收到相同的消息。因此,问题可能出在.jsp文件中。我在servlet上使用了@MultipartConfig,但它不起作用

这是我的DisplayAlbum.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<title>Photo Album</title>
<head></head>
<jsp:useBean id="photoHandleBean" class="src.PhotoHandleBean"/>
<body>
    <div>
        <form method="post" action="/RequestServlet" enctype="multipart/form-data">
            <input type="file" name="image">
            <input type="text" name="txt">
            <input type="submit" value="Update">
        </form>
    </div>
</body>
</html>

相册
RequestServlet类

package src;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet(name="RequestServlet" ,urlPatterns="/RequestServlet")
@MultipartConfig
public class RequsetServlet extends HttpServlet{

    @Override
    public void doGet(HttpServletRequest rq, HttpServletResponse rs) throws ServletException, IOException{

        PhotoAlbum pa = PhotoAlbum.getAlbum(rq.getSession());
        if(rq.getContentType() != null && rq.getContentType().contains("multipart/form-dasta")) {
            System.out.println("osdjfosdj");
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            InputStream input = null;
            String filename = "";
            for(Part p: rq.getParts()) {
                input = p.getInputStream();
                int c = 0;
                while((c = input.read()) != -1) {
                    baos.write(c);
                }
                filename = p.getSubmittedFileName();
            }
            input.close();
            baos.close();
            System.out.println(baos.toByteArray()+"<<<");
            pa.addPhoto(baos.toByteArray(), filename);

        }

        RequestDispatcher rd = getServletContext().getRequestDispatcher("/DisplayAlbum.jsp");
        rd.forward(rq, rs);
    }

    @Override
    public void doPost(HttpServletRequest rq, HttpServletResponse rs) throws ServletException, IOException{
        doGet(rq, rs);
    }

}
包src;
导入java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.MultipartConfig;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.servlet.http.Part;
@WebServlet(name=“RequestServlet”,urlPatterns=“/RequestServlet”)
@多重配置
公共类RequsetServlet扩展了HttpServlet{
@凌驾
public void doGet(HttpServletRequest rq、HttpServletResponse rs)抛出ServletException、IOException{
PhotoAlbum pa=PhotoAlbum.getAlbum(rq.getSession());
if(rq.getContentType()!=null&&rq.getContentType()包含(“多部分/表单数据存储”)){
System.out.println(“osdjfosdj”);
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
InputStream输入=null;
字符串filename=“”;
对于(第p部分:rq.getParts()){
输入=p.getInputStream();
int c=0;
而((c=input.read())!=-1){
编写(c);
}
filename=p.getSubmittedFileName();
}
input.close();
baos.close();

System.out.println(baos.toByteArray()+“我看到一个打字错误
getContentType().contains(“多部分/表单数据”)
应该是
getContentType().contains(“多部分/表单数据”)
这只是我发帖时的一个键入错误。在实际代码中,这是正确编写的。我发现了问题,并且是我使用的应用程序服务器的问题。谢谢
package src;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateful;
import javax.servlet.http.HttpSession;

public class PhotoAlbum {
    private List<String> filename = new ArrayList<String>();
    private List<byte[]> imageFile = new ArrayList<byte[]>();

    public static PhotoAlbum getAlbum(HttpSession session) {
        if(session.getAttribute("album") == null) {
            PhotoAlbum pa = new PhotoAlbum();
            session.setAttribute("album", pa);
        }
        return (PhotoAlbum) session.getAttribute("album");
    }

    public List<byte[]> getImages(){
        return this.imageFile;
    }

    public int getCount() {
        return imageFile.size();
    }

    public void addPhoto(byte[] photoByte, String filename) {
        imageFile.add(photoByte);
        this.filename.add(filename);
    }
}