首先,我们来看配置版和注解版的相同步骤:
1.新建一个Moudle , springmvc-02-hello , 添加web的支持!
2.确定导入了SpringMVC 的依赖!
3.配置web.xml , 注册DispatcherServlet
4.编写SpringMVC 的 配置文件!名称:springmvc-servlet.xml : [servletname]-servlet.xml
说明,这里的名称要求是按照官方来的
在springmvc.xml文件中也就是配置版和注解版不同的点:
我们先来看看配置版:
配置版:
1)添加处理器映射器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
2)添加处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
3)添加视图解析器
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
4)
编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解;需要返回一个ModelAndView,装数据,封视图;
5)将自己的类交给SpringIOC容器,注册bean
6)写要跳转的jsp页面,显示ModelandView存放的数据,以及我们的正常页面;
注解版:注解版的xml文件的处理器映射器和处理器适配器的处理方式变得很方便:
<!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
<context:component-scan base-package="com.kuang.controller"/>
<!-- 让Spring MVC不处理静态资源 -->
<mvc:default-servlet-handler />
<!--
支持mvc注解驱动
在spring中一般采用@RequestMapping注解来完成映射关系
要想使@RequestMapping注解生效
必须向上下文中注册DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter实例
这两个实例分别在类级别和方法级别处理。
而annotation-driven配置帮助我们自动完成上述两个实例的注入。
-->
<mvc:annotation-driven />
可以看到,仅仅这一行代码注解,就将处理器映射器与处理器适配器为我们自动注入,省去我们很多时间
并且他们的方便不仅如此,还体现在我们接下来的Controller类中
因为我们已经写入了自动扫描包,所以不需要向springmvc.xml中注册bean,
返回jsp页面直接可以return"hello",视图解析器会为我们自动识别
注意
@Controller是为了让Spring IOC容器初始化时自动扫描到;
@RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello;
方法中声明Model类型的参数是为了把Action中的数据带到视图中;
方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。
总结:
通过注解方式,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置
(强烈推荐大家种草)