在之前我们使用Swift的Perfect框架来开发服务端程序时,聊到了Perfect中的路由配置。而在SpringMVC中的路由配置与其也是大同小异的。说到路由,其实就是将URL映射到Java的具体类中的具体方法,或者映射到具体的JSP文件上。本篇博客主要就阐述了如何在SpringMVC中配置路由以及REST配置。下方将会聊到路由到JSP文件、路由到Java中具体的方法、获取路由参数、获取路由的get属性、已经返回json和xml数据等。
本篇博客的案例是在上篇博客创建的工程的基础上来实现的,关于Maven管理下的SpringMVC工程的内容,请移步于《JavaEE开发使用Maven管理的SpringMVC工程》。本篇博客对如何使用Maven来管理SpringMVC就不做过多赘述了。
一、基本路由配置
接下来我们将聊一下常用的几种路由配置方式,然后给出每种路由的具体实例。当然本部分还是比较简单的,虽然简单,但是还是比较重要的。一些后端常用的框架中,都会有各式各样的路由配置方法,但是这些路由的作用都是大同小异的。像ThinkPHP框架中的路由配置也是ThinkPHP运作的基础之一。本部分我们就好好的聊一下SpringMVC的路由配置。
1、配置路由前的准备
在配置路由前,我们得先创建一个Java类,我们所配置的路由都会映射到该Java类中的特定方法。创建一个Java的普通类,命名为RouteController。下方截图中,上方圆框中就是我们SpringMVC的配置文件了。因为在SpringMVCConfig中我们指定了该配置文件的作用域是com.zeluli.springmvc这个包,所以我们创建的路由控制器RouteController类也必须在此包下方。如下所示。下方会对RouteController类中的内容进行详细的介绍。
2、路由到JSP文件
接下来我们就来看一下在SpringMVC中是如何路由到JSP文件的。首先我们使用spring中的@Controller注解将RouteController类声明为控制器类,然后在通过@RequestMapping配置路由映射。将路由"/route"映射到RouteController类上。也就是说在浏览器中访问该工程下的/route路径,就会访问到RouteController类。稍后会介绍到访问方式。
声明并映射完相应的Controller类后,我们在RouteController中创建了一个index()方法。该index()方法比较简单就返回个“index”字符串。然后也是使用@RequestMapping来配置路由。我们可以看出index()方法所对应的路由值为"http://www.likecs.com/",也就是说,访问/route这个路由,就会映射到index()这个方法上。
而index()方法返回的这个字符串其实就是该路由所对应的JSP文件的名称,因为我们在SpringMVCConfig配置文件中为其添加了前缀和后缀,所以当返回“index”时,我们访问的就是“/WEB-INF/classes/views/index.jsp”这个资源文件。下方就是SpringMVCConfig中的配置项。
上面实现完方法配置路由后,我们就可以部署到Tomcat上然后用浏览器访问了,下方截图就是我们访问/route路由的具体效果。
3、追加路由并设置ResponseBody
接着,我们继续往/route这个路由上追加字路径。下方我们创建了一个sub1()方法,该方法有一个参数并返回了一个字符串的值。该参数就是用来接收HttpServletRquest对象的,通过这个对象我们可以获取到用户发起请求时的一些参数。
我们将此方法的路由配置为“/sub1”,因为RounteController类的路由是“/route”,所以我们sub1()方法的整体路由就是“/route/sub1”。而在sub1()方法的前方,我们使用了@ResponseBody注解将该方法的返回值放在响应体(Response Body)返回给用户。那么用户在访问该路由时,就会获取到该方法返回的值。如下所示。