服务器端获取表单数据

一、单个值

单个值的表单标签有:文本框、密码框、文本域、下拉列表、单选
项目如下:
服务器端获取表单数据_第1张图片
获取单个值:
服务器端获取表单数据_第2张图片

代码如下:

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
		<title>Insert title heretitle>
	head>
	<body>
		
		
		<form action="./LoginServlet">
			
			<input placeholder="请输入用户名" name="user_name"/>
			<br />
			
			<input type="password" placeholder="请输入密码" name="pass"/>
			<br />
			
			<input type="radio" name="gender" value="1" id="male"/><label for="male">label>
			<input type="radio" name="gender" value="2" id="female"/><label for="female">label>
			<br />
			
			<textarea name="summary">textarea>
			<br />
			
			<select name="grade">
				<option value="1">--请选择--option>
				<option value="2">--一年级--option>
				<option value="3">--二年级--option>
			select>
			<br />
			
			<input type="submit" value="登录"/>
		form>
	body>
html>
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//通过request调用getParameter()方法,通过传入标签中name值来获取内容
		
		//获取文本框内容
		String userName = request.getParameter("user_name");
		System.out.println("用户名为:"+userName);
		
		//获取密码内容
		String password = request.getParameter("pass");
		System.out.println("密码为:"+password);
		
		//获取单选内容,输出为选中选项value值
		String gender = request.getParameter("gender");
		System.out.println("性别为:"+gender);
		
		//获取文本域内容
		String summary = request.getParameter("summary");
		System.out.println("备注为:"+summary);
		
		//获取下拉列表内容,输出为选中选项value值
		String grade = request.getParameter("grade");
		System.out.println("年级为:"+grade);
		
	}
}

效果:
服务器端获取表单数据_第3张图片
服务器端获取表单数据_第4张图片
服务器端获取表单数据_第5张图片

二、多个值

单个值的表单标签有:复选
在表单中添加复选标签:
服务器端获取表单数据_第6张图片
代码如下:


<input type="checkbox" name="hoppy" value="1" id="bask"/><label for="bask">篮球label>
<input type="checkbox" name="hoppy" value="2" id="socc"/><label for="socc">足球label>
<input type="checkbox" name="hoppy" value="3" id="ping"/><label for="ping">乒乓球label>
<br />

在指定java文件中添加获取复选内容代码:
服务器端获取表单数据_第7张图片
代码如下:

/*依旧通过name获取,但是调用的方法为getParameterValues,返回为一个数组,
这个数组为选中选项的value值*/
String [] hoppies = request.getParameterValues("hoppy");
//遍历数组并输出
for (String hoppy : hoppies) {
	System.out.println(hoppy);
}

效果:
服务器端获取表单数据_第8张图片
服务器端获取表单数据_第9张图片

三、上传文件

表单标签:文件选择框

新的jar包:
服务器端获取表单数据_第10张图片
更改代码:


<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title heretitle>
	head>
	<body>
	
		<form action="./LoginServlet" method="post" enctype="multipart/form-data">
			<input placeholder="请输入用户名" name="user_name"/>
			<br />
			<input type="file" name="picture"/>
			<br />
			<input type="submit" value="登录"/>
		form>
	body>
html>
//LoginServlet.java
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(ServletFileUpload.isMultipartContent(request)){//1、判断当前form表单的编码方式是不是为enctype="multipart/form-data"
			FileItemFactory fileItemFactory = new DiskFileItemFactory();
			ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
			servletFileUpload.setFileSizeMax(1024*1024*6*10);//限定文件大小
			List<FileItem> fileItemList = null;
			try {
				fileItemList = servletFileUpload.parseRequest(request);//2、将form表单中每个携带数据的标签转换成每个FileItem对象并存到集合中
			} catch (FileUploadException e) {
				e.printStackTrace();
				request.setAttribute("message", "文件太大,上传失败");
				request.getRequestDispatcher("result.jsp").forward(request, response);
				return;
			}
			
			for(FileItem fileItem : fileItemList){//3、获取form表单所携带的数据
				if(fileItem.isFormField()){//为true表示为非文件类型的标签
					String key = fileItem.getFieldName();//summary
					String value = fileItem.getString();//summary对相的数据
					System.out.println(key+":"+value);
				}else{//文件类型
					try {
						String oldFileName = fileItem.getName();
						String fileNameSuffix=oldFileName.substring(oldFileName.lastIndexOf("."));//选择文件类型不唯一,所以需要截取文件后缀,接取存储时使用
						System.out.println(fileNameSuffix);
						String fileNamePrefix = UUID.randomUUID().toString();
						//新的文件名,防止多次选中同个文件在同一路径无法存储的情况
						//fileItem.write(new File("D:\\"+fileNamePrefix+fileNameSuffix));//未发布路径
						
						String path = "D://"+fileNamePrefix+fileNameSuffix;
						fileItem.write(new File(path+fileNamePrefix+fileNameSuffix));//发布路径
						System.out.println(path);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
			request.setAttribute("message", "文件上传成功");
			request.getRequestDispatcher("result.jsp").forward(request, response);
		}else{
			request.setAttribute("message", "当前form表单enctype属性的属性值非multipart/form-data");
			request.getRequestDispatcher("result.jsp").forward(request, response);
		}
	}
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title heretitle>
	head>
	<body>
		${message }
	body>
html>

效果:
服务器端获取表单数据_第11张图片
添加数据:
服务器端获取表单数据_第12张图片
服务器端获取表单数据_第13张图片
存储成功

你可能感兴趣的:(服务器端获取表单数据)