spring mvc 接收表单 bean

spring MVC如何接收表单bean 呢?

之前项目中MVC框架一直用struts2,所以我也就按照struts2 的思维来思考

页面loginInput.jsp:

Html代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme() + "://"
  7. + request.getServerName() + ":" + request.getServerPort()
  8. + path + "/";
  9. %>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  14. <title>Insert title here</title>
  15. </head>
  16. <body>
  17. <center>
  18. <font color="red" >${message }</font>
  19. <form action="<%=path %>/user/loginVerify">
  20. <table>
  21. <tr>
  22. <td>身份证:</td>
  23. <td> <input type="text" name="user.identity"  /> </td>
  24. </tr>
  25. <tr>
  26. <td>用户编号:</td>
  27. <td><input type="text" name="user.studentID"  /> </td>
  28. </tr>
  29. <tr>
  30. <td colspan="2">
  31. <input type="submit"  value="login"/>
  32. </td>
  33. </tr>
  34. </table>
  35. </form>
  36. </center>
  37. </body>
  38. </html>
<?xml version="1.0" encoding="UTF-8" ?><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Insert title here</title></head><body>    <center>        <font color="red" >${message }</font>        <form action="<%=path %>/user/loginVerify">            <table>                <tr>                    <td>身份证:</td>                    <td> <input type="text" name="user.identity"  /> </td>                </tr>                <tr>                    <td>用户编号:</td>                    <td><input type="text" name="user.studentID"  /> </td>                </tr>                <tr>                    <td colspan="2">                    <input type="submit"  value="login"/>                    </td>                </tr>            </table>        </form>            </center>    </body></html>

控制器LoginController 中登录的方法:

Java代码  

  1. /***
  2. * 校验登录用户
  3. *
  4. * @param session
  5. * @param user
  6. * @return
  7. * @throws UnsupportedEncodingException
  8. * @throws Exception
  9. */
  10. @RequestMapping(value = "/loginVerify")
  11. public String login(User user, HttpSession session,
  12. Map<String, Object> map,Model model) throws UnsupportedEncodingException,
  13. Exception {
  14. User user2 = null;
  15. if (user.getIdentity() == null) {
  16. map.put("message", "请输入身份证");
  17. return "loginInput";
  18. }
  19. map.put("identity", user.getIdentity());
  20. model.addAttribute("identity", user.getIdentity());
  21. System.out.println("identity:"+session.getAttribute("identity"));
  22. user2 = this.userDao.getByIdentityAndStudentID(new User(user.getIdentity(),
  23. user.getStudentID()));
  24. System.out.println("user2:" + user2);
  25. if (user2 != null) {
  26. return "welcome";
  27. } else {
  28. map.put("message", "身份证和用户编号有误,请重新登录");
  29. return "loginInput";
  30. }
  31. }
/***     * 校验登录用户     *      * @param session     * @param user     * @return     * @throws UnsupportedEncodingException     * @throws Exception     */    @RequestMapping(value = "/loginVerify")    public String login(User user, HttpSession session,            Map<String, Object> map,Model model) throws UnsupportedEncodingException,            Exception {        User user2 = null;        if (user.getIdentity() == null) {            map.put("message", "请输入身份证");            return "loginInput";        }        map.put("identity", user.getIdentity());        model.addAttribute("identity", user.getIdentity());        System.out.println("identity:"+session.getAttribute("identity"));        user2 = this.userDao.getByIdentityAndStudentID(new User(user.getIdentity(),                user.getStudentID()));        System.out.println("user2:" + user2);        if (user2 != null) {            return "welcome";        } else {            map.put("message", "身份证和用户编号有误,请重新登录");            return "loginInput";        }    }

我认为页面表单中name为user.identity 和user.studentID的元素会自动注入到上述方法的变量User user 中,结果没有!!!?

实体类User:

Java代码  

  1. package com.springmvc.entity;
  2. import javax.persistence.Entity;
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.Id;
  5. /***
  6. * father class
  7. * @author huangwei
  8. *
  9. */
  10. @Entity
  11. public  class User {
  12. private int id;
  13. /**
  14. * 身份证
  15. */
  16. private String identity;
  17. /***
  18. * 用户编号
  19. */
  20. private String studentID;
  21. private String username;
  22. public User() {
  23. super();
  24. }
  25. public User(String identity, String studentID) {
  26. super();
  27. this.identity = identity;
  28. this.studentID = studentID;
  29. }
  30. @Id
  31. @GeneratedValue
  32. public int getId() {
  33. return id;
  34. }
  35. public void setId(int id) {
  36. this.id = id;
  37. }
  38. public String getIdentity() {
  39. return identity;
  40. }
  41. public void setIdentity(String identity) {
  42. this.identity = identity;
  43. }
  44. public String getStudentID() {
  45. return studentID;
  46. }
  47. public void setStudentID(String studentID) {
  48. this.studentID = studentID;
  49. }
  50. public String getUsername() {
  51. return username;
  52. }
  53. public void setUsername(String username) {
  54. this.username = username;
  55. }
  56. }
