Spring MVC中@Controller和@RequestMapping起什么作用呢?
我们都知道,传统的Spring MVC应用,当我们实现 Controller 接口的类时,需在配置文件中映射,并且只能编写一个处理方法,不够便捷,
下文讲述使用注解的方法编写控制器。
首先笔者想告诉大家的注解编写控制器的优点:
1.注解相关控制器类,可编写多个处理方法,我们可将相关操作放入同一个控制器类中
2.注解的控制器类,无需在配置文件中部署映射,只需使用RequestMapping 注释类型的方式对一个方法进行注解
下文将讲述Spring MVC 中非常重要的两个注解类型 :Controller 和 RequestMapping,如下所示:
将类实例为一个控制器
例:
在Spring MVC 中将使用扫描机制将应用中所有基于注解的控制器类,
即:我们需在spring-context配置文件中加入 <context:component-scan/> 配置信息指定扫描包,
将controller扫描装载
例:
在/WEB-INF/ 目录下创建配置文件 springmvc-servlet.xml
需引入org.springframework.web.bind.annotation.RequestMapping 注解类型将请求和处理方法进行对应
以上所有类都映射为 indexTest
下文讲述使用注解的方法编写控制器。
首先笔者想告诉大家的注解编写控制器的优点:
1.注解相关控制器类,可编写多个处理方法,我们可将相关操作放入同一个控制器类中
2.注解的控制器类,无需在配置文件中部署映射,只需使用RequestMapping 注释类型的方式对一个方法进行注解
下文将讲述Spring MVC 中非常重要的两个注解类型 :Controller 和 RequestMapping,如下所示:
Controller 注解类型
在Spring MVC 中我们可采用 org.springframework.stereotype.Controller 注解类型将类实例为一个控制器
例:
package com.java265.springmvc; import org.springframework.stereotype.Controller; /** * “@Controller”表示 IndexController 的实例是一个控制器 * * @Controller相当于@Controller(@Controller) 或@Controller(value="@Controller") */ @Controller public class IndexController { // 处理请求的方法 }
在Spring MVC 中将使用扫描机制将应用中所有基于注解的控制器类,
即:我们需在spring-context配置文件中加入 <context:component-scan/> 配置信息指定扫描包,
将controller扫描装载
例:
在/WEB-INF/ 目录下创建配置文件 springmvc-servlet.xml
<!--?xml version="1.0" encoding="UTF-8"?--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 使用扫描机制扫描控制器类,控制器类都在com.java265.springmvc包及其子包下 --> <context:component-scan base-package="com.java265.springmvc"> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"> <property name="suffix" value=".jsp"> </property></property></bean> </context:component-scan></beans>
RequestMapping 方法注解
RequestMapping注解用于为请求编写对应的方法,如下需引入org.springframework.web.bind.annotation.RequestMapping 注解类型将请求和处理方法进行对应
1)方法级别注解
package com.java265.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * “@Controller”表示 IndexController 的实例是一个控制器 * * @Controller相当于@Controller(@Controller) 或@Controller(value="@Controller") */ @Controller public class IndexController { @RequestMapping(value = "/index/test") public String test() { /** * testView代表逻辑视图名称,需要根据Spring MVC配置 * 文件中internalResourceViewResolver的前缀和后缀找到对应的物理视图 */ return "testView"; } @RequestMapping(value = "/index/show2") public String show() { return "showView"; } }
2)类相关级别注解
package com.java265.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/indexTest") public class IndexController { @RequestMapping("/hello") public String hello() { return "hello"; } }
以上所有类都映射为 indexTest
http://localhost:8080/springMVCTest/indexTest/hello
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。