spring mvc中的@ModelAttribute注解示例介绍

前言

本文介绍在spring mvc中非常重要的注解@ModelAttribute.这个注解可以用在方法参数上,或是方法声明上。这个注解的主要作用是绑定request或是form参数到模型对象。可以使用保存在request或session中的对象来组装模型对象。注意,被@ModelAttribute注解的方法会在controller方法(@RequestMapping注解的)之前执行。因为模型对象要先于controller方法之前创建。

请看下面的例子

  • ModelAttributeExampleController.java 是controller类,同时包含@ModelAttribute 方法。
  • UserDetails.java是本例中的模型对象
  • 最后是spring的配置文件
//ModelAttributeExampleController.java
package javabeat.net;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class ModelAttributeExampleController {
 @Autowired
 private UserDetails userDetails;
 @RequestMapping(value="/modelexample")
 public String getMethod(@ModelAttribute UserDetails userDetails){
 System.out.println("User Name : " + userDetails.getUserName());
 System.out.println("Email Id : " + userDetails.getEmailId());
 return "example";
 }

 //This method is invoked before the above method
 @ModelAttribute
 public UserDetails getAccount(@RequestParam String user, @RequestParam String emailId){
 System.out.println("User Value from Request Parameter : " + user);
 userDetails.setUserName(user);
 userDetails.setEmailId(emailId);
 return userDetails;
 }
}
//UserDetails.java
package javabeat.net;

