`

@Controller(1)基于@注释的控制器配置

 
阅读更多

基于注释的控制器配置需要Java 5以上的版本支持。这种注释支持servlet MVCPortlet MVC。通过这种方式实现的控制器不需要继承特定的基础类,或实现特定的接口。

 

ADispatcher配置文件

DispatcherServletDispatcherPortlet都默认支持注释配置控制器。以DispatcherServlet为例,它默认支持实现HandlerMapping接口的DefaultAnnotationHandlerMapping和实现HandlerAdapter接口的AnnotationMethodHandlerAdapter来支持注释配置控制器。所有我们无需在Dispatcher配置文件中进行显示配置,就可以支持注释配置控制器。当然我们也可以自定义HandlerMappingHandlerAdapter来支持。

下面是显示定义的例子:

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

</beans>

A.1、自动探测注释控制器

在原来的方式中Controller是被显示定义在Dispatcher配置文件中的一个bean。并且这个Controller实例显示实现Controller接口。在注释配置控制器时,这个Controller不再扩展控制器基类或应用Servlet API。注释控制器可以作为一个bean显示的定义在Dispatcher配置文件中,也可以不显示定义让Dispatcher自动探测。

要实现注释控制器自动探测,需要在配置文件中加入探测组件。

自动探测注释控制器的例子

<?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:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="

    http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="org.xxx" />

    <!—将自动探测org.xxx包中有控制器注释的类-->

</beans>

 

B、基于注释的Controller

基于注释的@Controller它不需要在类中显式的实现Controller,但是它需要Spring 2.5+Java 5+的支持。

范例1

Controllers provide access to the application behavior that you typically define through a service

interface. Controllers interpret user input and transform it into a model that is represented to the user by the view. Spring implements a controller in a very abstract way, which enables you to create a wide variety of controllers.

一个最简单的范例,什么是控制器,控制器它提供了访问程序的行为,我们通常用一个Servlet来实现。控制器它解释用户输入,并把用户输入转换为一个模型,并通过一个视图显示这个模型。

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class HelloWorldController {

    @RequestMapping("/helloWorld")

    public String helloWorld(Model model) {

       model.addAttribute("message", "Hello World!");

       return "helloWorld";

    }

}

@Controller表示HelloWorldController这个类是一个控制器。我们发现这个类并没有像原来那样继承一些Controller的基类或直接实现Controller接口。@RequestMapping("/helloWorld")表示把/helloWorld请求映射到这个类的helloWorld方法上。这个方法接受一个模型Model,并返回一个String类型的视图名,后续可以根据这个视图名,以特定的视图技术显示,这个视图可以访问模型Model数据。

分享到:
评论

相关推荐

    Spring2.5注释驱动与基于注释的MVC

    在基于注释的控制器中,我们可以使用ModelAndView对象来设置模型数据和视图名,或者使用@ResponseBody注解将方法的返回值直接写入HTTP响应体,这通常用于JSON或XML响应。 **异常处理** Spring 2.5提供了@...

    Spring注释包

    它定义了一个控制器Bean,常与Spring MVC一起使用。 5. `@Autowired`:此注解用于自动装配Bean的依赖。Spring会根据类型或名称匹配找到合适的依赖进行注入。它可以用于字段、方法或构造器。 6. `@Qualifier`:当有...

    springmvcs注释依赖包

    综上所述,"springmvcs注释依赖包"中的核心知识点围绕SpringMVC的注解驱动特性展开,包括控制器的声明、请求映射、参数绑定、视图解析、异常处理、模型管理、依赖注入、验证机制以及自定义配置等方面。这些注解大大...

    spring 源码中文注释

    在Web MVC模块中,`DispatcherServlet`作为核心组件,负责请求的分发,`ModelAndView`和`HandlerMapping`等类则构成了模型-视图-控制器架构的基础。 此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@...

    微控制器原理与应用(1)(共10页).pdf

    3. LPC1100系列微控制器是基于ARM Cortex-M0内核的微控制器,拥有高速主频时钟,最高可达50MHz。这些微控制器提供丰富的I/O引脚,如LPC1100有42个通用I/O引脚,用于连接各种外设。 4. 在配置引脚功能时,需要开启...

    微控制器原理与应用(1).pdf

    11. NVIC(Nested Vector Interrupt Controller)是嵌套向量中断控制器,负责管理和调度中断。 12. LPC1100系列提供5种封装选项,适应不同应用场景的需求。 13. 该系列微控制器有4种复位源,确保系统在异常情况下的...

    基于全注解的ssh完整例子

    通过注解,我们可以避免编写XML配置文件,比如`@Action`注解用于标记控制器类的方法,`@Result`注解定义了操作执行后的视图跳转。 Hibernate是SSH中的持久层框架,它简化了Java对象与数据库表之间的映射。使用注解...

    ssm整合源代码框架,内附注释

    7. 控制器层:创建Spring MVC的Controller,处理HTTP请求并调用Service层方法。 8. 测试与部署:运行测试用例验证功能,完成后部署到服务器。 在学习这个源代码时,你可以关注以下几个方面: - 如何在Spring配置...

    微控制器原理与应用(1).docx

    11. NVIC(Nested Vector Interrupt Controller)是嵌套向量中断控制器,选项A正确,它是ARM Cortex-M处理器中管理中断的核心组件。 12. LPC1100系列提供了5种封装形式,选项C正确,以适应不同应用场景。 13. 该...

    原创layui与thinkphp最细级别权限控制后台,通过读取代码注释来实现权限控制

    在提供的资源中,"auth"可能包含了权限相关的数据库表结构、模型、控制器代码以及示例数据,帮助开发者理解和使用这套权限控制系统。可能包括了如用户表、角色表、权限表以及角色-权限关系表等关键数据模型。 总的...

    整合JAVA框架配置文件

    1. **Spring框架配置**:Spring以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性而闻名。在XML配置中,我们可以声明bean、设置属性、定义依赖注入。而在...

    springmvc 练习源码带注释

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。MyBatis 是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。这两个框架常被一起使用,以实现后端数据处理...

    SpringMVC简单源码实现

    SpringMVC大量使用注解,如`@Controller`定义控制器类,`@RequestMapping`用于映射请求,`@Service`和`@Repository`用于服务层和数据访问层。这极大地简化了代码,减少了XML配置。 6. **异常处理**: SpringMVC...

    SensioFrameworkExtraBundle:Symfony FrameworkBundle的扩展,为Controller类添加注释配置

    这个 Bundle 提供了丰富的注解,允许开发者通过在控制器方法上添加注释来实现多种功能,简化了代码并提高了可读性。在本文中,我们将深入探讨 SensioFrameworkExtraBundle 的核心特性、使用场景以及如何将其集成到 ...

    spring-5.0.2中文注释版

    `@Controller`、`@RequestMapping`、`@RequestParam`等注解使得控制器的编写更加简洁。Spring MVC还支持视图解析器,如JSP、FreeMarker等。 6. **RESTful服务**:Spring 5.0.2进一步增强了对RESTful风格服务的支持...

    基于ssm框架的bbs论坛实现

    在BBS论坛中,SpringMVC将处理用户的各种交互,如发帖、回帖、浏览等,通过定义控制器(Controller)来处理请求,并调用业务逻辑层(Service)的方法,最终更新数据并返回视图(View)。 MyBatis是一个持久层框架,...

    spring 的Annotation方式

    - **`@Controller`**:定位在Web控制层,同样,虽然在功能上与`@Component`一致,但它强调了控制器角色,便于识别和维护。 - **`@Component`**:这是一个通用注解,适用于任何层次的组件,当不确定使用哪一个特定...

    springboot demo 环境搭配(内涵注释)

    关于 "demospringboot" 这个文件,我们可以推测这可能是项目的主要源代码目录,其中可能包含了启动类、配置文件、控制器、服务和模型等组件。通过分析这些文件,我们可以学习到如何创建一个基本的 SpringBoot 应用,...

    S2SH三大框架采用注释整合项目案例

    例如,使用`@Service`、`@Repository`和`@Controller`注解标记服务、持久层和控制器类。 2. **Struts2配置**:在struts.xml中,使用注解配置Action类和结果视图。`@Result`和`@Action`注解分别用于指定Action执行后...

    达内云笔记项目完整代码+注释

    服务层(Service)是业务逻辑的核心,它封装了对数据的操作,并提供给控制器层(Controller)调用。在"云笔记"项目中,Service层可能包括用户服务、笔记服务等,分别负责用户管理与笔记管理的相关业务。这些服务通常...

Global site tag (gtag.js) - Google Analytics