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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我有个问题,但我看不出我做错了什么?我想用最简单的方法来实现这一点,稍后我会让它变得更复杂,但现在我只想点击post方法,我甚至不在乎里面的代码当前是否正常工作。 我唯一关心的是它会发回一个OK 200的回复。 目前,我收到一个内部服务器错误500响应或405方法不允许响应,具体取决于我是尝试发送数据还是仅使用浏览器强制方法调用。 有一个IOS应用程序发送下面的post请求,我有一个测试PHP脚本
本文向大家介绍Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例,包括了Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例的使用技巧和注意事项,需要的朋友参考一下 用servlet实现一个注册的小功能 ,后台获取数据。 注册页面: 注册页面代码 : 人员实体类: 注意:人员实体类要与表单中的name一致,约定要优于编码 接收方法一:
本文向大家介绍jQuery获取多种input值的简单实现方法,包括了jQuery获取多种input值的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 获取input的checked值是否为true: 第一种: if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 --注:name即控件name属性,va
本文向大家介绍获取SQL Server数据库元数据的几种方法,包括了获取SQL Server数据库元数据的几种方法的使用技巧和注意事项,需要的朋友参考一下 元数据简介 元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意
问题内容: 我的函数中有一个简单的表单,如下所示: 我应该在访问和字段中写些什么? 问题答案: 使用输入上的事件来更新组件的状态并在以下位置访问它: 工作提琴。 另外,阅读文档,有一整节专门讨论表单处理:表单 以前,您还可以使用React的双向数据绑定帮助器mixin来实现相同的功能,但是现在不建议使用它来设置值和更改处理程序(如上所述): 文档在这里:双向绑定帮助器。
下面的代码是一个HTML表单,我想要做的是从该表单中获取输入,将其保存到会话存储,并能够跨页传输。 我知道通常如何这样做,但特别是对于HTML表单,这对我不起作用。 因此,如果一个用户在Conor中输入一个用户名,我希望该用户名保存到会话存储中,这样我就可以获得该用户名并在另一个页面上使用它 当我尝试从会话存储获取该输入时,它当前没有获取该输入,并且它什么也不做。 所以如果有人能向我解释一下我在获