码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC基本参数绑定(7种)

时间:2017-12-15 19:33:01      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:mod   work   -name   很多   rate   text   attr   expand   cto   

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>

 

SpringMVC基本参数绑定(7种)

标签:mod   work   -name   很多   rate   text   attr   expand   cto   

原文地址:http://www.cnblogs.com/transaction/p/8044435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!