撰写时间:2019年06月28日
Servlet获取页面提交过来的表单数据有多种,根据需要与提交的数据量选择
方法一:
以登录为例,提交的数据量不多,也没什么特殊的数据

页面代码:
<form id="formLogin" class="form-radius" method="post" action="${ctx}/servlet/loginServlet?fun=userLogin">
<h4 class="no-margins">登录:</h4>
<p class="m-t-md">登录到小象在线借贷平台</p>
<input name="username" type="text" class="form-control uname" placeholder="用户名" />
<input name="enterpassword" type="password" class="form-control pword m-b" placeholder="密码" />
<input name="identityKey" type="text" class="form-control pword m-b" placeholder="验证码" />
<img class="" id="imgIdentity" src="${ctx}/servlet/loginServlet?fun=identity" onclick="resetIdentity()">
<button type="button" class="btn btn-primary btn-block btn-radius" onclick="login()">登录</button>
<div class="alink">
<a href="${ctx}/servlet/mainServlet?fun=register">免费注册</a>
<a href="JavaScript:;">忘记密码</a>
<a href="JavaScript:;">忘记用户名</a>
</div>
</form>
接收方法一:
private void userLogin(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("username");//获取用户名
String enterpassword=request.getParameter("enterpassword");//获取密码
String identityKey=request.getParameter("identityKey");//获取验证码
System.out.println("用户名:"+userName+"登录密码:"+enterpassword+"验证码:"+identityKey);
}

接收方法二:
private void userLogin(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//获取传过来的表单数据,根据表单中的name获取所填写的值
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String strings = (String) names.nextElement();
String[] parameterValues = request.getParameterValues(strings);
for (int i = 0;parameterValues!=null&&i < parameterValues.length; i++) {
System.out.println(strings+":"+parameterValues[i]+"\t");
}
}
}
接收方法三: 使用inputStream流来进行接收
(一般字符串啥的不用这个方法,一般是文件上传下载时候才会使用这种方法)
例子:比如填写个人信息带头像的那种就用这个
//获取请求fileItems:参数和文件都在里面
List<FileItem>fileItems=upload.parseRequest(request);
for (FileItem fileItem : fileItems) {//遍历一个的取
if (fileItem.isFormField()) {//判断fileItem是不是表单元素(非文件)
InputStream in=fileItem.getInputStream();//只能拿到流
InputStreamReader reader=new InputStreamReader(in,"utf-8");
BufferedReader bfReader=new BufferedReader(reader);
String strValue=bfReader.readLine();//获取字段值
String fieldName=fileItem.getFieldName();//获取字段名称
}
}

本文介绍了在Servlet中如何获取页面提交的表单数据,包括三种不同的接收方法:常规方式,以及使用InputStream流的方式,适合不同场景下对数据量和类型的需求。特别提到,InputStream流主要用于文件上传下载的情景。
1823

被折叠的 条评论
为什么被折叠?



