栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

servlet 读取表单的输入数据、文件上传

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

servlet 读取表单的输入数据、文件上传

表单submit分通常为get和post两种方式。

> get:通过request.getParameter("参数名")可以取得输入框的输入数据

> post:可实现输入框数据读取,文件上传

    ①利用下述软件包,放置在/WEB-INF/lib目录下。

        commons-fileupload-版本号.jar:http://commons.apache.org/fileupload/下载

        commons-io-版本号.jar:http://commons.apache.org/io/下载

    ②利用ServletAPI的Part接口实现

代码如下:





Hello App


	
User Name:
Load File1:

> get方式

@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet{

	public void service(HttpServletRequest request, HttpServletResponse response) 
		throws ServletException, IOException {
		
		response.setContentType("text/plain; charset=UTF-8");
		
		PrintWriter outPrintWriter = response.getWriter();
		
		String usernameString = request.getParameter("username");
		outPrintWriter.println("Hello, "+usernameString);
		
		outPrintWriter.close();
	}
}

> post方式:commons-fileupload-版本号.jar、commons-io-版本号.jar

@WebServlet(urlPatterns = "/upload",
initParams = {
		@WebInitParam(name="filepath",value = "/store"),
		@WebInitParam(name="tempfilepath",value = "/store")
})
public class FileuploadServlet extends HttpServlet{

	private String filepathString;
	private String tempfilepathString;
	
	
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		filepathString = config.getInitParameter("filepath");
		tempfilepathString = config.getInitParameter("tempfilepath");
		filepathString = getServletContext().getRealPath(filepathString);
		tempfilepathString = getServletContext().getRealPath(tempfilepathString);	
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException{
		
		response.setContentType("text/plain");	
		response.setCharacterEncoding("UTF-8");	
		
		PrintWriter printWriter = response.getWriter();
		
		try {
			DiskFileItemFactory factory = new DiskFileItemFactory();
			factory.setSizeThreshold(4*1024);
			factory.setRepository(new File(tempfilepathString));
			
			ServletFileUpload upload = new ServletFileUpload(factory);
			upload.setSizeMax(4*1024*1024);
			
			List items = upload.parseRequest(request);
			for(FileItem fileItem :items) {
				if(fileItem.isFormField()) {
					processFormField(fileItem, printWriter);
				}else {
					processUploadFile(fileItem, printWriter);
				}
			}
			
			printWriter.close();
			
		} catch (Exception e) {
			throw new ServletException(e);
		}
	}
	
	private void processFormField(FileItem item, PrintWriter out) {
		String nameString = item.getFieldName();
		String valueString = null;
		try {
			valueString = item.getString("UTF-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		out.println(nameString+": "+valueString+"rn");	
		System.out.println(valueString);
	}
	
	private void processUploadFile(FileItem item, PrintWriter out) 
		throws Exception{
		
		String filenameString = item.getName();
		int index = filenameString.lastIndexOf("\");
		filenameString = filenameString.substring(index+1, filenameString.length());
		long filesize = item.getSize();
		
		File file = new File(filepathString+"/"+filenameString);
		item.write(file);
		
		out.print(filenameString + " is saved.   File Size = " + filesize);	
		out.println();
		
	}
}

> post方式:ServletAPI的Part接口

@WebServlet(urlPatterns = "/upload2")
@MultipartConfig
public class FileuploadServlet2 extends HttpServlet {
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) 
		throws ServletException, IOException {
		
		response.setContentType("text/plain");
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		String savepathString = getServletContext().getRealPath("/store");		
		PrintWriter outPrintWriter = response.getWriter();
		
		Collection parts = request.getParts();
		
		for(Part part : parts) {
			String headerString = part.getHeader("content-disposition");			
			System.out.println("type:" + part.getContentType());
			System.out.println("size:" + part.getSize());
			System.out.println("name:" + part.getName());
			System.out.println("header:" + headerString);
			
			if(part.getContentType() == null) {
				outPrintWriter.println(part.getName() + "=" + request.getParameter(part.getName()) + "rn");				
			} else if(part.getName().indexOf("file") != -1) {
				
				String filenameString = getFileName(headerString);				
				part.write(savepathString + File.separator + filenameString);
				
				outPrintWriter.println(filenameString + " is saved." + "rn");				
			}
		}
		
		outPrintWriter.close();
	}
	
	private String getFileName(String header) {
		return header.substring(header.lastIndexOf("=") + 2, header.length()-1);
	}	
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号