Spring & Spring MVC 8. Spring MVC 控制器 & 映射器

一、@Controller & @RestController

这两个是 Spring MVC 给我们提供的常用控制器,这两个东西一般用在类上,通过它俩,可以声明出这个类是控制器类。

控制器会交由给 Spring 容器做管理。

它俩相同的是他们都是可以声明控制器,不同的是 RestController 是一个无页面返回的控制器。

RestController = ResponseBody + Controller

如果我们使用了 RestController,那么我们就没有办法返回到页面,只能给请求返回数据。

类似于 ajax 的请求一样,不做页面跳转,仅获取数据。

写个例子感受一下。

修改一下之前的 hello.html 

然后创建两个控制器

ok哈,然后我们在修改一下 web.xml 

启动项目,我们来进行测试

可以看到啊,是正常访问,现在点击 Controller

可以看到哈,跳转了,直接跳转到了我们的 hello.jsp 中了。

返回再去点击 RestController

可以看到,直接将这个字符串返回回来了,并没有跳转页面。

后期我们可以使用这个 RestController 做异步交互,没有页面返回,直接返回数据。

RestController 的出现是为了让我们程序员少写 @ResponseBody

二、@RequestBody & @RequestParam

在之前学习 Servlet 的时候,我们使用 request.getParameter 接收参数,可以说是比较费劲了,得需要一个一个写,引入了这个 SpringMVC 之后,我们就不需要写那么多 request 了。

@RequestBody 主要是接收请求体中的参数。拿到从前端页面传递来的请求参数后,Spring MVC 会自动帮我们解析,并且绑定到我们的实体上去。

@RequestParam 主要是接收请求的 url 中的参数。同样哈,这个也会自动帮我们绑定。

来感受一下

我们使用 Postman 来进行接口调试,不会 Postman 可以看我的博客,简单学习一下:postman 使用详解

@RequestBody

先去创建一个实体,我们一会要用(顺便自己弄一下 get、set、toString)

然后我们开始写请求的 API 接口

我们就弄个简单的输出,就不弄 service 了。

当然,弄好这些还是不可以的,因为我们还需要三个 jar 包,没有的话会报错。

就这三个,自己去 maven 仓库下载,然后弄到项目中的 lib 目录中。

然后我们通过 Postman 调试一下。启动项目,打开 Postman。

然后问我们点击 Send

可以看到,服务器端报错了,我们看看错误。

大致的意思就是我们的这个日期传递进来不合适,所以我们需要进行入参转换。打开 Student 这个类,然后我们在日期上加注解。

加上之后,我们从新启动 tomcat,然后再来用 Postman 请求~~

是OK的哈,我们把参数都传递进来了~~~

当然哈,不相信我们可以去掉这个 @RequestBody 这个注解,从新启动项目,再试试

可以看到哈,没有任何东西~

@RequestParam

这个其实比较简单,我们也来写一个例子

我们从新启动服务器,测试一下

send 一下

是没有问题的哈。

但是,如果我们没有传递 id,我们再来看看这个方法

服务器端报错了。这个是因为服务器端默认是我们一定会传递 id 这个参数的,如果没有传递那么久会报错的。

当然哈,Spring MVC 早就给你想到解决方案了,来看一下。

加这个 required 是为了让规定这个 id 的参数可以不是必须的,当我们设置成 false,也就是说我们可以传递,可以不传递,默认的情况是 true,是必须要传递的。

这里我们从新启动服务器,再来测试一下

可以的,是没有问题的哈。

三、ModelAndView

这个 ModelAndView 是我们以后也比较常用的一个类,这个类是用来返回视图还有数据的。

来写一个例子感受一下。

ModelAndView 中有一个 addObject 的方法,这个方法类似 HttpServletRequest 中的 setAttribute 方法,前面的参数是 key,后面的是 value。

ModelAndView 中还有一个方法是 setViewName,这个是返回的视图的名字,这里我们只需要填写返回的视图的名称即可,因为规则我们在 springmvc.xml 中配置了。

到时候我们请求 路径/mav/test 之后会带着两个返回的请求值,跳转到 mav.jsp 页面。

我们再来创建一个 mav.jsp 页面,在 WebContent 下面。

页面中获取我们后端传递过来的值同样是使用 EL 表达式。

从新启动服务器,来测试一下。

是OK的,没有问题。

本篇东西有点多,大家自己好好联系一下,因为这些东西以后我们都常用。

最近我的个人网站在从新搭建,准备换架构,如果有小伙伴有什么提议,加点什么内容,可以直接私聊我的 CSDN 账号,或者 QQ :2100363119

猜你喜欢

转载自blog.csdn.net/weixin_45908370/article/details/114967983