package com.springmvc.entity;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;/*** * father class * @author huangwei * */@Entitypublic  class User {    private int id;    /**     * 身份证     */    private String identity;    /***     * 用户编号     */    private String studentID;    private String username;        public User() {        super();    }    public User(String identity, String studentID) {        super();        this.identity = identity;        this.studentID = studentID;    }    @Id    @GeneratedValue    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getIdentity() {        return identity;    }    public void setIdentity(String identity) {        this.identity = identity;    }    public String getStudentID() {        return studentID;    }    public void setStudentID(String studentID) {        this.studentID = studentID;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    }

原来,spring MVC 跟struts2的注入方式不一样!!

后来我把页面中的name属性改为identity 和studentID 就好了:

<tr>

<td>身份证:</td>

<td> <input type="text" name="identity"  /> </td>

</tr>

<tr>

<td>用户编号:</td>

<td><input type="text" name="studentID"  /> </td>

</tr>

这就是spring MVC与struts2 ioc不同的地方!

原文地址:https://www.cnblogs.com/jpfss/p/8986470.html

时间: 2024-10-12 06:16:17

spring mvc 接收表单 bean的相关文章

spring mvc 接收表单数据

---恢复内容开始--- 一个普通的表单. 表单的代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/T

使用Spring MVC 的表单控制器SimpleFormController

以注册过程为例,我们可能会选择继承AbstractController来实现表单的显示,继承AbstractCommandController来实现表单的处理 ,这样是可行的,但必须要维护两个控制器 在这种情况下,我们应该使用SimpleFormController,他接受GET请求时显示表单,接受POST请求时处理表单,如果发生错误,控制器会知道重新显示这个表单,这样用户就可以修改错误,重新提交. 表单对应的POJO package com.dxz.validator.demo1.mode;

Spring MVC与表单日期提交的问题

Spring MVC与表单日期提交的问题 spring mvc 本身并不提供日期类型的解析器,需要手工绑定, 否则会出现非法参数异常. org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.Date]: Constructor threw exception; nested exception is java.lang.IllegalArgumentExc

spring mvc form表单提交乱码

spring mvc form表单submit直接提交出现乱码.导致乱码一般是服务器端和页面之间编码不一致造成的.根据这一思路可以依次可以有以下方案. 1.jsp页面设置编码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><meta http-equiv="Content-Type"

Spring MVC 3 表单中文提交后乱码问题的解决方法

在spring mvc 3.0 框架中,通过JSP页面.HTML页面以POST方式提交表单时,表单的参数传递到对应的servlet后会出现中文显示乱码的问题.解决办法可采用spring自带的过滤技术,对所有页面间参数的传递设置统一的字符编码. 分两步解决问题: 1.设置页面格式为UTF-8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 2.在web.xml中添加

Spring MVC 接受表单 自动封装特性

Spring MVC中的Controller可以以实体类接受来自客户端的form表单,表单的字段自动构成实体类对象 客户端的表单 <form action="http://localhost:8080/test/user" method="POST"> <!-- 每个字段名对应实体类 --> <div> <input type="text" name="name"/> </

Spring MVC —— form表单post提交出现乱码

主要原因是:页面提交时,使用<contentType:utf-8/>格式,而服务端HttpMessageConverter解码时使用其它格式解码(如:ISO-8859-1)导致 解决方案:在Servlet中设置CharacterEncoding为UTF-8格式. 方法一:在Web.xml中加入Spring的字符集过滤器(已测) <filter> <filter-name>CharacterEncodingFilter</filter-name> <fi

spring mvc 提交表单汉字乱码

修改web.xml添加如下信息 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name>

Spirng MVC +Velocity 表单绑定命令对象

通常,表单中的数据在提交之后可以通过Spring MVC的@RequestParam注解在控制器函数的参数列表中中提取出来,但是一旦表单数据过多的话,参数列表将会变得非常长,最好的解决方案是将表单中的数据封装到一个自定义的对象中,这样就可以直接用一个命令对象传递整个表单所包含的数据了. 关键字:#springBind宏 没错,这个宏是绑定的关键.首先我们需要开启spring mvc在velocity模板中对宏的支持,这个需要做以下设置: <bean id="viewResolver&quo