Javaweb獲取表單數據的幾種方式


一、通過鍵值對的形式獲取表單數據

  • getParameter(String name):通過key,返回一個value。
  • getParameterValues(String name):通過key返回一個string數組(多個值) 返回個String[]
  • getParameterNames():返回form表單中的所有key值。  Enumeration<String> names

下面介紹通過鍵值對獲取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); } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM