SpringMVC入门——day02:请求参数绑定实体类型、过滤器解决中文乱码、集合属性的封装

代码承接上一篇。

1. 为了简便代码,在pom中引入lombok的依赖

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.8</version>
    </dependency>

2. 创建实体类 User(domain 目录下)

@Data
public class User implements Serializable {
    private String uname;
    private Integer age;
}

由于lombok依赖的缘故,此处@Data可以帮我们自动添加 get、set 以及 toString 方法。

3. 在 Account 中加入 User 属性

@Data
public class Account implements Serializable {
    private String username;
    private String password;
    private String money;

    private User user;
}

4. 配置 param.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Param</title>
</head>
<body>
    <%--<a href="param/testParam?username=hehe&password=123">请求参数绑定</a>--%>

    <form action="param/saveAccount" method="post">
        姓名:<input type="text" name="username"/><br/>
        密码:<input type="text" name="password"><br/>
        金额:<input type="text" name="money"><br/>
        <input type="text" name="user.uname"><br/>
        <input type="text" name="user.age"><br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>

5. 在 web.xml 中配置过滤器解决中文乱码

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <!--配置前端控制器-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!--让DispatcherServlet加载路径classpath下的springmvc.xml配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!--DispatcherServlet类默认是第一次发请求的时候创建-->
        <!--配置load-on使在启动服务器时就开始创建DispatcherServlet
        它被创建后就可以加载springmvc配置文件了-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>  <!--'/'表示发任何的请求都会经过servlet-->
    </servlet-mapping>

    <!--配置解决中文乱码的过滤器-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

6. 实体类中的集合属性的封装

在 Account.java 中添加集合属性

@Data
public class Account implements Serializable {
    private String username;
    private String password;
    private String money;

//    private User user;

    private List<User> list;
    private Map<String, User> map;
}

param.jsp:

    <%--把数据封装到Account类中,类中存在list和map的集合--%>
    <form action="param/saveAccount" method="post">
        姓名:<input type="text" name="username"/><br/>
        密码:<input type="text" name="password"><br/>
        金额:<input type="text" name="money"><br/>

        用户姓名:<input type="text" name="list[0].uname"><br/>
        用户年龄:<input type="text" name="list[0].age"><br/>

        用户姓名:<input type="text" name="map['one'].uname"><br/>
        用户年龄:<input type="text" name="map['one'].age"><br/>
        <input type="submit" value="提交">
    </form>

猜你喜欢

转载自blog.csdn.net/dl674756321/article/details/90726451