用户模块-登录接口完整code

Paste_Image.png
Paste_Image.png
Paste_Image.png

一、接口

-新建UserController
-在类上面,添加spring注解,@Controller,起到Controller作用
-在类上面,添加@RequestMapping("/user/"),把请求地址放到/user命名空间下
-构造类里登录函数login,参数username,password,session
-注释:用户登录
-添加@RequestMapping(value="Login.do",method=RequestMapping.POST),value和接口名保持一致,设置方法post
-添加RequestBody,在返回值的时候,自动通过springmvc的josn 插件将返回值序列化成josn ,通过插件的配置文件dispatche-servlet.xml看到bean(如图),点击bean所指向的类,打开没有看到supportMedicaTypes这个属性,打开其所继承的父类,发现supportMedicaTypes属性,且是个集合,因此在dispatche-servlet.xml中直接把要配置的application/josn注入到集合value里面,这样,MVC返回值通过responseBody注解自动序列化成 josn 。

Paste_Image.png

-写service,调用mybatis的dao层

二、service层

-创建接口IUserService,便于维护,为AOP做准备,无论是静态代理或者是动态代理,还是后续发展成的AOP都用接口代理,也可以用czlib来代理class,但是这种方式没有接口扩展性强
-声明login接口

Paste_Image.png

-创建实现类UserServiceImpl,注入实现方法

Paste_Image.png

三、通用数据端响应对象【ServiceResponse、ResponseCode】

-common下创建类ServiceResponse

-用范型声明该类,传范型T,代表响应里面要封装的数据对象是什么类型,让它实现序列化接口Serializable
-声明三个属性:int status,String msg,T data,data代表我们将返回的范型使用对象,为了做成通用的,采用T 做一个范型,好处:返回时可以指定范型内容,也可以不指定类型

Paste_Image.png

-构造方法,写成私有的,即外部不能new;几个私有的构造器,调用比较方便,规避String msg和String data的冲突(data的值可能会传进msg里)

Paste_Image.png

-封装一个方法isSuccess,来确认这个响应是不是成功的响应,如果status是0则success,1则fail

Paste_Image.png

-用一个枚举来对数字归类

-在common创建enum枚举类ResponseCode

0-成功,1-出错,10-需要登录,2-不合法参数

Paste_Image.png

-声明两个属性code,desc,写出构造器


Paste_Image.png

-响应编码枚举类完成,扩展只需要继续编辑即可

-回到ServiceResponse

更改isSuccess方法,如果SUCCESS.getcode返回为0,即返回true
(其实isSuccess方法不是一直都是0值吗?)

Paste_Image.png

-创建三个公有构造器

Paste_Image.png

-创建成功状态下的公有构造器,调用私有构造器,1.仅status,2、status+msg 3、status+data 4、status+msg+data;此时解决了上面提到的“传String data的冲突(data的值可能会传进msg里)”,因为public构造器里面传参使用 T类型,调用私有构造器时仅传入T类型的data里


Paste_Image.png

--创建失败状态下和其他错误状态的公有构造器(但是这个errorCode是??)

Paste_Image.png

--加工。三个属性int status,String msg,T data是序列化返回给前端,但是isSuccess是public,会显示在前端的josn里,所以要加一个@JosnIgnore注解,则该字段序列化之后不会显示在josn里面

Paste_Image.png

--public 的get方法都会显示在josn里面

--注意:失败有时候不返回data,此时是有data-key的空节点,data-value是null,这种是不需要返回给前端的,控制方法:在类前面增加注解@JosnSerialize(include = JosnSerialize.Inclusion.NOT_NULL)
该注解作用,仅返回非空值,比如只需要返回status,那么msg和data为空就不会返回给前端
【保证序列化json的时候,null的对象,key也会消失】

Paste_Image.png

四、继续编写service层和dao层mapper逻辑

-先把IUserService和UserServiceImpl中login的方法返回类型都改成ServiceResponse<T>类型

Paste_Image.png

-把mapper通过注解方式引进来

Paste_Image.png

-编写UserMapper接口,增加checkUser方法

Paste_Image.png

-编写UserMapperImpl,用#防止sql注入,会进行预编译

-回到service,使用范型做的高可用的服务端相应类进行报错

Paste_Image.png

-MD5不可逆转加密方法,先// to do MD5

-继续判断用户密码,编写mapper,返回值User,因为一旦登录成功,返回值是User
注意:Mybatis传多个参数需要用到@Param注解,写sql是要对应@Param注解里面的String

-resultmap引用mapper顶部有自定义的,resulttype引用java本来有的类型(parametetype也是),parametetype为map(全称为:java.util.Map)型,因为会接收多个参数
注意:sql语句最好不要写成select *,因为实际开发过程中,表是会发生变化的,如果始终只是要两个字段,那么select *就不利于维护,要什么查什么
用<include refid>可以方便要查询的数据

Paste_Image.png

-回到service层,处理密码错误情况和能成功登录的情况,setPassword是为了将返回值密码置为空

Paste_Image.png

五、把service注入到controller上

-先声明,@service("iUserService")

Paste_Image.png

-把service注解到controller

-声明一个常量类,Const,当前用户

Paste_Image.png

-在login方法里声明一个response,如果isSuccess为0,成功响应。
然后调用常量类的属性,设置session属性,两个参数

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容