public class UserDetails {
private String userName;
private String emailId;
public String getUserName() {
 return userName;
}
public void setUserName(String userName) {
 this.userName = userName;
}
public String getEmailId() {
 return emailId;
}
public void setEmailId(String emailId) {
 this.emailId = emailId;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd
 http://www.springframework.org/schema/jms 

 http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">
 <context:component-scan base-package="org.spring.examples" />
 <bean id="userDetails" class="org.spring.examples.UserDetails"/>
</beans>

- 上面的例子,getAccount方法使用@ModelAttribute注解。这意味着方法会在controller的方法之前执行。这个方法会使用request的参数设置模型对象。这是一种在方法中设置值的途径。

- 另一种@ModelAttribute注解的使用方法,是用在方法的参数上。在调用方法的时候,模型的值会被注入。这在实际使用时非常简单。将表单属性映射到模型对象时,这个注解非常有用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • spring mvc中注解@ModelAttribute的妙用分享

    前言 本文主要给大家介绍了关于spring mvc注解@ModelAttribute妙用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 在Spring mvc中,注解@ModelAttribute是一个非常常用的注解,其功能主要在两方面: 运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用: 运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值

  • springmvc常用注解标签详解

     1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@Request

  • spring mvc4中相关注解的详细讲解教程

    前言 在开始本文之前要说明以下,首先我是一个初学springmvc,抱着去加深印象的目的去整理相关springmvc4的相关注解,同时也希望给需要相关查阅的读者带来帮助,好了,下面话就不多说了,一起来看看详细的介绍吧. 1.@Controller Controller控制器是通过服务接口定义的提供访问应用程序的一种行为,它解释用户的输入,将其转换成一个模型然后将试图呈献给用户.Spring MVC 使用 @Controller 定义控制器,它还允许自动检测定义在类路径下的组件并自动注册.如想自动

  • spring mvc中的@ModelAttribute注解示例介绍

    前言 本文介绍在spring mvc中非常重要的注解@ModelAttribute.这个注解可以用在方法参数上,或是方法声明上.这个注解的主要作用是绑定request或是form参数到模型对象.可以使用保存在request或session中的对象来组装模型对象.注意,被@ModelAttribute注解的方法会在controller方法(@RequestMapping注解的)之前执行.因为模型对象要先于controller方法之前创建. 请看下面的例子 ModelAttributeExample

  • spring MVC中传递对象参数示例详解

    前言 初学java,由于项目紧急,来不及仔细的研究,在传递参数时就老老实实的一个一个的采用@RequestParam注解方式传递,最近认真看了一下,发现java也具有类似Asp.net Mvc传递对象做参数的方式,即采用@ModelAttribute注解的方式,接收方式如下: @RequestMapping("hello") public String Hello(@ModelAttribute("user") User user) { System.out.pri

  • 详解Http请求中Content-Type讲解以及在Spring MVC中的应用

    详解Http请求中Content-Type讲解以及在Spring MVC中的应用 引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在spring MVC中如何使用它们来映射请求信息. 1.  Content-Type MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,

  • Spring Mvc中传递参数方法之url/requestMapping详解

    前言 相信大家在使用spring的项目中,前台传递参数到后台是经常遇到的事, 我们必须熟练掌握一些常用的参数传递方式和注解的使用,本文将给大家介绍关于Spring Mvc中传递参数方法之url/requestMapping的相关内容,分享出来供大家参考学习,话不多说,直接上正文. 方法如下 1. @requestMapping: 类级别和方法级别的注解, 指明前后台解析的路径. 有value属性(一个参数时默认)指定url路径解析,method属性指定提交方式(默认为get提交) @Reques

  • spring mvc中的@PathVariable动态参数详解

    目录 spring mvc @PathVariable动态参数 spring mvc是如何做到根据参数名动态绑定参数的? 反射获取参数名 -parameters参数 -g参数 ASM SpringMVC的处理方式 总结 spring mvc @PathVariable动态参数 spring mvc中的@PathVariable是用来获得请求url中的动态参数的,十分方便 @Controller public class TestController { @RequestMapping(value

  • Spring MVC 中 短信验证码功能的实现方法

    在外部网站中短信的验证很有必要,比如在实现注册.验证用户信息等的情况下.在SpringMVC中的实现如下: 短信接口 短信接口,有些企业会购买的有移动的短信平台接口.如果是个人或者是小企业可以使用一些云服务的.比如百度的API Store上面的. 我使用的是:http://apistore.baidu.com/apiworks/servicedetail/1018.html 当然短信接口肯定都是要付费的,而且是基于模板的,具体的使用说明可以看这个网址里面的使用说明. 前端界面 前端的界面,可能如

  • Spring MVC 中获取session的几种方法(小结)

    Spring MVC 中使用session是一种常见的操作,但是大家上网搜索一下可以看到获取session的方式方法五花八门,最近,自己终结了一下,将获取session的方法记录下来,以便大家共同学习进步. 第一种:将HttpSession作为Spring MVC 的方法参数传入,直接获取. 直接在Spring MVC 的方法中将参数传入: public void getSessionAction(HttpSession session){ } 这种方法我再网上搜索时发现很多人并不推荐使用,但是

  • Spring MVC中处理ajax请求的跨域问题与注意事项详解

     前言 有时候前后台做数据交互,会遇到烦人的跨域请求问题,如果你还是一枚编程小白来说,无疑来说是很痛苦的事. 当然网上也肯定会有一些解决方法.但自身实力有限,不一定会看的懂,能把问题解决了.所以下面这篇文章就来给大家总结介绍在Spring MVC中处理ajax请求的跨域问题与一些注意事项,话不多说了,来一起看看详细的介绍吧. 为何跨域 简单的说即为浏览器限制访问A站点下的js代码对B站点下的url进行ajax请求.假如当前域名是www.abc.com,那么在当前环境中运行的js代码,出于安全考虑

  • 详解spring mvc中url-pattern的写法

    1.设置url-pattern为*.do(最为常见的方式) 只要你的请求url中包含配置的url-pattern,该url就可以到达DispatcherServlet.当然这里业内通常都将url-pattern配置为*.do的方式,所以你最好也这么去做. 2.设置url-pattern为/*(这种方式是很不好) 如果将url-pattern设置为/*之后,web项目中的jsp都不能访问了会报出404的错误,这是因为DispatcherServlet会将向JSP页面的跳转请求也当作是一个普通的 C

随机推荐