Spring MVC

打印 上一主题 下一主题

主题 1668|帖子 1668|积分 5004

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一.RequestMapping

(1).RequestMapping的简朴介绍

1.RequestMapping是Spring Web MVC的注解,既可以修饰类也可以修饰方法,通过RequestMapping修饰后的类和方法,它便可提供用户访问路径。
2.下图中的红色是RequestMapping修饰的类,蓝色线是RequestMapping修饰的方法。括号里面写的是访问路径的URL,其中'/'是可以省略的,但一样寻常不省略。

3.RequestMapping既支持POST哀求又支持GET哀求,但可以更改为只能是POST哀求大概只能是GET哀求,在RequstMapping中加一个method的参数,就可以指定接受的哀求是POST大概是GET。

4.当只需要GET大概POST的哀求并且想写简便一点,可以使用GETMapping和PostMapping,括号里面也写URL。


5.不同类中,这几个不同的类使用了RequestMapping进行修饰的话并且这些类的URL也不雷同,如果它们的方法用RequestMapping修饰时的URL雷同,也是可以的,但是如果类RequestMapping修饰,则方法RequestMapping修饰时,不能用雷同的URL,也就是说不能用雷同的名字。
(2)RequestMapping修饰的方法的简朴使用

1.前端传入单个普通参数(多个参数也是一样的),后端接受参数(发起接受类型用包装类):

2.当前端需要传入多个参数的时间,后端可以将多个参数变成一个对象来进行传入。

3.后端接受数组:

二.RequestParam(参数绑定)

1.当前端传入的参数的名字和后端接受的名字不同时,后端可以通过@RequestParam来进行重定名:

2.RequestParam也可以叫做参数绑定,当前端传入的参数名不是RequestParam括号里面的参数名时,会报错400,说明这个参数就是必传的参数:


之以是会有状态码400,是由于使用RequestParam的时间,系统默认将参数设置为必传参数,但是可以手动改为非必传参数:

当将required设置为false之后,状态码就不会是400了,此时的就会返回null:

3.当后端接受前端传来的数组时,如果后端直接用List接受,是没办法进行接受的,会对服务器进行报错,并且服务器也会报错:

此时就需要通过RequestParam进行类型绑定,将List绑定成数组类型,后端就可以接受通过List类型来吸收数组了:

三.传递JSON数据

1.JSON简朴介绍

        简朴的来说,JSON就是一种数据格式,JSON通过自己的数据格式来让不同语言读懂这个字符串,下图找了一个在线JSON编译器来展示JSON字符串(左边就是JSON字符串,右边就是JSON格式化后的字符串):

2.JSON语法

1. 数据在 键值对(Key/Value) 中
2. 数据由逗号, 分隔
3. 对象⽤ {} 表⽰
4. 数组⽤ [] 表⽰
5. 值可以为对象,也可以为数组,数组中可以包罗多个对象
JSON的两种结构
1. 对象:⼤括号 {} 生存的对象是⼀个无序的 键值对 集合.⼀个对象以左括号 { 开始,右括号}
结束。每个"键"后跟⼀个冒号 : ,键值对使⽤逗号 , 分隔
2. 数组:中括号 [] 生存的数组是值(value)的有序集合.⼀个数组以左中括号 [ 开始,右中括
号 ] 结束,值之间使⽤逗号 , 分隔。

3.Java对象和Json字符串的转换


1.Java对象转Json字符串:

2.Json对象转Java对象:


4.吸收Json字符串用RequestBody注解


四.PathVariable(URL)

1.PathVariable注解,用于获取URL中的参数(写的代码是获取URL中的多个参数,而且前端必须传入指定个数的参数):

五.RequestPart(文件)

后端吸收文件时,RequestPart可以对参数的重定名:

六.Cookie和Session

1.Cookie和Session的简朴介绍

        Cookie类比于学生的学生证,当学生考入某个学校时,填入自己的信息就会得到学校发来的学生证,这个学生证相称于是一个令牌,也是学生属于这个学校的身份证明。
        Session类比于学校的存储学生信息的数据库,当学生填入了自己的信息之后,就会生存一份学生的信息,并且对应不同的学生就会有不同学生自身的专属SessionId,并且会校验学生证是否存在于学校的数据库当中,相称于对Cookie进行校验,防止伪造。
2.Cookie和Session的区别
(i)Cookie 是客⼾端生存用户信息的⼀种机制.
(ii)Session 是服务器端生存用户信息的⼀种机制.
(iii)Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的 桥梁 Cookie 和 Session 常常会在⼀起共同使⽤. 但是不是必须共同. 完全可以⽤ Cookie 来生存⼀些数据在客⼾端. 这些数据不⼀定是用户⾝份信息, 也不⼀定是 SessionId。
(iv)Session 中的 sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递。
2.获取Cookie

