功能描述

用户输入用户名、密码,经过登录验证后,登录成功后能够访问主页面

  • 实体POJO类:UserBasic
  • DAO接口及其实现类:UserBasicDAO UserBasicDAOImpl
  • service接口及其业务逻辑实现类:UserBasicService UserBasicServiceImpl
  • 控制器组件:UserControllerPageController
  • 页面:登录页面、主页面

【UserBasic.java】—— POJO-用户类

package com.javaweb.qqzone.zone.pojo;import java.util.List;public class UserBasic {private Integer id;private String loginId;private String nickName;private String pwd;private String headImg;private UserDetail userDetail;//1:1private List<Topic> topicList;//1:Nprivate List<UserBasic> friendList;public UserBasic() {}public UserBasic(Integer id) {this.id = id;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getLoginId() {return loginId;}public void setLoginId(String loginId) {this.loginId = loginId;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName = nickName;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public String getHeadImg() {return headImg;}public void setHeadImg(String headImg) {this.headImg = headImg;}public UserDetail getUserDetail() {return userDetail;}public void setUserDetail(UserDetail userDetail) {this.userDetail = userDetail;}public List<Topic> getTopicList() {return topicList;}public void setTopicList(List<Topic> topicList) {this.topicList = topicList;}public List<UserBasic> getFriendList() {return friendList;}public void setFriendList(List<UserBasic> friendList) {this.friendList = friendList;}
}

【UserBasicDAO.java】—— DAO-用户实现接口(主要用于操作数据库)

package com.javaweb.qqzone.zone.dao;import com.javaweb.qqzone.zone.pojo.UserBasic;import java.util.List;public interface UserBasicDAO {//根据账号和密码获取用户信息public UserBasic getUserBasic(String loginId, String pwd);//获取指定用户的所有好友列表public List<UserBasic> getUserBasicList(UserBasic userBasic);//根据id查询指定的用户信息UserBasic getUserBasicById(Integer id);}

【UserBasicDAOImpl.java】—— 用户接口实现类(主要用于对UserBasicDAO的具体操作)

package com.javaweb.qqzone.zone.dao.impl;import com.javaweb.qqzone.myssm.basedao.BaseDAO;
import com.javaweb.qqzone.zone.dao.UserBasicDAO;
import com.javaweb.qqzone.zone.pojo.UserBasic;import java.util.List;public class UserBasicDAOImpl extends BaseDAO<UserBasic> implements UserBasicDAO {@Overridepublic UserBasic getUserBasic(String loginId, String pwd) {String sql = "select * from t_user_basic where loginId = ? and pwd = ?";UserBasic userBasic = super.getInstance(sql,loginId,pwd);return userBasic;}@Overridepublic List<UserBasic> getUserBasicList(UserBasic userBasic) {//String sql = "select * from t_user_basic t1 LEFT JOIN t_friend t2 on t1.id = t2.uid inner join t_user_basic t3 on t2.fid = t3.id where t1.id = ?";String sql = "select fid as id from t_friend where uid = ?";List<UserBasic> list = super.getForList(sql, userBasic.getId());return list;}@Overridepublic UserBasic getUserBasicById(Integer id) {String sql = "select * from t_user_basic where id = ?";UserBasic userBasic = super.getInstance(sql, id);return userBasic;}
}

【UserBasicService.java】—— service-用户业务接口(主要用于业务逻辑相关操作)

package com.javaweb.qqzone.zone.service;import com.javaweb.qqzone.zone.pojo.UserBasic;import java.util.List;public interface UserBasicService {public UserBasic login(String loginId, String pwd);List<UserBasic> getFriendList(UserBasic userBasic);//根据id获取指定用户信息UserBasic getUserBasicById(Integer id);
}

【UserBasicServiceImpl.java】—— 用户业务逻辑实现类(主要用于对UserBasicService的具体操作)

package com.javaweb.qqzone.zone.service.impl;import com.javaweb.qqzone.zone.dao.UserBasicDAO;
import com.javaweb.qqzone.zone.pojo.UserBasic;
import com.javaweb.qqzone.zone.service.UserBasicService;import java.util.ArrayList;
import java.util.List;public class UserBasicServiceImpl implements UserBasicService {private UserBasicDAO userBasicDAO = null;@Overridepublic UserBasic login(String loginId, String pwd) {UserBasic userBasic = userBasicDAO.getUserBasic(loginId, pwd);return userBasic;}@Overridepublic List<UserBasic> getFriendList(UserBasic userBasic) {List<UserBasic> userBasicList = userBasicDAO.getUserBasicList(userBasic);List<UserBasic> friendList = new ArrayList<>(userBasicList.size());for (int i = 0; i < userBasicList.size(); i++) {UserBasic friend = userBasicList.get(i);friend = userBasicDAO.getUserBasicById(friend.getId());friendList.add(friend);}return friendList;}@Overridepublic UserBasic getUserBasicById(Integer id) {UserBasic userBasic = userBasicDAO.getUserBasicById(id);return userBasic;}
}

【UserController.java】—— controller-用户控制层(主要用于与页面相关操作对接)

package com.javaweb.qqzone.zone.controller;import com.javaweb.qqzone.zone.pojo.Topic;
import com.javaweb.qqzone.zone.pojo.UserBasic;
import com.javaweb.qqzone.zone.service.TopicService;
import com.javaweb.qqzone.zone.service.UserBasicService;import javax.servlet.http.HttpSession;
import java.util.List;public class UserController {private UserBasicService userBasicService;private TopicService topicService;public String login(String loginId, String pwd, HttpSession session) {//1.登录验证UserBasic userBasic = userBasicService.login(loginId, pwd);if (userBasic != null) {//1-1.获取相关的好友信息List<UserBasic> friendList = userBasicService.getFriendList(userBasic);//1-2.获取相关的日志信息(但是日志只有id,没有其他信息)List<Topic> topicList = topicService.getTopicList(userBasic);userBasic.setFriendList(friendList);userBasic.setTopicList(topicList);//userBasic这个key保存的是登陆者的信息//friend这个key保存的是当前进入的是谁的空间session.setAttribute("userBasic", userBasic);session.setAttribute("friend", userBasic);return "index";}else {return "login";}}public String friend(Integer id, HttpSession session) {//1.根据id获取指定用户信息UserBasic currentFriend = userBasicService.getUserBasicById(id);List<Topic> topicList = topicService.getTopicList(currentFriend);currentFriend.setTopicList(topicList);session.setAttribute("friend", currentFriend);return "index";}
}

【PageController.java】—— controller - 目的是执行super.processTemplate()方法,让thymeleaf生效。

package com.javaweb.qqzone.zone.controller;public class PageController {public String page(String page) {return page; // frames/left}
}

【login.html】—— 登录页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>登录页面</title><link rel="stylesheet" href="css/common.css"><link rel="stylesheet" href="css/login.css">
</head>
<body><div id="div0"><div id="div_container"><p class="center">用户登录1</p><form th:action="@{/user.do}" method="get"><input type="hidden" name="operation" value="login"/><table><tr><th>用户名:</th><td><input type="text" name="loginId"/></td></tr><tr><th>密码:</th><td><input type="password" name="pwd"/></td></tr><tr><th colspan="2"><input type="submit" value="登录"/><input type="button" value="还没有账号?"/></th></tr></table></form></div></div>
</body>
</html>

【index.html】—— 主页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="css/common.css"><link rel="stylesheet" href="css/index.css">
</head>
<body><div id="div0"><div id="div_top"><iframe height="118px" th:src="@{/page.do?operation=page&page=frames/top}" width="100%" frameborder="no"></iframe></div><div id="div_left"><iframe th:src="@{/page.do?operation=page&page=frames/left}" width="100%" frameborder="no"  οnlοad="this.style.height = window.frames[1].document.body.scrollHeight+'px';"></iframe></div><div id="div_main"><iframe th:src="@{/page.do?operation=page&page=frames/main}" scrolling="no" width="100%" frameborder="no"  οnlοad="this.style.height = Math.max(window.frames[1].document.body.scrollHeight,window.frames[2].document.body.scrollHeight)+'px';"></iframe></div><div id="div_bottom"><p class="center" >版权所有&reg;,欢迎盗版</p></div></div>
</body>
</html>

基于Javaweb的小项目(类似于qqzone) 5 ——登录功能实现相关推荐

  1. 基于Javaweb的小项目(类似于qqzone) 2 ——服务端连接数据库并实现CRUD的通用操作

    1.数据库连接与关闭 服务端使用Druid连接池进行数据库连接,主要分为两步: 1.配置jdbc.properties文件 driverClassName=com.mysql.jdbc.Driver ...

  2. 基于Javaweb的小项目(类似于qqzone) 4 ——通用代码模块 - 过滤器、异常处理、servlet通用代码块

    1.过滤器Filter 对页面传回的内容进过滤,并设置编码,防止出现中文乱码问题 [CharacterEncodingFilter.java] package com.javaweb.qqzone.m ...

  3. 基于Javaweb的小项目(类似于qqzone)1——设计数据库

    1.熟悉QQZone业务需求 1)用户登录 2)登录成功,显示主界面,左侧显示好友列表:上端显示欢迎词:如果不是自己的空间,显示超链接,返回自己的空间:下端显示日志列表 3)查看日志详情: 日志本身的 ...

  4. 基于Javaweb的小项目(类似于qqzone) 7 —— 日志相关操作

    功能描述 展示日志详情:点击日志列表中的某个日志标题,可展示该日志的详情信息 -在展示日志详情信息的下面,还要展示其他人对此日志的回复 -若该回复存在主人回复,则也需要显示主人回复 添加日志:点击发表 ...

  5. 基于Javaweb的小项目(类似于qqzone) 8 —— 回复相关操作

    功能描述 展示回复:点击日志列表中的某个日志标题,在展示该日志的详情信息下面,需要展示该日志的相关回复 添加回复:只需要输入回复内容 删除回复:在对应的回复中,鼠标经过该回复,则会出现删除图标,点击可 ...

  6. SpringBoot项目中集成第三方登录功能

    SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...

  7. 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍

    探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 2.项目介绍 2.1.项目背景 2.2.市场分析 2.3.目标用户 ...

  8. 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍

    探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 1.功能介绍 1.1.功能列表 1.2.注册登录 1.3.交友 1 ...

  9. 【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能

    文章目录 前言 一.微信小程序实现网页一键登录功能 1.旧版登录方法 2.新版登录方法 二.相关第三方包源码 前言 如果微信小程序要获取微信登录的用户信息,需要拿到code去后台换取用户信息,具体步骤 ...

最新文章

  1. jQuey基础思维导图梳理1
  2. linux time函数_Linux基础知识(三)
  3. AD20更改PCB 2D视图的背景环境颜色
  4. c++语言怎么实现字符串拼接,C++ string类和字符串的访问和拼接操作
  5. mysql常用数据操作之查
  6. java 双冒号_Java 双冒号::是什么操作符?
  7. 十六进制换算成二进制、八进制、十进制
  8. 【超全面】Python内置函数详解
  9. [小技巧1]Word或WPS文献引用、交叉引用方括号编号
  10. Html+css仿淘宝页面练习
  11. 没有互联网的济南,要怎么从冬天走向春天?
  12. MapReduce之week2 test 分区计算结余(练习)
  13. ios手机页面滑动卡顿问题
  14. linux-进程间通信
  15. 简单3步,在线完成gif动图制作
  16. 云平台与云主机选择的经验和建议
  17. 两个累加符号∑如何计算,以及如何用python实现两个∑累加运算 | markdown下latex公式对齐
  18. 仿PS3游戏《战神》连击动作解析
  19. 星冰乐java chips_揭秘 | 星巴克内部员工推荐隐藏菜单
  20. python如何横向输出_PYTHON小工具-竖排表格内容转横向输出

热门文章

  1. 使用api获取数据————小程序
  2. 发个真正高效清理垃圾的脚本(请慎用,效果很强)
  3. 计算机性能指标决定于,关于计算机显卡的性能指标盘点
  4. 七夕,用python表白的各种姿势
  5. Windows命令行下怎么打开文件夹
  6. 如何将多个PDF的首页整合成一个单独的PDF
  7. unity 3D RPG教程(一)
  8. C# 给PDF签名时添加时间戳的2种方法)
  9. 【ios学习】OneClock的翻页时钟效果是如何实现的
  10. JAVA1V1人机对战游戏