Javaweb获取表单数据的多种方式
作者:张行之 发布时间:2022-12-25 18:13:41
标签:javaweb,表单
Javaweb获取表单数据的几种方式
一、通过键值对的形式获取表单数据
getParameter(String name):通过key,返回一个value。
getParameterValues(String name):通过key返回一个string数组(多个值)
getParameterNames():返回form表单中的所有key值。
下面介绍通过键值对获取form表单数据的数据的方法:
@WebServlet({ "/FormServlet", "/form" })
public class FormServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FormServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/json;charset=utf-8");
PrintWriter out = response.getWriter();
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String name = paramNames.nextElement();
String[] values = request.getParameterValues(name);
if(values!=null && values.length>0){
StringBuilder builder = new StringBuilder();
for (int i = 0; i < values.length; i++) {
builder.append(values[i]+" ");
}
out.println(name+" : "+builder.toString());
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
form表单:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/TomcatDemo/form" method="post">
用户名<input type="text" name="username"/><br/>
密码 <input type="password" name="password"/><br/>
性别 <input type="radio" name="sex" value="male" checked="checked"/>男
<input type="radio" name="sex" value="female"/>女<br/>
爱好 <input type="checkbox" name="hobby" value="basketball"/>篮球
<input type="checkbox" name="hobby" value="football"/>足球
<input type="checkbox" name="hobby" value="game"/>游戏
<input type="checkbox" name="hobby" value="media"/>电影<br/>
城市 <select name="city">
<option value="bj">北京</option>
<option value="sh">上海</option>
<option value="sz">深圳</option>
<option value="hz">杭州</option>
</select><br/>
<input type="submit" value="注册"/>
<input type="submit" value="登入"/><br/>
</form>
</body>
</html>
二、通过Map的形式获取表单数据
getParameterMap():获取form表单的数据,以map的格式封装起来
示例:
@WebServlet({ "/FormServlet", "/form" })
public class FormServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FormServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/json;charset=utf-8");
PrintWriter out = response.getWriter();
User user = new User();
out.println("获取表单数据之前:"+user.toString());
Map<String,String[]> map = request.getParameterMap();
for (Map.Entry<String, String[]> m : map.entrySet()) {
String name = m.getKey();
String[] values = m.getValue();
//属性描述器:表示JavaBean类通过存储器导出一个属性
PropertyDescriptor pd=null;
try {
pd = new PropertyDescriptor(name, User.class);
} catch (IntrospectionException e) {
e.printStackTrace();
}
if (values!=null&& pd !=null) {
Method setter = pd.getWriteMethod();
try {
if (values.length==1) {
setter.invoke(user, values[0]);
}else {
setter.invoke(user, (Object)values);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
out.println("获取表单数据之后:"+user.toString());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
PropertyDescriptor的使用,点击查看
User类
public class User {
private String username;//属性名称需要和表单数据中的name值保持一致
private String password;
private String sex;
private String[] hobby;
private String city;
...
//set get方法省略
}
三、通过第三方jar包获取封装表单数据
使用第三方jar包:commons-beanutils-1.8.3.jar
@WebServlet({ "/FormServlet", "/form" })
public class FormServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FormServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/json;charset=utf-8");
PrintWriter out = response.getWriter();
User user = new User();
out.println("获取表单数据之前:"+user.toString());
try {
//通过第三方jar包处理
BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
out.println("获取表单数据之后:"+user.toString());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}


猜你喜欢
- 归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但类似于原问题的子问题——《算法导论》。在每一层递归中都有3个步
- 前言在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递
- 1、基本介绍随着分词在信息检索领域应用的越来越广泛,分词这门技术对大家并不陌生。对于英文分词处理相对简单,经过拆分单词、排斥停止词、提取词干
- 开始研究android开发,搭建开发环境的时候就出了问题……果然是好事多磨~ 安装了jdk,配置环境变量,安装了完整版的adt、创建了hel
- 一、微信官方文档微信支付开发流程(公众号支付)首先我们到微信支付的官方文档的开发步骤部分查看一下需要的设置。[图片上传失败...(image
- 本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下IDE用的是 VS2019先看效果 代码全览game.
- 日志过滤对于一个网站日志,首先要对它进行过滤,删除一些不必要的信息,我们通过scala语言来实现,清洗代码如下,代码要通过别的软件打包为ja
- 1.线程与进程进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是一个实体,一个进程中至少有一个线程,是CPU
- 用Stopwatch分段监控了一下,发现耗时最多的函数是SaveToExcel此函数中遍列所有数据行,通过Replace替换标签生成Exce
- 一、读线圈状态/// <summary> /// 读线圈状态测试 &nbs
- 本文为大家分享了Android操作蓝牙2.0的使用方法,供大家参考,具体内容如下1.Android操作蓝牙2.0的使用流程(1)找到设备uu
- RollViewPager是一个自动轮播的Viewpager,支持无限循环。 触摸时会暂停播放,直到结束触摸一个延迟周期以后继续播放。 看起
- java 配置MyEclipse Maven环境虽然我的大部分项目已经迁到Idea上去了,但是在写部分小的测试程序的时候还是习惯
- 前言这段时间比较闲,就看起了jdk源码。一般的一个高级开发工程师, 能阅读一些源码对自己的提升还是蛮大的。本文总结了一些JDK源码中的“小技
- 以卖票的例子来介绍多线程和资源共享,下面我们
- 将Excel转为PDF格式时,通常情况下转换出来的PDF页面都是默认的宽度大小;如果Excel表格数据的设计或布局比较宽或者数据内较少的情况
- 修改整理的一个通用类,用来操作oracle数据库 十分的方便,支持直接操作sql语句和Hash表操作.现在修补MIS我都用这个类,节约了大
- instanceof关键字的使用1. 语法格式x instanceof A:检验x是否为类A的对象,返回值为boolean类型,如果是,返回
- 前言尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合。下面的例子可以作为典型的IO用法的基本参考。在这些示例中,异常处
- 本文以实例形式讲述了C#应用BindingSource实现数据同步的方法,对C#数据库程序开发来说具有一定的参考借鉴价值。具体实现方法如下: