用注解开发SpringMVC

Spring2.5以后,用注解开发SpringMVC的功能十分强大,注解也是SpringMVC的精髓。在实际开发中,都会使用注解来实现。
这让SpringMVC开发工作量最小化,开发者只要专注于业务逻辑及页面的编写实现。

1、web.xml文件

配置DispatcherServlet,及相应的servlet-mapping。
这个文件除了servlet-name,和springmvc的配置文件名,其余都是固定不变,可以复用的。

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee " version="4.0"> <!--注册DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联一个springmvc的配置文件,命名规则为:【servlet-name】-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!--/ 匹配所有的请求:不包括.jsp--> <!--/* 匹配所有的请求:包括.jsp--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 2、Spring bean配置文件

沿用官方命名规则,此处用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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxyxp.html