@Controller
和@RestController
都是在SpringMVC
中使用,作用在类上,用于申明该类是一个SpringMVC Controller
对象,即一个控制器Bean
。
@Controller注解
Spring 使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping
注解,而使用了 @RequestMapping 注解的方法才是真正处理请求的处理器。
在SpringMVC
中声明控制器 Bean 时,只能使用@Controller。该注解组合了@Compoment
元注解。
@RestController注解
该注解是一个组合注解,组合了@Controller
和@ResponseBody
,若开发的是只提供数据的控制器,可以使用此注解;若没有此注解,则需在代码中加上@Controller
和@ResponseBody
两个注解。
SpringMVC配置
为了保证 Spring 能找到控制器,需要做如下配置:
web.xml配置
- 配置
Spring MVC
前端控制器DispatcherServlet
; - 配置初始化时,加载
springmvc.xml
文件; - 配置应用启动时就实例化前端控制器(可选)。
- 配置解析请求路径。
<!--前端控制器 web项目: 入口配置文件web.xml
1、加载spring配置文件
2、加载Springmvc配置文件
-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- springmvc默认加载springmvc配置文件:
默认加载springmvc配置文件必须满足约定:
1. 文件名称:(servlet-name)-servlet.xml = springmvc-servlet.xml
2. 文件路径:必须在WEB-INF下面
-->
<!-- 自定义加载springmvc配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 解析以.do为后辍的请求 -->
<!-- <url-pattern>*.do</url-pattern> -->
<!-- 解析项目根目录下的所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml文件配置
- 配置扫描
Controller
包下所下的所有java文件。 - 配置视图解析器,设置前后缀。视图解析器会根据配置路径将逻辑视图解析出物理视图。
- 配置处理器映射器和处理器适配器(此两项配置可选),当没有配置时,Spring 会使用默认的处理器映射器和处理器适配器来处理请求。在实际开发基本上不用配置。
<!-- 把Controller交给spring管理 -->
<context:component-scan base-package="com.springmvc.controller" />
<!-- 处理器映射器:寻找Controller执行类 -->
<!-- <bean class=" org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> -->
<!-- 处理器适配器: 执行Controller方法 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> -->
<!--配置视图解析器
功能:解析真正的物理视图
解析方案:前缀+逻辑视图+后缀 组合成物理视图 /WEB-INF/jsps/hello.jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前辍 -->
<property name="prefix" value="/WEB-INF/jsps/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载