先接着前面的学习
上一章
SpringMVC请求参数的绑定
但是你会发现在提交参数为中文的时候,控制台会出现乱码的问题
所以我们可以用过滤器来解决这个问题
解决中文乱码
1. 在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>
在web.xml中添加此过滤器即可解决了
下面就是自定义的类型转换
自定义类型转换
1. MVC的自动转换
在grilfriend中age属性是整形的,但是输入的年龄是字符串,MVC会自动转换。
但是日期的格式默认为2001/12/23,而不是2001-12-23.
显示为
如果
则为
2. 编写类型转换方法
package com.maoyan.utils;
import org.springframework.core.convert.converter.Converter;
import javax.swing.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Maoyan
* @data 2020/4/3 14:40
* @Version 1.0.0
*/
//自定义的类型转换器
public class StringToDate implements Converter<String, Date> {
@Override
public Date convert(String source) {
//判断是否为空
if (source == null){
throw new RuntimeException("请填写数据");
}else {
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");//设定日期的格式
try {
return dateFormat.parse(source);
} catch (ParseException e) {
throw new RuntimeException("转换出现异常");
}
}
}
}
- 必须实现Converter接口,泛型前面是String,后面是要转换的类型
3. 配置类型转换器
在springmvc.xml即springmvc的配置文件中配置我们写的类型转换器
<!-- 配置类型转换器-->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.maoyan.utils.StringToDate"></bean>
</set>
</property>
</bean>
4. 使转换器生效
<!-- 开启MVC的注解支持-->
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>
<!--这里的值就是类型转换器的id-->
在注解支持后面,添加一下就搞定啦!!!
获取Servlet原生的API
获取Servlet原生的API
在控制器的方法中添加HttpServletRequest request, HttpServletResponse response参数即可
例如:
@RequestMapping(path = "/saveUser",method = RequestMethod.POST)
public String saveUser(User user, HttpServletRequest request, HttpServletResponse response){
//会自动的封装到Uesr中
System.out.println("用户名:"+user.getUsername());
System.out.println("密码:"+user.getPassword());
System.out.println("女朋友的名字:"+user.getGirlFriend().getName());
System.out.println("女朋友的年龄"+user.getGirlFriend().getAge());
System.out.println("生日为:"+user.getDate());
//获取原生的API
System.out.println(request.getParameter("username"));
System.out.println(request.getParameter("password"));
HttpSession session = request.getSession();
session.setAttribute("username",user.getUsername());
System.out.println(session.getId());
System.out.println(session.getAttribute("username"));
return "success";
}
输出
这个时候我们也可以使用Servlet的方法来处理啦!!