Jsp 如何在多部分post请求中传递参数 Servlet代码 HTML代码 文件上载表格 文件上载: 选择要上载的文件:
我的问题是:如何在多部分post请求中传递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(
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>