首页 >> 大全

SSM开发书评网22:实现会员登录功能;(本篇博客的核心就是【熟悉登录这种业务的

2023-12-04 大全 27 作者:考证青年

说明:

(1)本篇博客主要内容:实现会员登录功能;(包括会员登录的前端和后端业务逻辑)

(2)本篇博客的几点说明:

● 在前面的【(12)慕课OA系统(项目案例,比较重要!)】中,也实现过会员登录;可以快速参考下那儿的内容,与本节内容对比一下,能帮助理解【登录,这种业务逻辑】;(虽然,二者的复杂程度不一样,但看一下呗,花不了多长时间)

(3)本篇博客,登录功能开发流程:【先确定登录页的前端文件login.ftl,编写登录的前端文件】→【然后编写方法,设置访问login.ftl登录页的入口方法,也就是设置访问login.ftl登录的url】→【然后,设置首页上的,登录超链接,让其指向我们在上一步设置的url】→【编写登录功能的,主要是编写登录的处理逻辑】→【编写登录功能的方法,接收登录页的登录请求,调用逻辑,向login.ftl登录页返回登录结果】→【如果登录成功了,别忘了把当前登录用户的信息,存到会话对象中去;这样以后,登录成功后,在需要显示当前登录用户的地方,我们就能直接取数据了】;

(4)其实,本文最重要的就是熟悉【登录,这种业务逻辑】;包括在处理登录时,需要注意的点、习惯采取的操作等;

目录

一:登录页前端文件login.ftl简介;

二:登录功能后台逻辑;

1.在类:开发【访问登录页的入口方法】;(也就是,开发login.ftl登录页的访问url)

2.在接口中,定义一个登录的方法:()方法;

3.在实现类中,去实现登录的方法:()方法;

4.在中编写处理登录的方法(),接收前端的请求,调用到中定义的逻辑;

启动,观察效果;

补充1,登录成功后,把【层返回的用户对象】存到中;然后,我们就可以在需要的地方,获取当前登录用户的信息了;

补充2,用户登录成功后、跳转到默认首页后,在页面右上角显示“当前登录用户的会员名”;(其实就是获取补充1中存储的用户信息)(背后的与原理是,也可以去对象中的数据)

启动,观察效果;

三:临时:【后端返回JSON】,【数据放在了对象中】,【数据放在了中】时:前端取值的分析;(暂时性总结,以后有了新认识,随时修正补充)

1.把数据放在了中时:其实,数据是放在对象中的;在前端,我们可以使用去取;

2.把数据放在了对象中时:其实,数据是放在域中的;在前端,我们也可以直接用去取;

3.后端返回JSON数据:这种情况,一般对应的是页面ajax请求(比如登录、注册、页面局部刷新),跨接口传值等不涉及页面跳转的情况; (即此时,我们的数据仅仅是JSON,其只是在响应中;数据并没有在三大作用域对象中;)

一:登录页前端文件login.ftl简介;

引入登录页login.ftl;

login.ftl:



会员登录-慕课书评网


说明:

_博客出版的缺点_博客书是什么

(1)脚本内容说明1;

(2)脚本内容说明2;

前端登录页login.ftl已经准备好了,我们主要的任务就是按照要求,完成登录功能的后台逻辑了;

二:登录功能后台逻辑; 1.在类:开发【访问登录页的入口方法】;(也就是,开发login.ftl登录页的访问url)

说明:

(1)之所以url后面要附带.html,这是因为:该系统的登录页是一个允许被外界访问地方,加上.html后,会有助于百度谷歌等搜索引擎的抓取,有助于网站的营销和宣传;(在【SSM开发书评网20:把【验证码功能】应用到注册模块上;】中第一次遇到的)

(2)然后,启动,我们通过【/login.html】就能够访问到登录页了;

2.在接口中,定义一个登录的方法:()方法;

3.在实现类中,去实现登录的方法:()方法;

说明:

(1)这个方法逻辑很明确:【先根据用户输入的用户名,去数据库查】→【如果没有查到,则说明,该用户不存在】→【如果查到了,但是密码不对,则说明密码错误】→【如果一切OK,就返回查到的那个对象】;

4.在中编写处理登录的方法(),接收前端的请求,调用到中定义的逻辑;

package com.imooc.reader.controller;import com.imooc.reader.entity.Member;
import com.imooc.reader.service.MemberService;
import com.imooc.reader.service.exception.BussinessException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;/*** member会员Controller*/
@Controller
public class MemberController {@Resourceprivate MemberService memberService;@PostMapping("check_login")@ResponseBodypublic Map checkLogin(String username, String password, String vc, HttpSession session) {Map result = new HashMap();//首先从Session会话对象中,获取存储在后端的验证码String verifyCode = (String) session.getAttribute("kaptchaVerifyCode");//如果【前端没有输入验证码】或者【当前Session中没有验证码】或者【前端输入的验证码和后端的验证码,在忽略大小写后不一致】:表示验证失败;if (vc == null || verifyCode == null ||!vc.equalsIgnoreCase(verifyCode)) {result.put("code", "VC01");result.put("msg", "验证码错误");} else {try {Member member = memberService.checkLogin(username, password);result.put("code", "0");result.put("msg", "success处理成功");} catch (BussinessException ex) {ex.printStackTrace();result.put("code", ex.getCode());result.put("msg", ex.getMsg());}}return result;}
}

说明:

(1)这儿的很多内容,和前面的【SSM开发书评网21:完成会员注册功能;】等文章中的内容很类似,前面的几篇文章都提到过;这儿就不重复啰嗦了;

(2)只是强调一点:和等一样,对象想用的使用,直接在方法参数中写上就行,会自动帮我们注入;

启动,观察效果;

如果输入的用户名、密码、验证码都正确:发现其登录OK,并且跳转到了默认首页(即根路径);

补充1,登录成功后,把【层返回的用户对象】存到中;然后,我们就可以在需要的地方,获取当前登录用户的信息了;

补充2,用户登录成功后、跳转到默认首页后,在页面右上角显示“当前登录用户的会员名”;(其实就是获取补充1中存储的用户信息)(背后的与原理是,也可以去对象中的数据)

说明:

(1)可以看到,首页上的这个登录是个超链接,其地址对应了【/login.html】登录页;即,当我们点击这个登录按钮后,其就会跳转到登录页;

(2)内容说明;

(3)很显然,当我们把数据存到中时,其实是存到了对象中,我们在前端可以通过去取;那么如果我们把数据存在了对象中,我们在前端也可以通过去取;

(4)的??的意思是,如果存在的话,才进入这个判断结构;有关语法,如有需要可以参考【四:基本语法:分支判断】及附近的文章;

启动,观察效果;

至此,登录功能就实现了;接下来就开始【与用户相关的操作】;如变更阅读状态、发布短评、点赞短评;

三:临时:【后端返回JSON】,【数据放在了对象中】,【数据放在了中】时:前端取值的分析;(暂时性总结,以后有了新认识,随时修正补充) 1.把数据放在了中时:其实,数据是放在对象中的;在前端,我们可以使用去取;

前端,ftl直接取就行了;

有精力可以研究下【中使用返回值,为什么将数据存放在域中【源码分析】_撸码的男人的博客-CSDN博客】;

2.把数据放在了对象中时:其实,数据是放在域中的;在前端,我们也可以直接用去取;

3.后端返回JSON数据:这种情况,一般对应的是页面ajax请求(比如登录、注册、页面局部刷新),跨接口传值等不涉及页面跳转的情况; (即此时,我们的数据仅仅是JSON,其只是在响应中;数据并没有在三大作用域对象中;)

因为对JSON有着良好的支持,所以可以直接使用去取JSON的值;

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了