SSM学习之路——springMVC第一天_@requestMapping和请求参数绑定

@requestMapping

1、@requestMapping可以作用在类上,表示这个类下都是这个路径下的子路径
好处:比如这个类是对用户的操作,以/user作用在类上,下面是对应的/add,/update 等等,便于管理和明确,清晰。
在这里插入图片描述
2、method属性:指定是用什么方法来请求
在这里插入图片描述
超链接是使用GET请求的,如果这里指定用POST请求才能执行这个方法的话,那么点击超链接,虽然请求映射是没问题,但是请求的方式不合法,是跳转不过去的
在这里插入图片描述

在这里插入图片描述

3、params(用的少)
用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样。
比如:
在这里插入图片描述
这样在发送请求时,必须要传递name这个参数,否则这个方法不执行
如果params里面的value是 name=hehe,如果传过来的参数是name=xixi,就也不行,必须是一模一样

4、headers(用的少)
用于指定限制请求消息头的条件,如果有具体的值,也必须是一模一样的
在这里插入图片描述
表示请求的头中,必须有Accept这个属性,不然莫得访问。

二、参数绑定

1、简单绑定
springMVC会根据传递过来的参数,和方法的形参对应的接收并绑定
表单中请求参数都是基于 key=value 的。SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。
比如:
在这里插入图片描述
在这里插入图片描述
其中,形参和传递过来的参数必须一一对应,一模一样(顺序可以不一样),如果方法中,将形参 String usernameInteger age调换位置,改passwordpass,再打印,发现username和age可以正常打印(说明调换位置不影响参数绑定),但是pass变成了null,说明无法绑定

2、实体类绑定
前置:
(1)配置编码转换过滤器
get请求输入中文是不会乱码的,post请求输入中文就会乱码,所以我们要对每个请求都设置UTF-8编码。在以前的servlet中,我们是在每个servlet开始都写上request.setcharacterencoding,现在不用了,科技进步了,直接在web.xml里面配置filter就完事了

<!--配置编码转换过滤器-->
  <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>

(2)编写自定义类型转换器(此处为String转Date)
由于默认的String转Date只能是yyyy/mm/dd形式的,如果输入yyyy-mm-dd就会出现异常,我们现在想变成yyyy-mm-dd,就得自己自定义一个类,注册到springmvc的转换器中
在这里插入图片描述

package com.ssn.utils;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//实现Converter接口,接收类型为String,返回类型为Converter
public class StringToDate implements Converter<String, Date> {
    
    @Override
    public Date convert(String s) {
        if (s == null) throw new RuntimeException("没有输入");
        DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
        try {
            Date result = df.parse(s);
            return result;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

springmvc.xml中进行注册
在这里插入图片描述
这样一来,我们原本的yyyy/mm/dd格式就失效,变为yyyy-mm-dd格式了。

为了测试各种数据类型绑定,我们写一个Account和User两个实体类, 并在Account类中引用User对象,以及一个List和一个Map,并生成各自的get和set和toString方法

在这里插入图片描述
在这里插入图片描述

编写一个新的类,用来测试参数绑定是否成功
这里值得注意的是,我们可以直接在形参上写Account类,表示接收过来的参数被封装到一个Account类里面,然后所需要的数据直接通过调用对象的tostrng方法就可以把信息全部打印出来。(否则得写多少个形参啊,麻烦死了,这样就很方便)
在这里插入图片描述
index.jsp,通过表单提交内容
因为绑定的是account类,所以通过user这个对象来获取username,进而绑定account对象里面user实体类的姓名(pojo写法)
注意的是list和map的写法,map里面填的是key,即绑定的是这个key的value
在这里插入图片描述

多说无益,run一把试试!
在这里插入图片描述
在这里插入图片描述
填入的日期格式,成功的自定义转换了
list和map也成功绑定了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值