1.默认参数支持
HttpServletRequest
HttpServletResponse
HttpSession
示例:
@RequestMapping("edit.action")
public ModelAndView editShop(HttpServletRequest request){
? String name= request.getParameter("id");
}
2.绑定基本类型(int,string,long,double.....)
第一种方式
//要求:该方法的形参名称必须和请求参数的name一致。
@RequestMapping("edit.action")
public ModelAndView editShop(int id){
? System.out.println(id);
}
第二种方式 改变返回类型及形参
/**
* 域对象 :从小到大: pageContext,request,session(会话,用户session,目的是唯一标识用户sessionId),ServletContext(application)
*
* 方式一:Model模式
*
* @param id 接收请求参数id的值
* @param model 数据模型对象,一开始空的,{} ,类似Map的键值对形式,主要是添加属性。
* @return 结果视图view的逻辑名称
*/
第三种方式
//SpringMVC中内置了很多基本类型转化器。
//备注:SpringMVC接收基本类型的时候尽量使用包装类型: 包装类型具有对象的特征,可以为null.
/* @RequestMapping("itemEdit.action")
public String editShop01(Integer id,Boolean flag,ModelMap modelMap) {
System.out.println(id+"==ffff=="+modelMap+"====="+flag);
for (Shop shop : list) {
if (shop.getShop_id()==id) {
modelMap.addAttribute("shop", shop);
}
}
return "editItem";
}*/
3.注解参数绑定
//扩展了解
//@RequestParam(name="id") Integer idss
//含义:把请求参数名称为id的值赋值给变量idss
4.绑定pojo类
需求: 把修改的内容提交封装到pojo类
/**
* 提交的表单的name名必须跟pojo类中成员变量名一一对应。
* @param shop
* @return
*/
5.解决乱码问题
web.xml中配置如下代码:
<!-- 解决SpringMVC提交乱码问题 ,配置SpringMVC提供的过滤器CharacterEncodingFilter-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 该filter初始化的时候添加编码FilterConfig -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6.绑定包装pojo类
需求:使用包装的pojo类来接收查询条件。
? 实现方式一:传统的方式,使用HttpServletRequest 的request形参来接收你的查询条件。
? 实现方式二:在形参中使用保证的pojo类来接收。
分析特点:
? 页面传递参数的特点:变化性比较强。条件可能不固定。
? 包装类是对原来的pojo类进行扩充,提高程序的扩展性。
创建的包装pojo类:
//包装查询条件
public class QueryVo {
//原有的类,保持完整性
private Shop shop;
//包装的类 ,扩展功能
private ShopVo shopVo;
set/get..... toString().....
}
//包装Shop实体类
public class ShopVo extends Shop{
//在以后业务需求可能变化的情况下扩充新的属性 (提高程序的可扩展性)
//1.添加新的属性,例如:原价,打折价。
//2.批量删除,接收多个id值,可能是多个集合或者数组属性
}
控制器中的方法:
7.自定义参数绑定
根据业务需求决定数据类型转化
需求:修改商品页面转化日期。
7.1定义一个类型转换器
package com.qf.converter;
?
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
?
import org.springframework.core.convert.converter.Converter;
?
/**
* 在SpringMVC的转化器类的基础上进行转化日期
* @author Administrator
*
* 开发者自己定一个日期转化类,该转化器需要在springmvc.xml中配置声明
*Converter<Soruce, Target> source原本的数据类型 Target 目标数据类型
*/
public class DateConverter implements Converter<String, Date> {
?
7.2 springmvc.xml中配置
<!-- 配置处理器 (RequestMappingHandlerMapping,RequestMappingHandlerAdapter)-->
<!-- conversion-service添加转化服务 -->
<mvc:annotation-driven conversion-service="aa"></mvc:annotation-driven>
<!-- 配置自己的转换器注入到SpringMVC中-->
<bean name="aa" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- converters结果值是个集合 -->
<property name="converters">
<set>
<bean class="com.qf.converter.DateConverter"></bean>
</set>
</property>
</bean>