基于Javaweb的小项目(类似于qqzone) 5 ——登录功能实现
功能描述
用户输入用户名、密码,经过登录验证后,登录成功后能够访问主页面
- 实体POJO类:
UserBasic
- DAO接口及其实现类:
UserBasicDAO
UserBasicDAOImpl
- service接口及其业务逻辑实现类:
UserBasicService
UserBasicServiceImpl
- 控制器组件:
UserController
、PageController
- 页面:登录页面、主页面
【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" >版权所有®,欢迎盗版</p></div></div>
</body>
</html>
基于Javaweb的小项目(类似于qqzone) 5 ——登录功能实现相关推荐
- 基于Javaweb的小项目(类似于qqzone) 2 ——服务端连接数据库并实现CRUD的通用操作
1.数据库连接与关闭 服务端使用Druid连接池进行数据库连接,主要分为两步: 1.配置jdbc.properties文件 driverClassName=com.mysql.jdbc.Driver ...
- 基于Javaweb的小项目(类似于qqzone) 4 ——通用代码模块 - 过滤器、异常处理、servlet通用代码块
1.过滤器Filter 对页面传回的内容进过滤,并设置编码,防止出现中文乱码问题 [CharacterEncodingFilter.java] package com.javaweb.qqzone.m ...
- 基于Javaweb的小项目(类似于qqzone)1——设计数据库
1.熟悉QQZone业务需求 1)用户登录 2)登录成功,显示主界面,左侧显示好友列表:上端显示欢迎词:如果不是自己的空间,显示超链接,返回自己的空间:下端显示日志列表 3)查看日志详情: 日志本身的 ...
- 基于Javaweb的小项目(类似于qqzone) 7 —— 日志相关操作
功能描述 展示日志详情:点击日志列表中的某个日志标题,可展示该日志的详情信息 -在展示日志详情信息的下面,还要展示其他人对此日志的回复 -若该回复存在主人回复,则也需要显示主人回复 添加日志:点击发表 ...
- 基于Javaweb的小项目(类似于qqzone) 8 —— 回复相关操作
功能描述 展示回复:点击日志列表中的某个日志标题,在展示该日志的详情信息下面,需要展示该日志的相关回复 添加回复:只需要输入回复内容 删除回复:在对应的回复中,鼠标经过该回复,则会出现删除图标,点击可 ...
- SpringBoot项目中集成第三方登录功能
SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...
- 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍
探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 2.项目介绍 2.1.项目背景 2.2.市场分析 2.3.目标用户 ...
- 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍
探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 1.功能介绍 1.1.功能列表 1.2.注册登录 1.3.交友 1 ...
- 【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能
文章目录 前言 一.微信小程序实现网页一键登录功能 1.旧版登录方法 2.新版登录方法 二.相关第三方包源码 前言 如果微信小程序要获取微信登录的用户信息,需要拿到code去后台换取用户信息,具体步骤 ...
最新文章
- jQuey基础思维导图梳理1
- linux time函数_Linux基础知识(三)
- AD20更改PCB 2D视图的背景环境颜色
- c++语言怎么实现字符串拼接,C++ string类和字符串的访问和拼接操作
- mysql常用数据操作之查
- java 双冒号_Java 双冒号::是什么操作符?
- 十六进制换算成二进制、八进制、十进制
- 【超全面】Python内置函数详解
- [小技巧1]Word或WPS文献引用、交叉引用方括号编号
- Html+css仿淘宝页面练习
- 没有互联网的济南,要怎么从冬天走向春天?
- MapReduce之week2 test 分区计算结余(练习)
- ios手机页面滑动卡顿问题
- linux-进程间通信
- 简单3步,在线完成gif动图制作
- 云平台与云主机选择的经验和建议
- 两个累加符号∑如何计算,以及如何用python实现两个∑累加运算 | markdown下latex公式对齐
- 仿PS3游戏《战神》连击动作解析
- 星冰乐java chips_揭秘 | 星巴克内部员工推荐隐藏菜单
- python如何横向输出_PYTHON小工具-竖排表格内容转横向输出