(i).通过HttpServletRequest获取Cookie


(ii)通过CookieValue获取Cookie的值


3.设置Session


getSession中是一个布尔值,默以为true,当为默认值时,会从Cookie中获取SessionId,根据SessionId获取Session对象,如果没有Cookie或是SessionId在服务器中不存在时,则会创建一个空的Session对象。当getSession中的布尔值为false时,不同于true时是当Cookie不存在大概SessionId在服务器中不存在时,不会创建Session对象了,并且服务器重启,Session就会消散。

4.获取Session

(i)通过HttpServletRequest获取Session对象


(ii)通过HttpSession直接获取Session


(iii)通过注释SessionAttribute直接获取Session


5.获取Header

(i)通过HttpServletRequest获取Header


(ii)通过注释RequestHeader


七.响应

1.返回静态页面和HTML代码片断



2.Controller和RestController区别

        简朴说一下Controller和RestController的区别,RestController = Controller + ResponseBody在返回一个页面中,如果使用RestController注解,就只会得到一个/Hello.html的字符串,而不会跳转到Hello.html的页面,是由于ResponseBody直接返回了数据,以是就不会进行页面的跳转和处置处罚。ResponseBody即可以修饰类,也可以修饰方法,修饰类的时间就是这个类的全部方法都返回数据,如果加在一个方法上,只有这个方法返回数据。当在一些类中使用的RestController修饰时,将RestController换成Controller可能会将状态码变成404,这是由于,当需要返回字符串时,Controller会将字符串转换成是视图,可我们需要的是字符串,固然找不到视图,则前端的状态码会变成404。
3.返回JSON


4.设置状态码


5.设置Header


1. value:指定映射的URL
2. method:指定哀求的method类型,如GET,POST等
3. consumes:指定处置处罚哀求(request)的提交内容类型(Content-Type),例如application/json,
text/html;
4. produces:指定返回的内容类型,还可以同时设置返回值的字符编码
5. Params:指定request中必须包罗某些参数值时,才让该⽅法处置处罚
6. headers:指定request中必须包罗某些指定的header值,才气让该⽅法处置处罚哀求
了解即可,更多说明参考Mapping Requests :: Spring Framework
改变Header中的字符串的文本形式

设置Header的信息

八.案例一:加法盘算器

1.约定前后端接口文档
(i)哀求方式:get/post
(ii)参数:参数名,参数格式
(iii)返回结果:格式和内容

2.该案例的接口文档:
哀求路径:calc/sum
哀求方式:get/post
接口描述:盘算两个整数相加

3.哀求参数:
参数名        类型           是否必须          备注 
num1         Integer           是                到场盘算的第一个数      
num2         Integer           是                到场盘算的第二个数

4.响应数据
Content - Type: text/html
响应内容:盘算机盘算结果

后端代码:

前端代码:

 
九.案例二:用户登入

1.接口定义:
哀求路径:/user/login
哀求方式:POST
接口描述:校验账号暗码是否正确

2.哀求参数:
参数名                    类型                   是否必须              备注
userName              String                       是                   校验的账号
password              String                        是                   校验的暗码

3.响应的数据
Content - Type:text/html
响应内容:
true代表账号暗码验证成功
false代表账号暗码验证失败

4.查询登入用户接口:
哀求路径:/user/getLoginUser
哀求方式:GET
接口描述:查询当前登入的用户


5.哀求参数:无

6.响应的数据:
Content - Type:text/html
相应内容:登入用户名

后端代码:


前端代码:

十.案例三:留言板

1.前后端交互接口:获取留言:
2.哀求:GET/message/getList
3.响应:JSON格式:
[
        {
        "from": "⿊猫",
        "to": "⽩猫",
        "message": "喵"
        },
        {
        "from": "⿊狗",
        "to": "⽩狗",
        "message": "汪"
        },
        //...
]
4.发布新留言接口定义:
1.哀求:POST/message/publish
2.响应:JSON格式:
{
ok: 1
}
 
后端代码:

前端代码:

十一.lombok依赖

        Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发,其中的@Data注解可以在开发中不用写SET和GET方法了。需要先引入lombok的依赖才气使用它带来的注释。@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor = @Data
引入lombok依赖:


没有使用@Data时,需要手动写Get,Set和ToString方法:

加入@Data之后就不需要写了:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表