SpringMVC 数据绑定


SpringMVC 数据绑定


我们先来了解一下SpringMVC怎么实现数据的绑定。

套餐一:普通访问 ,不带参数

需要注解:@RequestMapping

@RequestMapping:访问路径,如果只有value参数可以省略value

@RequestMapping(value = "demo")
	public String demo() {
		return "success";
	}


套餐二:ajax请求 ,反馈信息

需要注解:@RequestMapping和@ResponseBody还有@PathVariable

@ResponseBody:添加该注解后使返回值返回到页面

@PathVariable:绑定URI 模板变量值通过占位符获得请求参数

@RequestMapping(value = "finish/{id}", method = RequestMethod.POST)
  @ResponseBody
  public String finish(@PathVariable("id") Long id) {
    Transfer transfer = transferService.findOne(Transfer.class, id);
    transfer.setIsDone(1);
    transfer.setTransferTime(new Date());
    transferService.save(transfer);
    return "true";
  }


套餐三:对实体类的操作,比如更新,创建,修改,删除(crud)

需要注解:@RequestMapping和@Valid

@Valid:数据校验和实例化javabean

@RequestMapping(value = "create", method = RequestMethod.POST)
  public String create(@Valid Campaign newCampaign) {
    String strToday = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
    newCampaign.setShowDate(strToday);
    campaignService.save(newCampaign);
    return "redirect:/campaign/";
  }
删除就不需要@Valid,因为删除只需要一个id

@RequestMapping({"delete/{id}"})
  public String delete(@PathVariable("id") Long id){
     actionService.deleteById(UserAction.class, id);
     return "redirect:/campaign/";
   }
更新还需要一个@ModelAttribute: 绑定参数到命令对象
@RequestMapping(value = "update", method = RequestMethod.POST)
	public String update(@Valid @ModelAttribute("entity") UserAction useraction) {
		actionService.save(useraction);
		return "redirect:/useraction/";
	}


以上便是映射路径和数据绑定的常用例子,然而数据绑定的注解并不只有那么一丢丢。

1、@RequestParam绑定单个请求参数值
2@PathVariable绑定URI 模板变量值
3@CookieValue绑定Cookie 数据值
4@RequestHeader绑定请求头数据
5@ModelAttribute绑定参数到命令对象
6@SessionAttributes绑定命令对象到session

@RequestParam:

@RequestMapping(value = "create", method = RequestMethod.POST)
	@ResponseBody
	public String createImpression(
			@RequestParam(value = "campaignId", required = true) long campaignId,
			@RequestParam(value = "clickId", required = true) String clickId) {
		createUserAction(campaignId, clickId);
		return "";
	}
@CookieValue:
@RequestMapping(value="cookie")
	public void cookieValue(@CookieValue(value="JSESSIONID") String sessionId
			,WebRequest wr,HttpSession session){
		System.out.println(sessionId);
		System.out.println(wr.getSessionId());
		System.out.println(session.getId());
	}

@RequestHeader:

@RequestMapping(value="header")
	public void headerValue(@RequestHeader(value="Accept") String accept,
			@RequestHeader("User-Agent") String userAgent,
			@RequestHeader("Hello") String hello){
		System.out.println("accept : "+accept);
		System.out.println("userAgent : "+userAgent);
		System.out.println("hello : "+hello);
	}

@SessionAttributes:

@SessionAttributes(value="sessionAttr")
public class DataBindingFromAnn {
@RequestMapping(value="session")
	public String sessionAttr (Model model) {
		UserModel userModel = new UserModel();
		userModel.setName("ITDragon");
		userModel.setPassword("abcdefg");
		model.addAttribute("sessionAttr", userModel);
		return "sessionAttr";
	}
	
}

以上便是数据绑定的常用注解以及使用方法,有什么问题和建议可以留言,我会及时更正。







  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 数据绑定是指将客户端提交的数据绑定到 Controller 中的方法参数或类属性上,从而方便地获取表单数据并进行处理。 Spring MVC 数据绑定主要分为两种类型: 1. 基本类型数据绑定:将客户端提交的基本类型数据(如字符串、整数、布尔型等)绑定到 Controller 中的方法参数上。 例如: ```java @RequestMapping("/login") public String login(String username, String password) { // do something } ``` 2. 对象类型数据绑定:将客户端提交的表单数据绑定到 Controller 中的 POJO(Plain Old Java Object,普通 Java 对象)上。 例如: ```java @RequestMapping("/register") public String register(User user) { // do something } ``` 在对象类型数据绑定中,Spring MVC 默认使用 JavaBean 规范的 setter 方法进行属性赋值,例如: ```java public class User { private String username; private String password; // 省略 getter 和 setter 方法 } ``` 当客户端提交的表单数据中包含 username 和 password 参数时,Spring MVC 将自动调用 User 类中对应的 setter 方法将数据绑定到 User 对象中。 除了默认的 setter 方法,Spring MVC 支持使用自定义的属性编辑器(PropertyEditor)来实现数据类型转换和数据格式化等功能。例如,可以通过自定义属性编辑器将字符串类型的日期转换为 Date 类型。 要使用自定义的属性编辑器,需要在 Controller 类中注册 PropertyEditor 实例: ```java @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); } ``` 上面代码中,我们注册了一个 SimpleDateFormat 类型的属性编辑器,并将其注册到 WebDataBinder 中。然后,我们在 Controller 中的方法参数上使用 Date 类型来接收客户端提交的日期数据,Spring MVC 将自动根据我们注册的属性编辑器将字符串类型的日期转换为 Date 类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值