【SpringMVC 之应用篇】 2_SpringMVC 的传参问题

SpringMVC 的传参问题


1. SpringMVC 简单的传参问题

在浏览器的前端页面,模拟传入 usernamepassword 两个参数

<a href="/test/param?username=ffideal&password=123456">开始跳转</a>

然后在 controller 层写下方法

    /**
     * @Description: 测试一个SpringMVC基本的传参问题
     * @param:
     * @return:
     * @auther: ffideal
     * @date:
     */
    @RequestMapping(path = "/param")
    public String toSuccess(String username,String password){
        System.out.println("成功跳转到success页面");
        System.out.println("用户名:" + username);
        System.out.println("密码是:" + password);
        return "/success";
    }

2. 参数绑定实体类型

  1. 首先创建一个实体类
public class Consumer implements Serializable {
    private String uname;
    private String upassword;
    private double price;
}
  1. 在前端传输数据
<%--请求参数绑定--%>
<form action="/test/request" method="post">
    姓名:<input type="text" name="uname"/> <br>
    密码:<input type="text" name="upassword"/> <br>
    价格:<input type="text" name="price"/> <br>
    <input type="submit" value="提交">
</form>
  1. controller 层处理请求
@RequestMapping("request")
public String testRequest(Consumer consumer){
    System.out.println("成功跳转到success页面");
    System.out.println("消费者名:" + consumer);
    return "/success";
}

3. 配置解决中文乱码的过滤器

在 web.xml 中配置如下

<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>

这样在 post 作为提交方式的时候,中文也可以被传入。
在这里插入图片描述

4. 关于自定义类型转换器的实现

这样的日期格式在后台处理的时候会出现问题

在这里插入图片描述

表示提交的类型有问题

在这里插入图片描述

首先设置一个过滤类

public class StringToDate implements Converter<String, Date> {

    /**
     * @Description: 传入字符串,转为日期类型
     */
    
    @Override
    public Date convert(String source) {
        if (source == null){
            throw  new RuntimeException("输入数据不能为空");
        }
        try {
            // 将 yyyy-MM-dd 这种类型转为正常的日期
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            return dateFormat.parse(source);
        } catch (Exception e) {
            throw  new RuntimeException("数据转换出现问题");
        }
    }
}

然后在 配置文件 springmvc-config 中配置参数

<!--  配置自定义类型转换器 -->
<!--  首先引入 ConversionServiceFactoryBean 类-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <!-- 设置参数 -->
    <property name="converters">
        <!--  ConversionServiceFactoryBean 源码中只有一个set类型-->
        <set>
            <!-- 将StringToDate处理类放入容器中 -->
            <bean class="untils.StringToDate"></bean>
        </set>
    </property>

</bean>

<!--开启springmvc框架注解支持-->
 <!-- 要加入conversion-service -->
<mvc:annotation-driven conversion-service="conversionService"/>

5. 一些原始API

SpringMVC 还支持使用原始 ServletAPI 对象作为控制器方法的参数。

@RequestMapping("testAPI")
public String testAPI(HttpServletRequest request, HttpServletResponse response){
    System.out.println("执行了...");
    System.out.println(request);
    System.out.println(request.getSession());
    System.out.println(request.getSession().getServletContext());
    System.out.println(response);
    return "/success";
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值