SpringMVC教程
SpringMVC注解式开发
SpringMVC核心技术
SSM整合开发

第一个配置式SpringMVC程序

项目:primary

完成功能:用户提交一个请求,服务端处理器在接收到这个请求后,给出一条欢迎信息,在响应页面中显示该信息。

1、导入 Jar 包

在创建好 web 项目后,首先要导入 Jar 包。SpringMVC 需要的基本 Jar 包,是在原 Spring的 Jar 包基础上(四个核心 jar, 日志 jar,spring-aop.jar,spring-web.jar),增加 springmvc 框架的实现包:spring-webmvc.jar

2、注册中央调度器

(1)全限定性类名

该中央调度器为一个 Servlet,名称为 DispatcherServlet。中央调度器的全限定性类名在导入的 Jar 文件 spring-webmvc-4.3.9.RELEASE.jar 的第一个包 org.springframework.web.servlet下可找到。

(2)<Load-on-startup/>

在<servlet/>中添加<Load-on-startup/>的作用是,,标记是否在Web服务器(这里是Tomcat) 启动时会创建这个 Servlet 实例,即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建。它的值必须是一个整数。

● 当值大于等于 0 时,表示容器在启动时就加载并初始化这个 servlet,数值越小,该 Servlet的优先级就越高,其被创建的也就越早;

● 当值小于 0 或者没有指定时,则表示该 Servlet 在真正被使用时才会去创建。

● 当值相同时,容器会自己选择创建顺序。

(3)<url-pattern/>

 对于<url-pattern/>,可以写为 / ,建议写为*.do 的形式。详见 1.4 再解<url-pattern/>。

(4)配置文件位置与名称

注册完毕后,可直接在服务器上发布运行。此时,默认浏览器页面,及 MyEclipse 控制台均会抛出 FileNotFoundException 异常。即默认要从项目根下的 WEB-INF 目录下找名称为Servlet 名称-servlet.xml 的配置文件。这里的“Servlet 名称”指的是注册中央调度器时 标签中指定的 Servlet 的 name 值。本例配置文件名为 springmvc-servlet.xml。

从 DispatcherServlet 类的父类的源码注释 FrameworkServlet 中也可看到相关描述: 

而一般情况下,该配置文件是放在类路径下,即 src 目录下。所以,在注册中央调度器时,还需要为中央调度器设置查找 SpringMVC 配置文件路径,及文件名。

打开 DispatcherServlet 的源码,其继承自 FrameworkServlet,而该类中有一个属性contextConfigLocation,用于设置 SpringMVC 配置文件的路径及文件名。该初始化参数的属性就来自于这里。

3、创建 SpringMVC 配置文件

在工程的类路径即 src 目录下创建 SpringMVC 的配置文件 springmvc.xml。该文件名可以任意命名。而该 xml 文件的约束,则使用 Spring 配置文件最全约束。

4、定义处理器

该处理器需要实现 Controller 接口。

ModelAndView 类中的 addObject()方法用于向其 Model 中添加数据。Model 的底层为一个 HashMap。

Model 中的数据存储在 request 作用域中,SringMVC 默认采用转发的方式跳转到视图,本次请求结束,模型中的数据被销毁。

5、注册处理器

在 springmvc.xml 中注册处理器。不过,需要注意处理器的 id 属性值为一个请求 URI。表示当客户端提交该请求时,会访问 class 指定的这个处理器。

6、定义目标页面

在 WEB-INF 目录下新建一个子目录 jsp,在其中新建一个 jsp 页面 show.jsp。

7、修改视图解析器的注册

SpringMVC 框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器 InternalResouceViewResolver 中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。

8、修改处理器