• 基本类型参数:包括基本类型和 String 类型

@RequestMapping("/testParam")

public String testParam(String username,String password){

    System.out.println("执行了...");

    System.out.println("用户名是:"+username);

    System.out.println("密码是:"+password);

    return "success";

} 
  • POJO 类型参数:实体类

    在jsp页面中添加一个表单,并创建对应的实体类Account(name与参数名称一致)


<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="submit" value="提交">

</form> 
  • 请求参数绑定,把数据封装到Javabean的类中

/**

 * @return

 */

@RequestMapping("/saveAccount")

public String saveAccount(Account account){

    System.out.println("执行了...");

    System.out.println(account);

    return "success";

} 
  • POJO 类型参数:实体类+关联实体类

    在jsp页面中添加一个表单,新建一个User类,属性包括name和age,并在Account类中添加User类对象


<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.name"><br/>

    用户年龄:<input type="text" name="user.age"><br/>

    <input type="submit" value="提交">

</form> 
  • 数组和集合类型参数:包括 List 结构和 Map 结构的集合(包括数组)

    在jsp页面中添加一个表单,删除Account类中User对象属性,并定义一个List&lt;User&gt; list;集合对象属性和一个Map&lt;String,User&gt; map;集合对象属性。


<%--把数据封装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].name"><br/>

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

    用户姓名:<input type="text" name="map['one'].name"><br/>

    用户年龄:<input type="text" name="map['one'].age"><br/>

    <input type="submit" value="提交">

</form> 

SpringMVC 绑定请求参数是自动实现的,但是必须按照相关格式,如果绑定基本类型或者 String 类型,要求我们的参数名称必须和控制器中方法的形参名称保持一致(严格区分大小写)。如果是 POJO 类型,或者它的关联对象:要求表单中参数名称和 POJO 类的属性名称保持一致,并且控制器方法的参数类型是 POJO 类型。如果是集合类型,可以将集合类型的请求参数放在 POJO 中,在表单中请求参数名称要和 POJO 中集合属性名称相同,还可以接收的请求参数是 json 格式数据,并通过相关注解实现。

如果遇特殊类型转换要求,需要我们自己编写自定义类型转换器

案例:日期类类型的数据

日期的格式为2020/10/10,如果我们把格式修改为2020-10-10,SpringMVC在绑定参数时就会报错。

定义日期类


public class DataType implements Serializable{

    private Date date;

    public Date getDate() {

        return date;

    }

    public void setDate(Date date) {

        this.date = date;

    }

    @Override

    public String toString() {

        return "date=" + date;

    }

} 

在JSP页面中添加表单,并在表单中传输2020-10-10格式的日期数据


<%--自定义类型转换器--%>

<form action="param/saveDate" method="post">

    日期:<input type="text" name="date">

    <input type="submit" value="提交">

</form> 

执行测试代码:


/**

 * 自定义类型转换器

 * @param dateType

 * @return

 */

@RequestMapping("/deleteDate")

public String deleteDate(DateType date){

    System.out.println("执行了...");

    System.out.println(date);

    return "success";

} 

上边代码执行过后会发现报错,因为SpringMVC不能解析这个数据,这时需要我们自定义类型转换器:

  • 第一步:定义一个类,实现 Converter 接口

public class StringToDateConverter implements Converter<String, Date> {

    @Override

    public Date convert(String source) {

        //判断

        if(source==null){

            throw new RuntimeException("请您传入数据");

        }

        DateFormat df=new SimpleDateFormat("yyy-MM-dd");

        try{

            //把字符串转换为日期

            return df.parse(source);

        }catch (Exception e){

            throw new RuntimeException("数据类型转换出现错误");

        }

    }

} 
  • 第二步:在 spring 配置文件中配置类型转换器,spring 配置类型转换器的机制是,将自定义的转换器注册到类型转换服务中去。

<!--配置自定义类型转换器-->

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">

    <property name="converters">

        <set>

            <!--类型转换器的路径-->

            <bean class="com.ly.utils.StringToDateConverter"></bean>

        </set>

    </property>

</bean> 
  • 第三步:在 annotation-driven 标签中引用配置的类型转换服务

<!-- 引用自定义类型转换器 --> 

<mvc:annotation-driven conversion-service="converterService"></mvc:annotation-driven> 

这样就是先自定义类型转换了。

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

SpringMVC--请求参数绑定,Java题库百度云

SpringMVC--请求参数绑定,Java题库百度云