0. 说在前面
基于 SpringMVC 项目构建 https://www.cnblogs.com/antusheng/p/12651996.html 中的项目
1. 修改 springmvc.xml, 注解的方式引入处理器映射器和处理器适配器
- <?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
- https://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/mvc
- https://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/context
- https://www.springframework.org/schema/context/spring-context.xsd">
- <!-- 方式一: 非注解方式 -->
- <!-- 将 welcome.action 请求交给 com.springmvc.demo.controller.WelcomeController 处理 -->
- <!-- <bean name="/welcome.action" class="com.springmvc.demo.controller.WelcomeController"></bean> -->
- <!-- 配置处理器映射器 -->
- <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> -->
- <!-- 配置处理器适配器 -->
- <!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> -->
- <!-- 方式二: 注解方式 -->
- <!-- 开启注解扫描, base-package 配置 Controller 所在的基础包 -->
- <context:component-scan base-package="com.springmvc.demo.controller"></context:component-scan>
- <!-- 配置视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/"></property>
- <property name="suffix" value=".jsp"></property>
- </bean>
- </beans>
2. 修改 WelcomeController 类, 不再实现 Controller 接口, 而是在类上添加 @Controller 注解声明该类是一个实现了 Controller 接口的类, 在方法上使用 @RequestMapping 注解, 声明该方法用于映射哪个请求
- package com.springmvc.demo.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.Web.bind.annotation.RequestMapping;
- import org.springframework.Web.servlet.ModelAndView;
- @Controller
- public class WelcomeController{
- @RequestMapping("/welcome.action")
- public ModelAndView welcome(){
- ModelAndView mav=new ModelAndView();
- mav.addObject("message", "欢迎您: 张三");
- mav.setViewName("welcome");
- return mav;
- }
- }
3. 启动项目, 点击 index.jsp 页面的 "欢迎页面" 链接, 跳转到 welcome.jsp 页面
到此, 使用注解的方式配置处理器映射器和处理器适配器也就完成了.
4. 说明
1. 在 springmvc.xml 文件中只配置了注解扫描和视图解析器
注解扫描是用来指定 Controller 类所在的基础包, 只要有请求来就到该包下去查找映射了该请求的 Controller 类;
视图解析器就是对 Controller 类返回的视图进行处理和数据填充操作;
2.springmvc.xml 文件中并没有对处理器映射器和处理器适配器进行配置, 就会使用默认配置
打开 DispatcherServlet.properties 文件, 可以看到标蓝的部分就是对处理器映射器和处理器适配器的默认配置, 标红的部分分别就是注解方式默认使用的处理器映射器和处理器适配器, 没有标红的部分就是使用非注解方式使用的处理器映射器和处理器适配器, 所以也可以把 SpringMVC 项目构建 https://www.cnblogs.com/antusheng/p/12651996.html 项目中 springmvc.xml 中关于处理器映射器和处理器适配器的配置去掉, 运行也是没有问题的.
- # Default implementation classes for DispatcherServlet's strategy interfaces.
- # Used as fallback when no matching beans are found in the DispatcherServlet context.
- # Not meant to be customized by application developers.
- org.springframework.Web.servlet.LocaleResolver=org.springframework.Web.servlet.I18N.AcceptHeaderLocaleResolver
- org.springframework.Web.servlet.ThemeResolver=org.springframework.Web.servlet.theme.FixedThemeResolver
- org.springframework.Web.servlet.HandlerMapping=org.springframework.Web.servlet.handler.BeanNameUrlHandlerMapping, org.springframework.Web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
- org.springframework.Web.servlet.HandlerAdapter=org.springframework.Web.servlet.mvc.HttpRequestHandlerAdapter, org.springframework.Web.servlet.mvc.SimpleControllerHandlerAdapter, org.springframework.Web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
- org.springframework.Web.servlet.HandlerExceptionResolver=org.springframework.Web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver, org.springframework.Web.servlet.mvc.annotation.ResponseStatusExceptionResolver, org.springframework.Web.servlet.mvc.support.DefaultHandlerExceptionResolver
- org.springframework.Web.servlet.RequestToViewNameTranslator=org.springframework.Web.servlet.view.DefaultRequestToViewNameTranslator
- org.springframework.Web.servlet.ViewResolver=org.springframework.Web.servlet.view.InternalResourceViewResolver
- org.springframework.Web.servlet.FlashMapManager=org.springframework.Web.servlet.support.SessionFlashMapManager
来源: http://www.bubuko.com/infodetail-3496100.html