1.2 第一个 SpringMVC 程序
1.2.1 导入 Jar 包
在创建好 web 项目后,首先要导入 Jar 包。SpringMVC 需要的基本 Jar 包,是在原 Spring
的 Jar 包(Spring 课程中讲完事务部分后所用到的 Spring 的所有 Jar 包)基础上,增加了两个 Jar 包。
Spring-context-support:包含支持 UI 模版,邮件服务,缓存 Cache 等方面的类。
Spring-webmvc:对 SpringMVC 的实现。
1.2.2 注册 注册 中央调度器
(1 ) 全限定性类名
该中央调度器为一个 Servlet,名称为 DispatcherServlet。中央调度器的全限定性类名在
导入的 Jar 文件 spring-webmvc-4.2.1.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/>标签中指定的 Servlet 的 name 值。本例配置文件名为 springmvc-servlet.xml。
从 DispatcherServlet 类的父类的源码注释 FrameworkServlet 中也可看到相关描述:
而一般情况下,该配置文件是放在类路径下,即 src 目录下。所以,在注册中央调度器
时,还需要为中央调度器设置查找 SpringMVC 配置文件路径,及文件名。
打开 DispatcherServlet 的源码,其继承自 FrameworkServlet,而该类中有一个属性
contextConfigLocation,用于设置 SpringMVC 配置文件的路径及文件名。该初始化参数的属性
就来自于这里。
1.2.3 创建 SpringMVC 配置文件
在工程的类路径即 src 目录下创建 SpringMVC 的配置文件 springmvc.xml。该文件名可以
任意命名。而该 xml 文件的约束,则使用 Spring 配置文件最全约束。
1.2.4 定义处理器
该处理器需要实现 Controller 接口。
ModelAndView 类中的 addObject()方法用于向其 Model 中添加数据。Model 的底层为一
个Map。另外需要注意的是,addObject()方法的返回值为ModelAndView,则说明可向该Model
中连续添加多个数据。
1.2.5 注册处理器
在 springmvc.xml 中注册处理器。不过,需要注意处理器的 id 属性值为一个请求 URI。
表示当客户端提交该请求时,会访问 class 指定的这个处理器。
1.2.6 定义目标页面
在 WEB-INF 目录下新建一个子目录 admin,在其中新建一个 JSP 页面 show.jsp。
1.2.7 修改视图解析器的注册
SpringMVC 框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器
InternalResouceViewResolver 中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳
转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。
1.2.8 修改处理器