Jsp 如何在多部分post请求中传递参数 Servlet代码 HTML代码 文件上载表格 文件上载: 选择要上载的文件:

Jsp 如何在多部分post请求中传递参数 Servlet代码 HTML代码 文件上载表格 文件上载: 选择要上载的文件:,jsp,servlets,file-upload,multipartform-data,Jsp,Servlets,File Upload,Multipartform Data,我的问题是:如何在多部分post请求中传递fname参数?简短回答:您将在请求的部分找到fname 长答案:对于多部分类型的请求,即使是简单的字段值也会放在部分中。您必须迭代HttpServletRequest.getParts()返回的Part对象,并根据它们的名称属性处理它们: for( Part p : request.getParts() ) { if( "fname".equals(p.getName()) ) { ... } else if(

我的问题是:如何在多部分post请求中传递
fname
参数?

简短回答:您将在请求的
部分找到
fname

长答案:对于多部分类型的请求,即使是简单的
字段值也会放在部分中。您必须迭代
HttpServletRequest.getParts()
返回的
Part
对象,并根据它们的
名称
属性处理它们:

for( Part p : request.getParts() ) {
    if( "fname".equals(p.getName()) ) {
        ...
    }
    else if( "file".equals(p.getName()) ) {
        ...
    }
}
为了使事情进一步复杂化,该部件的内容可用作
InputStream
-
part.getInputStream()
-因此您必须对流进行一些转换→ <代码>字节[]
→ <代码>字符串获取值。

链接每个程序
Link Each Programms
------------------------------------------------------

import java.sql.*;
import java.io.*;

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;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import java.util.Hashtable;
import java.util.List;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.ParameterParser;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


/**
 * Servlet implementation class Recent
 */
@WebServlet("/Recent")
@MultipartConfig
public class Recent extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Recent() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub
         Sample  s1=new Sample();
         final String UPLOAD_DIRECTORY = "/home/pradeep/Documents/pradeep/WebContent/Images";
         if(ServletFileUpload.isMultipartContent(request)){
                try {
         List<FileItem> multiparts = new 
                            ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);

                    for(FileItem item : multiparts){
                        if(!item.isFormField())
                        {
                            String name = new File(item.getName()).getName();
                            item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
                            String Path= "/home/pradeep/Documents/pradeep/WebContent/Images/" +name;


                          s1.connecting(Path);


                        }
                    }

                        request.setAttribute("message", "File Uploaded Successfully");
                } catch (Exception ex) {
                   request.setAttribute("message", "File Upload Failed due to " + ex);
                }          

            }else{
                request.setAttribute("message",
                                     "Sorry this Servlet only handles file upload request");
            }



                request.getRequestDispatcher("/Result.jsp").forward(request, response);




    }

}
-------------------------------------------------------------------------------------------
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import dbconnections.Connections;



public class Sample {
    Connections con=new Connections();

    public void connecting(String Path)
    {
        Connection conn=con.Connect();

        PreparedStatement pst;
        String query="INSERT INTO Student1 (Path) values (?)";
       try {

            pst=conn.prepareStatement(query);
            pst.setString(1,Path);
            pst.executeUpdate();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // TODO Auto-generated method stub
    }


}
-------------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
            <h3> Choose File to Upload in Server </h3>          
           <form action="Recent" method="post" enctype="multipart/form-data">

