springmvc03_参数绑定及其自定义类型转换

1、请求参数绑定
<%--1、请求参数绑定--%>
        <a href="param/testParam?username=hehe&password=haha">请求参数绑定</a>
    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了...");
        System.out.println("username = " + username);
        System.out.println( "password = " + password);
        return "success";
    }
2、把数据封装到Account类中,类中存在类
public class User implements Serializable {
    private String uname;
    private Integer age;
    		······set/get方法
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
    private User user;
    		······set/get方法
<%--2、把数据封装到Account类中,类中存在类--%>
        <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>
/**
     *请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println("执行了...");
        System.out.println("account = " + account);
        return "success";
    }

结果

account = Account{username='B17060422', password='123', money=110.0, user=User{uname='用户姓名', age=12}}
3、把数据封装到Account类中,类中存在list和map集合
public class User implements Serializable {
    private String uname;
    private Integer age;
    		······set/get方法
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
    private List<User> list;
    private Map<String,User> map;

    		······set/get方法
<%--3、把数据封装到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>
    /**
     *请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println("执行了...");
        System.out.println("account = " + account);
        return "success";
    }

结果

 <%--account = Account{username='song', password='123', money=100.0,
                        list=[User{uname='S', age=1}], map={one=User{uname='Q', age=1}}}--%>
4,自定义类型转换器

问题:springmvc默认支持年 / 月 / 日格式,不支持年 - 月 - 日格式。
需求:将年 - 月 - 日格式转为年 / 月 / 日格式。

<%--自定义类型转换器--%>
        <form action="param/saveUser" method="post">
            用户姓名: <input type="text" name="uname"><br/>
            用户年龄: <input type="text" name="age"><br/>
            用户生日: <input type="text" name="date"><br/>
            <input type="submit" value="提交">
        </form>

StringToDateConverter 转换类

package cn.itcast.utils;

import org.springframework.core.convert.converter.Converter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 把字符串转换成日期
 *      书写完成之后在springmvc.xml中配置
 */
public class StringToDateConverter implements Converter<String, Date>  {
    /**
     * @param source    传入进来字符串
     * @return
     */
    @Override
    public Date convert(String source) {
        if(source==null){
            throw new RuntimeException("请你传入数据");
        }
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        //把字符串转换为日期
        try {
           return df.parse(source);
        } catch (Exception e) {
            throw new RuntimeException("数据类型转换错误");
        }

    }
}

springmvc配置(配置转换类)

<!--配置自定义类型转换器(日期)-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="cn.itcast.utils.StringToDateConverter"></bean>
            </set>
        </property>
    </bean>
 <!--开启SpringMVC框架注解的支持,此标签默认使(适配器,处理器,映射器)生效,
            类型转换器需要配置 conversion-service="conversionService"-->
    <mvc:annotation-driven conversion-service="conversionService"/>
    /**
     *自定义类型转换器
     * @return
     */
    @RequestMapping("/saveUser")
    public String saveUser(User user){
        System.out.println("执行了...");
        System.out.println("user = " + user);
        return "success";
    }
结果:<%--user = User{uname='哈哈', age=23, date=Tue Oct 20 00:00:00 CST 1992}--%>
5、配置解决中文乱码过滤器

web.xml中配置CharacterEncodingFilter

  <!-- 配置解决中文乱码的过滤器-->
  <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>
6、获取Servlet原生的API
<a href="param/testServlet">Servlet原生的API</a>
 /**
     * 获取Servlet原生的API
     * @return
     */
    @RequestMapping("/testServlet")
    public String testServlet(HttpServletRequest request, HttpServletResponse response){

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

        HttpSession session = request.getSession();
        System.out.println("session:"+session);

        ServletContext servletContext = session.getServletContext();
        System.out.println("servletContext:"+servletContext);

        System.out.println(response.getCharacterEncoding());
        return "success";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值