因此,我们将控制器设计成无状态类。 在spring 3.0中,通过@controller标注即可将class定义为一个controller类。...@RequestMapping 在类前面定义,则将url和类绑定。 ...在方法前面定义,则将url和类的方法绑定,如下所示: 1 package com.sxt.web; 2 3 import javax.annotation.Resource; 4 import...@ModelAttribute 这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。 ...") 21 public String reg5(@ModelAttribute("u")String uname ,ModelMap map) { 22 System.out.println
这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式: (1)在SpringMVC 的配置文件中定义MyController 的bean 对象。...代码中我们定义了两个URI 变量,一个是控制器类上的variable1 ,一个是showView 方法上的variable2 ,然后在showView 方法的参数里面使用@PathVariable 标记使用了这两个变量...这个时候如果需要在渲染视图的过程中需要模型的话就可以给处理器方法一个模型参数,然后在方法体里面往模型中添加值就可以了。 (5 )返回值是void 。...(7 )除以上几种情况之外的其他任何返回类型都会被当做模型中的一个属性来处理,而返回的视图还是由RequestToViewNameTranslator 来决定,添加到模型中的属性名称可以在该方法上用@ModelAttribute...我们在 MyController 类上加上 @SessionAttributes 属性标记哪些是需要存放到 session 中的。
比如我们在@RestController标注的Controller控制器组件上用@RequestMapping、@ExceptionHandler等注解来表示请求映射、异常处理等等。...在众多的注解使用中,Spring MVC中有一个非常强大但几乎被忽视的一员:@ModelAttribute。...只支持@RequestMapping这种类型的控制器哦。它既可以标注在方法入参上,也可以标注在方法(返回值)上。...// @since 4.3 boolean binding() default true; } 基本原理 我们知道@ModelAttribute能标注在入参上,也可以标注在方法上。...@ModelAttribute标注在单独的方法上(木有@RequestMapping注解),它可以在每个控制器方法调用之前,创建出一个ModelFactory从而管理Model数据~ ModelFactory
这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式: (1)在SpringMVC 的配置文件中定义MyController 的bean 对象。 ...代码中我们定义了两个URI 变量,一个是控制器类上的variable1 ,一个是showView 方法上的variable2 ,然后在showView 方法的参数里面使用@PathVariable 标记使用了这两个变量...这个时候如果需要在渲染视图的过程中需要模型的话就可以给处理器方法一个模型参数,然后在方法体里面往模型中添加值就可以了。 (5 )返回值是void 。...(7 )除以上几种情况之外的其他任何返回类型都会被当做模型中的一个属性来处理,而返回的视图还是由RequestToViewNameTranslator 来决定,添加到模型中的属性名称可以在该方法上用@ModelAttribute...我们在 MyController 类上加上 @SessionAttributes 属性标记哪些是需要存放到 session 中的。
在Spring中定义控制器非常简单,新建一个类然后应用@Controller注解即可,当然一般习惯上将控制器类也命名为XXController。每个控制器可以有若干方法,分别处理不同的请求。...要启用它,在dispatcher-servlet.xml中添加或修改如下一行。...可以作用到方法,这时候该方法会在该控制器的所有处理方法前执行。在方法中可以接受多个参数和一个模型参数,然后将这些参数处理之后添加到模型中。这样每次处理方法执行前都会先执行一次该方法。...这时候Spring会先从model中寻找@ModelAttribute参数,如果没找到则实例化一个(因此这个类必须有无参构造函数),然后添加到model中。...然后将请求参数(下面例子中是name=易天&age=24&gender=男)添加到模型中。这样当我们查看视图的时候,一个完整的实体类已经准备就绪了。 // 请求 /modelAttribute?
其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。 在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构。...如下图: 图片1.png 我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring Web MVC ,也就是本系列的主角 SpringMVC,它是属于Spring基本架构里面的一个组成部分...特点: 结构松散,几乎可以在 Spring MVC 中使用各类视图 松耦合,各个模块分离 与 Spring 无缝集成 三、为什么要使用SpringMVC?... 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法 在方法的入参前使用 @ModelAttribute...注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中 @RequestParam 在处理方法入参处使用 @RequestParam
拦截器 拦截器在JavaEE开发中还是非常重要的,乱码解决、权限控制等等都会用到,使用Servlet的时候有一个Filter类用来进行过滤,那么SpringMVC也在这方面给我们提供了相应的解决方案。...然后在MVCConfig类中添加addInterceptors方法注册拦截器,如下: @Override public void addInterceptors(InterceptorRegistry...OK,我们来看一下控制器,我在控制器中添加如下方法: @RequestMapping("/user") public String user(@ModelAttribute("msg") String...预设键值对绑定到Model中 有的时候我们需要预设键值对到Model中,就像上面那个案例那样,这个时候我们可以在ExceptionHandlerAdvice类中再添加一个方法: @ModelAttribute...预处理前台请求参数 OK,还有一种需求,有的时候我们需要预处理前台传来的参数,比如说禁止掉某一个参数,这个也可以统一处理,OK,继续在ExceptionHandlerAdvice方法中添加方法 @InitBinder
接口实现类只能处理一个单一动作,本篇博文我们来介绍下基于注解的控制器。...maven工程结构如上,在这里,只有一个控制器类,而不是之前示例中的两个。...---- @ModelAttribute 前面讲到Spring MVC在每次调用请求处理方法时,都会创建Model类型的一个实例。若打算使用该实例,则可以在方法中添加一个Model类型的参数。...带@ModelAttribute注解的方法会将其输入的或创建的参数对象添加到Model对象中(若方法中没有显式添加)。...被@ModelAttribute注释的方法会在每次调用该控制器类的请求处理方法时被调用。
它在执行功能处理方法(@RequestMapping 注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用; 暴露@RequestMapping方法返回值为模型数据:放在功能处理方法的返回值上时...下面针对这些使用场景,分别给出Demo用例,供以大家在实际使用中参考。...另外还需要知道的是:@ModelAttribute标注在本方法上只会对本控制器有效。但若你使用在@ControllerAdvice组件上,它将是全局的。...它俩合作使用是很顺畅的,一般不会有什么问题,也没有什么主意事项 和@SessionAttributes一起使用 @ModelAttribute它本质上来说:允许我们在调用目标方法前操纵模型数据。...和@SessionAttributes共同的使用的时候务必要注意的结论:已经添加进session的数据,在没用使用SessionStatus清除过之前,@ModelAttribute标注的非功能方法的返回值并不会被再次更新进
)之前,自动添加 到模型对象中,用于视图页面展示时使用; ③暴露@RequestMapping 方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为 模型数据,用于视图页面展示时使用...我们编写控制器代码时,会将保存方法独立成一个控制器也是如此。 ...abc=text)放到model的attributeName属性中,在视图中可以直接访问。 ...populateModel方法中根据ID获取对象,然后使用spring mvc的自动组装功能,组装User对象,这样在客户端提交了值的属性才会被组装到对象中。 ... 我们可以在基类方法中控制写此注解,需要控制权限的控制器,继承控制器就可以了。
位置:类上方 @RequestMapping:作用:给控制器方法设置请求路径 位置:方法或类上方。用于类上,表示类中的所有控制器方法都是以该地址作为父路径。...三、@RequestHeader、@CookieValue @RequestHeader 作用:在控制器方法中获取请求头数据 位置:方法参数前 @CookieValue 作用:在控制器方法中获取...五、@ModelAttribute 作用1:设置指定方法在控制器其他方法前执行 位置:方法上方 作用2:从Model模型中获取数据给参数赋值 位置:方法参数前 5.1 示例程序 作用一示例程序...作用1:设置指定方法在控制器其他方法前执行 @ModelAttribute public void before(){ System.out.println("前置方法"...作用1:设置指定方法在控制器其他方法前执行 @ModelAttribute public void before(Model model){ System.out.println
位置:类上方 @RequestMapping:作用:给控制器方法设置请求路径 位置:方法或类上方。用于类上,表示类中的所有控制器方法都是以该地址作为父路径。...三、@RequestHeader、@CookieValue @RequestHeader 作用:在控制器方法中获取请求头数据位置:方法参数前 @CookieValue 作用:在控制器方法中获取Cookie...五、@ModelAttribute 作用1:设置指定方法在控制器其他方法前执行 位置:方法上方 作用2:从Model模型中获取数据给参数赋值 位置:方法参数前 5.1 示例程序作用一示例程序:package...作用1:设置指定方法在控制器其他方法前执行 @ModelAttribute public void before(){ System.out.println("前置方法");...作用1:设置指定方法在控制器其他方法前执行 @ModelAttribute public void before(Model model){ System.out.println
org.springframework.stereotype.Controller注解类型用于声明Spring类的实例是一个控制器(在讲IOC时还提到了另外3个注解);Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类...注解在类上时,当value为空值则为默认的控制器,可以用于设置项目的起始页。...因此在注解中我们可以手动修改编码格式,例如@RequestMapping(value="/cat/query",produces="text/html;charset=utf-8"),前面是请求的路径,...getAge() { return age; } public void setAge(int age) { this.age = age; } } 在控制器中添加一个方法...@ApiModel为类添加注释 @ApiModelProperty为类属性添加注释 3.7、常用注解 Swagger的所有注解定义在io.swagger.annotations包下,下面列一些经常用到的
省略 @ModelAttribute @RequestBody 组合模式在 Spring 中的体现 @RequestParam, @CookieValue 等注解中的参数名、默认值, 都可以写成活的,...---- @ControllerAdvice 之 @ModelAttribute @ModelAttribute注解的作用是向ModelAndViewContainer中添加模型数据,@ModelAttribute...可以加在以下位置: 对于标注在全局或者局部位置的@ModelAttribute注解来说,RequestMappingHandlerAdapter搜集这些方法,也是为了调用他们然后将他们的返回结果添加进行...---- ModelFactory中的initModel核心方法为: 这里省略掉了很多细节问题,我们后面源码流程中会进行详细分析 ---- 实例演示: 准备一个配置类 @Configuration...初始化时会解析 @ControllerAdvice 中的 @ModelAttribute 方法 RequestMappingHandlerAdapter 会以类为单位,在该类首次使用时,解析此类的 @
控制器(Controller): 控制器负责接收来自客户端的请求,并调用相应的服务层方法来处理请求。在Spring MVC中,控制器通常使用@Controller注解来定义。...@Controller注解告诉Spring这是一个控制器类。...在Spring MVC中,有多种方式可以进行参数绑定,包括@RequestParam、@PathVariable和@ModelAttribute等注解。...在Spring MVC中,可以使用@ModelAttribute注解实现数据绑定。 @Controller public class UserController {<!...异常处理(Exception Handling): 异常处理是处理应用程序中可能发生的异常情况的过程。在Spring MVC中,我们可以使用@ControllerAdvice注解定义全局异常处理器。
Spring MVC 基本配置 在前面还有一小节常见注解就不介绍了,在实际项目中会经常用到,很容易理解。在本实例中相关配置内容都在MyMvcConfig类里编写 1.添加静态资源 ?...配置代码: (1).在MyMvcConfig类上面加上@EnableWebMvc开启SpringMVC支持 (2).在配置类里面加上静态资源配置,具体详解在注释里 /** * 配置静态资源访问...{ registry.addInterceptor(demoInterceptor()); } 3.ControllerAdvice 通过@ControllerAdvice,我们可以将对于控制器的全局配置放置在同一个位置...controller的全剧配置放在同一个位置 * 可以使用 @ExceptionHandler,@ModelAttribute,@InitBinder注解到方法上 * 在Spring4中, @ControllerAdvice...,不忽略.后面的参数 /** * 在SpringMVC中,如果路径参数中有".","."
4、@ModelAttribute ModelAttribute可以应用在方法参数上或方法上,他的作用主要是当注解在方法参数上时会将注解的参数对象添加到Model中;当注解在请求处理方法Action上时会将该方法变成一个非请求处理的方法...实际上,控制器中的@ModelAttribute方法是在同一控制器中的@RequestMapping方法被调用之前调用的。...4.3 @ModelAttribute注解的使用场景 当@ModelAttribute注解用于方法时,与其处于同一个处理类的所有请求方法执行前都会执行一次此方法,这可能并不是我们想要的,因此,我们使用更多的是将其应用在请求方法的参数上...,无形中也给我们提供了便利,这也可能是它命名为ModelAttribute的原因。...我们可以在需要访问 Session 属性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 参数上加上 @ModelAttribute,并保证两者的属性名称一致
1.2、使用注解@Controller定义控制器 org.springframework.stereotype.Controller注解类型用于声明Spring类的实例是一个控制器(在讲IOC时还提到了另外...3个注解);Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。...*/ //BarController类的实例是一个控制器,会自动添加到Spring上下文中 @Controller public class BarController { //映射访问路径...用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。...注解在类上时,当value为空值则为默认的控制器,可以用于设置项目的起始页。
类,并在此类使用@EnableWebMvc注解,来开启对Spring MVC的配置支持,这样我们就可以重写这个类的方法,完成我们的常用配置。...示例 1、添加静态资源,我们在src/main/resources下建立assets/js目录,并复制一个jquery.js放置在此目录下,如下图: ?...所以,我们可以通过在配置中重写addViewControllers来简化配置: @Override public void addViewControllers(ViewControllerRegistry...在路径匹配参数配置 在Spring MVC中,路径参数如果带”.”的话,”.”后面的值都将被忽略,例如: 我们在AdviceController.java中增加代码: @RequestMapping...可以看到”.”后面的参数没有传过去 我们可以这样解决、通过重写configurePathMatch方法可不忽略”.”后面的参数,代码如下(写在Spring MVC配置类中): @Override
在方法体中我们通过该ModelAndView对象添加模型数据。...3、@SessionAttributes 使用该注解来注解某个类,使得将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性。...4、@ModelAttribute 该注解即可注解在有返回值的方法上,无返回值的方法上,还可以注解在方法入参上,当入參标注该注解后, 入参的对象就会放到数据模型中,具体将在后面进行介绍。...@SessionAttributes 若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个 @SessionAttributes,Spring MVC将在模型中对应的属性暂存到 HttpSession...来注释方法参数:带有@ModelAttribute注解的方法会将其输入或创建的参数对象添加到Model对象中(若方法中没有显式添加)。
领取专属 10元无门槛券
手把手带您无忧上云