            <input type="file" name="file" />
            <input type="submit" value="upload" />
            </form>          
        </div>


</body>
</html>
------------------------------------------------------ 导入java.sql.*; 导入java.io.*; 导入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; 导入javax.servlet.annotation.MultipartConfig; 导入javax.servlet.annotation.WebServlet; 导入java.util.Hashtable; 导入java.util.List; 导入org.apache.commons.fileupload.FileItem; 导入org.apache.commons.fileupload.ParameterParser; 导入org.apache.commons.fileupload.disk.DiskFileItemFactory; 导入org.apache.commons.fileupload.servlet.ServletFileUpload; /** *最近的Servlet实现类 */ @WebServlet(“/最近”) @多重配置 公共类最近扩展了HttpServlet{ 私有静态最终长serialVersionUID=1L; /** *@参见HttpServlet#HttpServlet() */ 公众近期{ 超级(); //TODO自动生成的构造函数存根 } /** *@请参阅HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse响应) */ 受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{ //TODO自动生成的方法存根 样本s1=新样本(); 最终字符串UPLOAD_DIRECTORY=“/home/pradeep/Documents/pradeep/WebContent/Images”; if(ServletFileUpload.isMultipartContent(请求)){ 试一试{ 列表多部分=新建 ServletFileUpload(新的DiskFileItemFactory()).parseRequest(请求); 用于(文件项:多部分){ 如果(!item.isFormField()) { 字符串名称=新文件(item.getName()).getName(); item.write(新文件(UPLOAD_DIRECTORY+File.separator+name)); 字符串路径=“/home/pradeep/Documents/pradeep/WebContent/Images/”+名称; s1.连接(路径); } } request.setAttribute(“消息”,“文件上传成功”); }捕获(例外情况除外){ request.setAttribute(“消息”,“文件上载因“+ex”而失败); } }否则{ request.setAttribute(“消息”, “抱歉,此Servlet仅处理文件上载请求”); } request.getRequestDispatcher(“/Result.jsp”).forward(请求,响应); } } ------------------------------------------------------------------------------------------- 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.PreparedStatement; 导入java.sql.ResultSet; 导入java.sql.SQLException; 导入dbconnections.Connections; 公共类样本{ 连接con=新连接(); 公共无效连接(字符串路径) { 连接conn=con.Connect(); 编制报表pst; String query=“插入Student1(路径)值(?”; 试一试{ pst=conn.prepareStatement(查询); pst.setString(1,路径); pst.executeUpdate(); }捕获(SQLE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } //TODO自动生成的方法存根 } } ------------------------------------------------------------------------------------- 在此处插入标题 选择要在服务器中上载的文件
然后使用类型“fname”不存在。有关可飞行类型,请参见。服务器端“名称”中的Alse也不存在。您应该使用request.getparameter(“fname”)。我已经更正了。仍然不工作。可能操作是UploadServlet.jsp?request.getParts()。。。不存在……好吧,Javadocs说它可以在他们的网站上找到,但它不存在于我的HttpServletRequest中。我找到了解决方案。如果您也有这个问题,请将javax.servlet.api升级到3.0.1
for( Part p : request.getParts() ) {
    if( "fname".equals(p.getName()) ) {
        ...
    }
    else if( "file".equals(p.getName()) ) {
        ...
    }
}
Link Each Programms
------------------------------------------------------

import java.sql.*;
import java.io.*;

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;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import java.util.Hashtable;
import java.util.List;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.ParameterParser;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


/**
 * Servlet implementation class Recent
 */
@WebServlet("/Recent")
@MultipartConfig
public class Recent extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Recent() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub
         Sample  s1=new Sample();
         final String UPLOAD_DIRECTORY = "/home/pradeep/Documents/pradeep/WebContent/Images";
         if(ServletFileUpload.isMultipartContent(request)){
                try {
         List<FileItem> multiparts = new 
                            ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);

                    for(FileItem item : multiparts){
                        if(!item.isFormField())
                        {
                            String name = new File(item.getName()).getName();
                            item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
                            String Path= "/home/pradeep/Documents/pradeep/WebContent/Images/" +name;


                          s1.connecting(Path);


                        }
                    }

                        request.setAttribute("message", "File Uploaded Successfully");
                } catch (Exception ex) {
                   request.setAttribute("message", "File Upload Failed due to " + ex);
                }          

            }else{
                request.setAttribute("message",
                                     "Sorry this Servlet only handles file upload request");
            }



                request.getRequestDispatcher("/Result.jsp").forward(request, response);




    }

}
-------------------------------------------------------------------------------------------
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import dbconnections.Connections;



public class Sample {
    Connections con=new Connections();

    public void connecting(String Path)
    {
        Connection conn=con.Connect();

        PreparedStatement pst;
        String query="INSERT INTO Student1 (Path) values (?)";
       try {

            pst=conn.prepareStatement(query);
            pst.setString(1,Path);
            pst.executeUpdate();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // TODO Auto-generated method stub
    }


}
-------------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
            <h3> Choose File to Upload in Server </h3>          
           <form action="Recent" method="post" enctype="multipart/form-data">

            <input type="file" name="file" />
            <input type="submit" value="upload" />
            </form>          
        </div>


</body>
</html>