SpringMVC(三十三):@Controller与@RestController注解

star2017 1年前 ⋅ 289 阅读

@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. 配置解析请求路径。
<!--前端控制器 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 会使用默认的处理器映射器和处理器适配器来处理请求。在实际开发基本上不用配置
<!-- 把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源点

相关文章推荐

全部评论: 0

    我有话说: