简单demo。

一、流程

(1)创建maven项目,pom.xml导入各种包

有些包是这次用不上的,看着加吧。

(2)首先配置web.xml

因为想使用ajax,html不想被DispatcherServlet拦截,就干脆再配一个拦截器,直接让html通过。

(3)配置控制器Controller

记得加上注释@Controller。

因为我们前端使用ajax,所以页面不能进行跳转,要在请求页面返回数据,不用转到视图解析器,不用return。

所以说函数类型可以为void,而且必须加上@ResponseBody这个注解。

如果不加这个注解,就会像下面那个testhello()方法那样,收到hello的请求后,return hello到视图解析器,根据配置映射到/hello.jsp页面去了。

(4)配置视图解析器spring-mvc.xml

因为我们用ajax所以不需要视图映射,但是还是需要自动扫描controller下的控制器类,所以<context:component-scan base-package=”controller”></context:component-scan>是必须的。

(5)分析下spring mvc 的运作过程

1.访问页面,被web.xml配置的拦截器拦截到

根据映射:

交给了springDispatcherServlet这个servlet处理。

2.根据web.xml中springDispatcherServlet的配置

找到了这个 org.springframework.web.servlet.DispatcherServlet类,并且得到了视图解析器的配置文件spring-mvc.xml的位置。

3.找到视图解析器的配置文件之后,根据配置

自动扫描controller包下的控制器类。注意这个@Controller标示,就是控制器类。

如果找不到该包下面的任何控制器类,报错404。

4.找到控制器类后

根据@RequestMapping的value找到请求对应的方法,如果找到了,交给该方法去处理。

如果找不到任何方法,报错404。

5.交给方法处理之后

如果加上了@ResponseBody注解,将返回结果直接写入HTTP response body中,一般在异步获取数据时使用。

在使用@RequestMapping后,返回值通常解析为跳转路径,加上@ResponseBody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。

比如异步获取json数据,加上@ResponseBody后,会直接返回json数据。

如果返回的一些东西是浏览器无法解析的,比如java类,list,Map什么的,报错406。

如果没有加上@ResponseBody注解,将返回结果交回视图解析器。

由这个视图解析器类:org.springframework.web.servlet.view.InternalResourceViewResolver进行结果的拼装,返回对应的视图。

比如访问路径为hello,就拼装成/hello.jsp,返回的就是hello.jsp的视图。这里视图的jsp要自己写。

如果找不到这个返回的视图,报错404。

(6)测试结果

访问成功。

二、总结

这样接口就写好了,之后就可以通过前端进行调用。

1 对 “spring mvc 实现第一个接口”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注