Fileupload 处理表单问题

Fileupload 处理表单问题

<%@ 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>测试</title>
</head>
<body>
	<center>
		<!-- <form action="/Foods/IndexServlet" method="post"> -->
		<form action="/Foods/IndexServlet" method="post" enctype="multipart/form-data">
			<table>
				<tr>
					<td>用户名</td>
					<td>
						<input type="text" name="username">
					</td>
				</tr>
				<tr>
					<td>密码</td>
					<td>
						<input type="text" name="password">
					</td>
				</tr>
				<tr>
					<td>性别</td>
					<td>
						<input type="radio" name="sex" value="男">男
						<input type="radio" name="sex" value="女">女
					</td>
				</tr>
				<tr>
					<td>
						<input type="submit" value="提交">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>

package com.imooc.servlet;

import java.io.IOException;
import java.util.List;

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

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

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

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
		
		ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
		
		try {
			List<FileItem> list = (List<FileItem>)servletFileUpload.parseRequest(request);
			
			for(FileItem fileItem : list){
				if(fileItem.isFormField()){//普通表单项
					String name = fileItem.getFieldName();
					String value = fileItem.getString("utf-8");
					System.out.println("name:"+name);
					System.out.println("value:"+value);
					if(value == ""){
						System.out.println("1");
					}else if(value == null){
						System.out.println("2");
					}else{
						System.out.println("3");
					}
				}
			}
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		/*String username = request.getParameter("username");
		String password = request.getParameter("password");
		String sex = request.getParameter("sex");
		System.out.println("username:"+username);
		System.out.println("password:"+password);
		System.out.println("sex:"+sex);
		if(username == ""){
			System.out.println("1");
		}else if(username == null){
			System.out.println("2");
		}else{
			System.out.println("3");
		}
		
		if(password == ""){
			System.out.println("4");
		}else if(password == null){
			System.out.println("5");
		}else{
			System.out.println("6");
		}*/
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

//表单提交问题,使用最基本的表单提交时,如果什么都不填写,直接点击提交,在servlet处理的时候,request.getParameter("username")和request.getparameter("password"),对应的打印值为"",性别选择的打印值为null。而在使用fileupload提交表单时,表单什么也不写,对应的fileItem.getString("UTF-8")打印,既不是""也不是null,麻烦帮忙看一下。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 慕粉3355010 2018-11-26 10:02:29

问题补充,使用fileupload提交表单时,<input text="radio" 这个标签如果不选择的话,根本就不会打印值。

  • 请问同学的疑问点是什么呢,如果没有值,返回的就是空字符串,所以就不会打印值,祝学习愉快~
    2018-11-26 15:03:44
  • 提问者 慕粉3355010 回复 chrismorgen #2
    就是两种表单提交的方式,普通的提交表单,如果没有输入,servlet接收到name对应的value是“”。但是使用fileupload提交空表单,则servlet接收到对应的value的值既不是“”也不是null 那应该是什么 怎么判断才对,不知道你有没有理解我说的。
    2018-11-26 15:08:59
  • chrismorgen 回复 提问者 慕粉3355010 #3
    我明白同学的意思,value输出的是空字符串,也就是“”,你可以用.equals("")方法来判断他是否为空,祝学习愉快~
    2018-11-26 17:02:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师