Spring2.5以后,用注解开发SpringMVC的功能十分强大,注解也是SpringMVC的精髓。在实际开发中,都会使用注解来实现。
这让SpringMVC开发工作量最小化,开发者只要专注于业务逻辑及页面的编写实现。
配置DispatcherServlet,及相应的servlet-mapping。
这个文件除了servlet-name,和springmvc的配置文件名,其余都是固定不变,可以复用的。
沿用官方命名规则,此处用springmvc-servlet.xml。这个文件除了要扫描的包路径,其余都是固定不变,可以直接复用的。
开启注解
新增context约束
开启自动扫描包
静态资源过滤
使用默认的default-servlet-handler
让Spring MVC不处理静态资源 .css .js .html .mp3 .mp4
支持mvc注解驱动
在spring中一般采用@RequestMapping注解来完成映射关系
要想使@RequestMapping注解生效
必须向上下文中注册DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter实例
这两个实例分别在类级别和方法级别处理。
而annotation-driven配置帮助我们自动完成上述两个实例的注入。
视图解析器
默认使用InternalResourceViewResolver
配置.jsp文件全路径文件名的前缀、后缀。
<?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--自动扫描包,让指定包下的注解生效,由IOC容器统一管理--> <context:component-scan base-package="controller"/> <!--让Spring MVC不处理静态资源 .css .js .html .mp3 .mp4--> <mvc:default-servlet-handler/> <!--支持mvc注解驱动 在spring中一般采用@RequestMapping注解来完成映射关系 要想使@RequestMapping注解生效 必须向上下文中注册DefaultAnnotationHandlerMapping 和一个AnnotationMethodHandlerAdapter实例 这两个实例分别在类级别和方法级别处理。 而annotation-driven配置帮助我们自动完成上述两个实例的注入。--> <mvc:annotation-driven/> <!--视图解析器--> <bean> <!--前缀--> <property value="/WEB-INF/jsp/"/> <!--后缀--> <property value=".jsp"/> </bean> </beans> 3、Controller类编写使用注解开发SpringMVC,99%的工作量都在controller类编写。SpringMVC Annotation 使开发量最小化。
Controller负责解析用户请求,进行业务处理,并返回一个模型。
Controller通过实现接口和注解定义两种方法实现。
实现了Controller接口的类就是控制器,这是较老的方法。
一个控制器类只能有一个方法。多个方法要写多个controller。
推荐用注解定义实现。
@Controller
修饰类,保证该类能被Spring自动扫描到,自动装配为Spring bean
@RequestMapping
请求地址,将controller类或其特定方法映射到指定前端视图
修饰类,表示该类所有方法的响应路径以该地址作为父路径。
修饰方法:表示该方法响应路径,方法响应到指定前端视图。
return
返回值:视图jsp文件名
@Controller注解的类中,若方法返回值对应的jsp文件名存在,则会被视图解析器解析
@Controller //修饰类,保证该类能被Spring自动扫描到,自动装配为Spring bean @RequestMapping("controller") //修饰类,表示该类所有方法的响应路径以该地址作为父路径 public class MyController { //完整url::8080/(工程名)/controller/hello @RequestMapping("/hello") //修饰方法:表示该方法响应路径,方法响应到指定前端视图。 public String sayHello(Model model){ model.addAttribute("msg", "Hello!SpringMVC Annotation!"); //返回值:视图jsp文件名 //@Controller注解的类中,若方法返回值对应的jsp文件名存在,则会被视图解析器解析 return "hello"; } }4、测试
url::8080/springmvc_annotation_war_exploded/controller/hello