@Controller注解
Spring从2.5版本后开始引入注解,用户可以使用@Controller,@RequestMapping,@RequestParam,@ModelAttribute等类似这样的注解。
@Controller用于标记一个类,使用它标记的类就是一个SpringMVC Controller 对象,即一个控制器类。Spring 使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用了@RequestMapping注解的方法才是真正处理请求的处理器。为保证Spring能找到控制器,需要完成两件事:
>>在Spring MVC的配置文件的头文件中引入spring-context
>>使用<context:component-scan>元素,该元素的功能为:启动包扫描功能,以便注册带有@Controller,@Service,@repository,@Component等注解的的类成为Spring的Bean
>>base-pavckage 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理
·配置文件如下:
<!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件,
如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean -->
<context:component-scan base-package="org.fkit.controller"/>
应该把所有控制器类都放在基本包中,并且指定扫描该包,即org.fkit.controller,而不是指定扫描org.fkit包,以免Spring MVC扫描了无关的包
现在我们演示如何使用@Controller注解
package org.fkit.controller; 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";
} }
HelloWorldController是一个基于@Controller注解的控制器,@RequestMapping注解用于映射一个请求,value = "/helloWorld"表示请求由helloWorld方法来进行处理。helloWorld方法接收一个 org.springframework.ui.Model类型的参数,本例在model中添加了一个名为"message"的字符串对象。该对象可以在返回视图当中通过request对象获取。最后,方法返回一个字符串"hello world"作为视图名称。
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件,
如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean -->
<context:component-scan base-package="org.fkit.controller"/> <!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix">
<value>/WEB-INF/content/</value>
</property>
<!-- 后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean> </beans>
由于使用了注解类型,因此不需要再在配置文件中使用XML扫描Bean,<context:component-scan base-package="org.fkit.controller"/>指定需要Spring扫描org.fkit.controller包及其子包下面的所有java文件。
配置视图解析器InternalResourceViewResolver来解析视图,将View呈现给用户 。prefix表示视图的前缀,suffix表示视图的后缀,返回的视图字符串是"helloWorld",经过视图解析器之后,则视图的完整路径为:/WEB-INF/content/helloWorld.jsp。
此处没有配置处理映射器和处理器适配器,当用户没有配置这两项时,Spring会使用默认的处理映射器和处理器适配器处理 请求。
测试URL:http://localhost:8080/ControllerTest/helloWorld

@Controller注解的更多相关文章
- 转 使用@Controller注解为什么要配置<mvc:annotation-driven />
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...
- Spring中@Component注解,@Controller注解详解
在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式,只需要添加几行自动注入的的配置,便可以完成 Service层,Controll ...
- SpringMVC自动扫描@Controller注解的bean
若要对@Controller注解标注的bean进行自动扫描,必须将<context:component-scan base-package="包路径.controller"/ ...
- 使用@Controller注解为什么要配置<mvc:annotation-driven />
自己看了官方文档,也到网上查了下,目前理解如下: <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和Annotat ...
- Spring中@Component注解,@Controller注解详解
在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式,只需要添加几行自动注入的的配置,便可以完成 Service层,Controll ...
- @RestController和@Controller注解的区别
@RestController是@ResponseBody和@Controller注解的结合,当你return一个页面时,使用@Controller注解返回的是相应页面,使用@RestControll ...
- @Component注解、@Service注解、@Repository注解、@Controller注解区别
--------------------------------------------------------------------------------------------------- ...
- springboot中的controller注解没有生效
springboot中的controller注解没有生效 , 启动的Application类没有在controller的父目录或同级目录
- 使用STS加入controller注解后编写程序无法自动提示
1.加入@Controller注解后编写程序无法自动提示,去掉了@Controller注解后就可以了! 2.解决方案:将@Controller替换为@RestController后,可以完美的 ...
随机推荐
- HDU4920-Matrix multiplication-矩阵乘法 51nod-1137 矩阵乘法
先贴两个基础的矩阵乘法,以后再贴一些题. hdu. Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- oracle游标的使用
--游标的使用 步骤1.声明游标 .打开游标 .获取数据 .关闭游标 declare cursor cur is select * from emp; t_sal cur%rowtype; begin ...
- springboot:快速构建一个springboot项目
前言: springboot作为springcloud的基础,springboot的热度一直很高,所以就有了这个springboot系列,花些时间来了解和学习为自己做技术储备,以备不时之需[手动滑稽] ...
- b2b2c
编辑 B2B2C是一种电子商务类型的网络购物商业模式,B是BUSINESS的简称,C是CUSTOMER的简称,第一个B指的是商品或服务的供应商,第二个B指的是从事电子商务的企业,C则是表示消费者. ...
- Visual SVN Server启动失败0x8007042a错误
载. 今天在程序VisualSVNServer界面中启动服务时,报错如下: VisualSVNServerServer service failed to start:服务已返回特定的服务 ...
- 邓_tp_笔记
<?phpnamespace app\teacher\controller;use think\Db;use app\common\model\Classcourse;use app\commo ...
- java 三大框架
SSH即:Spring.Struts.HibernateSpring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应 ...
- 优化表单数据的JS校验
在平常的web开发中,我经常需要在客户端对表单的数据进行验证.比如,我们验证表单输入的内容不为空: ? <form action="" method="post&q ...
- 【JMedia】诺贝尔奖得主:东亚教育浪费了太多生命
10月3日,2016年诺贝尔奖开奖第一天,日本科学家大隅良典获得诺贝尔生理学或医学奖.进入21世纪,日本科学家获奖人数快速增长.包括物理奖8位.化学奖6位.生理学或医学奖3位,共计17位,平均下来差不 ...
- Spring MVC中使用POI导出Word
内容绝大部分来源于网络 准备工作 准备[XwpfTUtil]工具类(来源于网络) 准备word模版 下载[XwpfTUtil]工具类 import org.apache.poi.xwpf.usermo ...