Spring MVC之@Controller和@RestController注解

  @Controller@RestController都是在SpringMVC中使用,作用在类上,用于申明该类是一个SpringMVC Controller对象,即一个控制器Bean

@Controller注解

Spring 使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用了 @RequestMapping 注解的方法才是真正处理请求的处理器。

SpringMVC中声明控制器 Bean 时,只能使用**@Controller**。该注解组合了@Compoment元注解。

@RestController注解

该注解是一个组合注解,组合了@Controller@ResponseBody,若开发的是只提供数据的控制器,可以使用此注解;若没有此注解,则需在代码中加上@Controller@ResponseBody两个注解。

SpringMVC配置

为了保证 Spring 能找到控制器,需要做如下配置:

web.xml配置

  1. 配置Spring MVC 前端控制器DispatcherServlet
  2. 配置初始化时,加载springmvc.xml文件;
  3. 配置应用启动时就实例化前端控制器(可选)。
  4. 配置解析请求路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<!--前端控制器 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文件配置

  1. 配置扫描Controller包下所下的所有java文件。
  2. 配置视图解析器,设置前后缀。视图解析器会根据配置路径将逻辑视图解析出物理视图。
  3. 配置处理器映射器和处理器适配器(此两项配置可选),当没有配置时,Spring 会使用默认的处理器映射器和处理器适配器来处理请求。在实际开发基本上不用配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 把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>

Spring MVC之@Controller和@RestController注解

http://blog.gxitsky.com/2018/01/01/SpringMVC-33-controller-annotation/

作者

光星

发布于

2018-01-01

更新于

2022-06-17

许可协议

评论