SpringMVC基本参数绑定(7种)
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的逻辑名称 */ @RequestMapping("itemEdit.action") public String editShop(int id,Model model) { System.out.println(id+"===="+model); //业务逻辑处理得到数据模型,把数据模型结果交给model for (Shop shop : list) { if (shop.getShop_id()==id) { //相当于数据存储到request域对象中 ,请求转发 model.addAttribute("shop", shop); } } return "editItem"; }
第三种方式
//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 @RequestMapping("itemEdit.action") public String editShop02(@RequestParam(name="id") Integer idss,Boolean flag,ModelMap modelMap) { System.out.println(idss+"==ffff=="+modelMap+"====="+flag); for (Shop shop : list) { if (shop.getShop_id()==idss) { modelMap.addAttribute("shop", shop); } } return "editItem"; }
4.绑定pojo类
需求: 把修改的内容提交封装到pojo类
/** * 提交的表单的name名必须跟pojo类中成员变量名一一对应。 * @param shop * @return */ @RequestMapping("updateitem.action") public String updateShop(Shop shop) { System.out.println(shop); return "success"; }
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值,可能是多个集合或者数组属性}
控制器中的方法: @RequestMapping("queryitem.action") public String queryShopByCondition(QueryVo queryVo) { System.out.println(queryVo); return "success"; }jsp页面中搜索条件如下: <form action="${pageContext.request.contextPath }/queryitem.action" method="post"> 查询条件: <table width="100%" border=1> <tr> <!--其中name="shopVo.shop_id"和name="shopVo.shop_name" 表示的含义: 将提交的数据封装到查询包装类中成员变量shopVo中,而查询的条件name,id是包装类中的属性--> <td>商品编号:<input type="text" name="shopVo.shop_id" /></td> <td>商品名称:<input type="text" name="shopVo.shop_name" /></td> <td><input type="submit" value="查询" /></td> </tr> </table> </form>
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> {? @Override public Date convert(String source) { // TODO Auto-generated method stub SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date = format.parse(source); return date; } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }}
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>
时间: 2024-10-29 10:46:25