SpringMVC学习总结一

SpringMVC学习总结一

请求参数获取

SpringMVC可以获取如下类型的参数:

  • 基本类型
  • 实体类
  • 数组类型
  • 集合类型
    下面讲解如何获取这些类型的请求参数。

基本类型

对于基本类型的参数,当请求参数的名称和Contrller中的业务方法名称一致时会自动映射匹配,无需进行其它的操作。
例:
在这里插入图片描述
超链接中的请求参数username和业务方法中参数名称一样,请求参数的值会自动映射到业务方法上。

实体类对象

对于实体类,实体类的属性名和请求的参数名相同时,也会自动映射匹配。
在这里插入图片描述

如果实体类中的属性中包含其它的实体类对象,使用实体类对象变量.属性的方式可以自动映射
在这里插入图片描述
通过account.name这种写法可以让请求参数和方法中的实体类参数自动映射。

数组

对于数组可以使用 数组名=xxx&数组名=xxx&数组名=xxx的方式进行映射。
在这里插入图片描述

集合

可以通过userList[0].username,userList[0].age这种方式使数据自动映射到集合中存储的实体类对象上。
在这里插入图片描述

常用注解

@RequestMapping

指定请求映射路径,可以作用于类上和方法上。

@RequestParam

当请求参数的名称和Controller中的业务方法参数名称不一致时,需要通过@RequestParam注解显示绑定参数。
属性:

  • value:用于指定请求参数的名称,
  • required:是否必须有此请求参数,默认是true,如果此时没有传入会报错;
  • defaultValue:当required为false且没有传入请求参数,此时会使用这个默认的值;
    在这里插入图片描述

@PathVariable

用于在Restful风格的接口中获取请求参数。
属性:

  • value:指定参数的名称
  • required:参数是否必须
    在这里插入图片描述

@RequestHeader

用于获取请求头的信息,相当于request.getHeader()方法。
属性

  • value:请求头的名称;
  • required:是否必须携带此请求头;

在这里插入图片描述
输出结果如下:
在这里插入图片描述

@CookieValue

获取指定cookie的值。
属性:

  • value:指定cookie的名称;
  • required:是否必须携带此cookie;

使用方法如下:
在这里插入图片描述
输出结果:
在这里插入图片描述

@ResponseBody

此注解就是将controller层中方法返回的字符串直接显示到页面上,而不是跳转到指定的页面。

请求跳转路径设置

1、方法中直接返回字符串
在这里插入图片描述
在这里插入图片描述
这里会跳转到success页面去,success页面位于pages目录下。

2、使用ModelAndView
通过setViewName方法设置跳转到哪个页面去。

    @RequestMapping("/test11")
    public ModelAndView test11() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("success");
        return modelAndView;
    }

自定义类型转换器

SpringMVC默认提供了一些类型转换,比如把int转为String,但是有些类型转换并没有提供,需要我们自己去定义类型转换器进行转换,比如将String转为Date,这时服务器会报如下的错误。

Field error in object 'user' on field 'birthday': rejected value [2022-4-23]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'birthday'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2022-4-23'; nested exception is java.lang.IllegalArgumentException]]

自定义类型转换器的步骤如下:

  1. 定义转换器实现Converter接口
/**
 * Converter<String, Date>:String是输入的参数类型,Date是转换后的类型
 * 
 */
public class DateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = simpleDateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}
  1. 在SpringMVC的配置文件中声明此转换器;
    <!--配置日期类型转换器-->
    <bean id="dataConverter" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.sks.converte.DateConverter"/>
            </list>
        </property>
    </bean>
  1. 在<annotation-driven / >注解中引用转换器;
<mvc:annotation-driven conversion-service="dataConverter"/>

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值