上一节说过完全使用xml文件来配置一个SpringMVC入门程序,但是往往在实际开发中不会这样写,使用的是注解的形式,这样做可以更轻快,简洁。
在上次讲解的入门程序的基础上,进行注解的改进。
文中省略了很多内容,所以先阅读上一节内容:
上节课内容:SpringMVC:第一个入门程序
还是同样的讲解顺序,这里依赖就不再赘述了,直接开始配置核心组件
配置前端控制器
配置不变,这里直接给出了最终版的web.xml文件
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--配置前端控制器-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化配置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置其他组件
配置其他组件在单独的配置文件mvc.xml中进行,原来配置其他组件时,我们需要配置处理器映射器,处理器适配器,视图解析器
现在呢,为了简化,我们把处理器映射器,处理器适配器,总结为一句话
<mvc:annotation-driven/>
视图解析器还是需要单独配置,因为有可能是jsp视图类型,有可能pdf类型,所以我们单独写出来更灵活一点,所以视图解析器不变
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置jsp的视图解析类-->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
最后,在这里,加上注解扫描,为下一步做准备
<!--注解扫描-->
<context:component-scan base-package="classes.controller"/>
最终版的mvc.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: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/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!--注解扫描-->
<context:component-scan base-package="classes.controller"/>
<mvc:annotation-driven/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置jsp的视图解析类-->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
</beans>
到这里,mvc配置文件就完成了,但是不禁有疑问,以前不是有这样一行代码:
为什么现在不需要呢,因为我们刚才配置了扫描注解,这部分功能就交给注解去完成。
开发处理器
由于在xml文件中已经配置过了扫描注解,所以这块可以大胆的使用注解。
首先,我们需要给Controller类加上注解,以前我们讲过,将类交给Spring进行管理有很多注解,这块我们是Controller层,所以使用注解:
@Controller
交给了Spring进行管理以后,我们还需要给方法加上注解:
@RequestMapping()
括号内填写请求路径
注意: 由于这里我们给方法添加了注解,所以我们的方法名不必是handleRequest,可以是任意的,所以如果我们对应多个处理请求,只用写一个类,写多个方法,为不同的方法添加不同的RequestMapping,这样写会很简洁。
如果我们使用接口,那么一个类只能有一个handleRequest方法,所以每对应一个请求,就得写一个类,而且还要在xml文件中进行装配,从这里体会得到了注解开发的优点。
开发视图
视图不变
测试
还是使用Jetty进行部署,查看结果: