文章目录
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";
}