1. 程式人生 > >springmvc獲取表單post資料

springmvc獲取表單post資料

原文連結:http://blog.csdn.net/yh_zeng2

表單提交的資料也就是請求資料,分為Get和Post兩種方式提交。

Controller中有三種方式獲取表單資料:

  •  Controller的方法,新增HttpServletRequst型別入參,通過HttpServletRequst.getParameter()獲取請求資料
  •  Controller的方法,新增對應表單欄位name的引數,有幾個表單欄位就新增多少個對應的入參,如下          
  1. @RequestMapping(value="/user/save", method=RequestMethod.POST)  
  2. private
     String doSave(@RequestParam("userName") String userName, @RequestParam("age") Integer age, HttpSession session){  
  •  Controller的方法,新增自定義Java型別的入參,並新增@ModelAttribute註解(實際上,可以不新增@ModelAttribute註解) ,由這個入參物件接收表單提交的資料,如下
  1. @RequestMapping(value="/user/save", method=RequestMethod.POST)  
  2. private String doSave(
    @ModelAttribute User user, HttpSession session){  


從上述描述,可以看出這幾種方式的優缺點。

在這裡,我推薦使用第三種方式,新增自定義Java型別的入參

下面我們就看看demo,如何使用第三種方式實現接收表單提交的資料

處理表單提交的Controller,FormSubmitController.java:

  1. package edu.mvcdemo.controller;  
  2. import javax.servlet.http.HttpSession;  
  3. import org.apache.commons.lang.builder.ReflectionToStringBuilder;  
  4. import org.apache.commons.lang.math.RandomUtils;  
  5. import org.apache.log4j.Logger;  
  6. import org.springframework.context.annotation.Scope;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.ModelAttribute;  
  9. import org.springframework.web.bind.annotation.PathVariable;  
  10. import org.springframework.web.bind.annotation.RequestMapping;  
  11. import org.springframework.web.bind.annotation.RequestMethod;  
  12. import edu.mvcdemo.model.User;  
  13. /** 
  14.  * @編寫人: yh.zeng 
  15.  * @編寫時間:2017-7-15 下午12:14:41 
  16.  * @檔案描述: 表單提交demo 
  17.  */
  18. @Controller
  19. @Scope("singleton"//只例項化一個bean物件(即每次請求都使用同一個bean物件),預設是singleton
  20. publicclass FormSubmitController {  
  21.     private Logger logger = Logger.getLogger(FormSubmitController.class);  
  22.     @RequestMapping(value="/user/view/{userId}", method=RequestMethod.GET)  
  23.     private String viewUser(@PathVariable("userId") String userId){  
  24.         return"user/view";  
  25.     }  
  26.     @RequestMapping(value="/admin/user", method=RequestMethod.GET, params="add")  
  27.     private String addUser(){  
  28.         return"user/add";  
  29.     }  
  30.     @RequestMapping(value="/user/save", method=RequestMethod.POST)  
  31.     private String doSave(@ModelAttribute User user, HttpSession session){  
  32.         user.setNo(RandomUtils.nextInt(1000)); //模擬資料庫持久化
  33.         /** 
  34.          * 進行資料庫的持久化,省略 
  35.          */
  36.         logger.info(ReflectionToStringBuilder.toString(user));  
  37.         session.setAttribute("user", user);  
  38.         return"redirect:/user/view/"+user.getNo();  
  39.     }  
  40. }  

新增使用者頁面add.jsp:

  1. <%@ page language="java"contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
  7. <title>新增使用者</title>
  8. </head>
  9. <body>
  10.    <formaction="${pageContext.request.contextPath}/user/save"method="post">
  11.               使用者名稱:<inputtype="text"name="userName"/><br><br>
  12.               年齡:<inputtype="text"name="age"/><br><br>
  13.        <inputtype="submit"value="提交"/>
  14.    </form>
  15. </body>
  16. </html>

檢視使用者資訊頁面view.jsp:

  1. <%@ page language="java"contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
  7. <title>檢視使用者資訊</title>
  8. </head>
  9. <body>
  10.               使用者編號: ${sessionScope.user.no} <br>
  11.               使用者名稱: ${sessionScope.user.userName} <br>
  12.               年齡:${sessionScope.user.age}   
  13. </body>
  14. </html>

Spring MVC配置的檢視解析器:

  1. <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
  2.     <propertyname="prefix"value="/jsp/"/>
  3.     <propertyname="suffix"value=".jsp"/>
  4. </bean>


效果:

點選【提交】之後,跳轉到檢視新新增的使用者資訊的頁面