大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路,向着优秀程序员前行!
🍅更多优质项目👇🏻👇🏻可点击下方获取🍅文章底部或评论区获取🍅
Java项目精品实战案例《100套》
文章目录
- 项目介绍
- 一、选题背景意义
- 1.项目背景
- 2.研究意义
- 3.技术栈
- 二、运行效果
- 1.登录注册
- 2.首页
- 3.住户管理
- 4.注入出入登记
- 5.访客模块
- 6.用户管理信息
- 7.其他模块
- 三、部分代码实现
- 1.用户信息判断
- 2.登录拦截器
- 3.基础的增删改查
- 总结
📣 有源码 查看源码
项目介绍
针对疫情防控管理系统提出实现方案,按照软件开发的一般流程进行前期的调研和分析确定软件是否能够正常实现、技术是否可行和系统功能模块的设计开发,最后确定了使用的技术和实现系统的方案。
框架属于一种程序开发者实现的功能集合,可以帮助软件开发者快速构建软件层次架构和复用功能的一款工具,本平台框架使用了开源框架,具有比较好的开发优势,可以帮助软件开发者快速构建基本的程序开发框架出来,通过调用开源框架开源帮助程序开发者减少开发难度,提升了疫情防控管理系统的安全和稳定性。
一、选题背景意义
1.项目背景
互联网发展到现在已经有七十多年的时间了,随着信息技术的不断发展,互联网会涉及到人们生活的各个方面当中,互联网时代来临的时候可以推动各个行业的发展,给社会的经济领域添加了不少活力。
在当今的时候,很多行业都离不开互联网,尤其是在互联网时代下产生的疫情防控管理系统更是受到人们的欢迎。疫情防控管理系统的发展已有不少的时间,具有不同的种类。疫情防控管理系统跟疫情防控业务息息相关,不少用户想要定制特定的系统功能,因此市场具有广阔的前景。疫情防控管理系统如此火爆有以下原因[1]。
(1)相比于较传统的工作模式,疫情防控管理系统能够提高管理员管理的效率和降低出错的效率。疫情防控管理系统功能经过编译运行能够大大降低管理员管理出错的概率,管理员管理系统的时候如果发生了错误的情况系统会给出相应的提示。
(2)通过疫情防控管理系统管理能够降低成本,可以节省大量的时间成本和人力资源,管理员能够提高管控能力。
2.研究意义
随着现代科学技术的发展,互联网产品已经涉及到生活的很多方面,很多公司也在加快投入力度。然而在和防控工作人员沟通过程当中发现居民打卡的工作模式还处于人工管理的模式,这不能够充分地利用互联网技术提高工作效率。
建立规范化的流程能够管理居民健康打卡,而目前管理居民健康打卡只能依赖于管理员手工进行管理,科技发展能够为我们的生活提供服务,现在较多的场景都需要使用信息化管理。在我们的平时工作的时候,可以切实感受到科学技术带来的解决方式。在我们平时生活的时候也有较多的场景需要技术的辅助
3.技术栈
开发系统:Windows10
架构模式:MVC/前后端分离
JDK版本:Java JDK1.8
开发工具:IDEA
数据库版本: mysql8.0
数据库可视化工具: navicat
服务器:SpringBoot自带 apache tomcat
主要技术:Java,Springboot,mybatis,mysql,jquery,html,vue
二、运行效果
1.登录注册
2.首页
3.住户管理
4.注入出入登记
5.访客模块
6.用户管理信息
7.其他模块
三、部分代码实现
1.用户信息判断
@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
final UserMapper userMapper;
final CodeMapper codeMapper;
final UserRoleMapper userRoleMapper;
public UserServiceImpl(UserRoleMapper userRoleMapper,
CodeMapper codeMapper,
UserMapper userMapper
){
this.userMapper=userMapper;
this.codeMapper = codeMapper;
this.userRoleMapper = userRoleMapper;
}
@Override
public void reg(User user) throws Exception {
//判断注册码信息
Code code = codeMapper.selectBycodeText(user.getCodeText());
User byAccount = userMapper.findByAccount(user.getAccount());
if ( byAccount != null){
throw new Exception("该账户名已被注册,请更换账户名字");
}
if(!RegularExpression.decideAccounNumber(user.getAccount())){
throw new Exception("匹配帐号不合法合法(必须是字母开头,允许5-16字节,允许字母数字下划线)");
}
if(!RegularExpression.decideAccounNumberPassword(user.getPassword())){
throw new Exception("匹配帐号密码不合法(必须5-16字节,允许字母数字下划线)");
}
if(!RegularExpression.decidePhone(user.getUserPhone())){
throw new Exception("手机号码第一个数必须为1,[3,5,7,8]:手机号码第二个数必须为:括号内数字");
}
if(!RegularExpression.decideRealName(user.getUserName())){
throw new Exception("匹配真实姓名不合法(只允许2-6汉字)");
}
if (code == null ){
throw new Exception("注册码不能为空或者注册码信息错误,请联系管理员");
}
if (code.getStatus() == 0){
//可以用
//铭文密码 + 盐 + 散列
Md5Hash md5Hash = new Md5Hash(user.getPassword(), user.getCodeText(),1024);
user.setPassword(md5Hash.toHex());
code.setStatus(1);
userMapper.save(user);
//添加角色和用户的关系
userRoleMapper.add(user.getUserId(),code.getRoleId());
//xuy
codeMapper.updateByUser(user);
}else if (code.getStatus() == 1){
//不可用
throw new Exception("注册码不可用或者已经被注册,请联系管理员");
}
}
@Override
public User findByAccount(String account) {
User user = userMapper.findByAccount(account);
return user;
}
@Override
public User findRolesByAccount(String account) {
return userMapper.findRolesByAccount(account);
}
@Override
public List<Menu> findMenuByRoleId(Integer roleId) {
return userMapper.findMenuByRoleId(roleId);
}
@Override
public User removeUpdateByUserid(Integer userId) {
User user = userMapper.findByUserId(userId);
if (user.getStatus() == ConstantsUtils.CODE_STATUS_0){
user.setStatus(ConstantsUtils.CODE_STATUS_1);
}
else{
user.setStatus(ConstantsUtils.CODE_STATUS_0);
}
userMapper.deleteUpdate(user);
return user;
}
@Override
public boolean deleteById(Integer id) throws Exception {
//删除用户
int i = userMapper.deleteById(id);
if(i<0){
throw new Exception("删除失败");
}
//删除关系
int a = userRoleMapper.deleteByuserId(id);
if(a<0){
throw new Exception("删除失败");
}
return true;
}
@Override
public List<User> queryAllUser(String account, String userName, String userPhone) {
List<User> collect = this.userMapper.selectAll(account,userName,userPhone).stream()
.filter(u -> account == null || account == "" || u.getAccount().equals(account))
.filter(u -> userName == null || userName == "" || u.getUserName().equals(userName))
.filter(u -> userPhone == null || userPhone == "" || u.getUserPhone().equals(userPhone))
.collect(Collectors.toList());
return collect;
}
@Override
public int resetPassword(String account) {
User byAccount = userMapper.findByAccount(account);
//铭文密码 + 盐 + 散列
Md5Hash md5Hash = new Md5Hash(ConstantsUtils.CODE_STATUS_666666, byAccount.getCodeText(),1024);
// byAccount.setPassword(md5Hash.toHex());
// String password = byAccount.getPassword();
return userMapper.updatePasswordByAccount(account,md5Hash.toHex());
}
@Override
public User findUserByAccount(String account) {
return userMapper.findUserByAccount(account);
}
@Override
public User editUser(User user) {
userMapper.updateUser(user);
return userMapper.findByAccount(user.getAccount());
}
@Override
public User editPwd(User user) throws Exception {
//判断密码格式
if(!RegularExpression.decideAccounNumberPassword(user.getPassword())){
throw new Exception("匹配帐号密码不合法(必须5-16字节,允许字母数字下划线)");
}
if(!RegularExpression.decideAccounNumberPassword(user.getNewPassword())){
throw new Exception("匹配帐号密码不合法(必须5-16字节,允许字母数字下划线)");
}
if(!RegularExpression.decideAccounNumberPassword(user.getConfirmPassword())){
throw new Exception("匹配帐号密码不合法(必须5-16字节,允许字母数字下划线)");
}
User byAccount = userMapper.findByAccount(user.getAccount());
if (!user.getNewPassword().equals(user.getConfirmPassword())){
throw new Exception("新密码和确认密码不一致,请重新输入");
}
//判断旧密码是否真确正确
Md5Hash md5Hash = new Md5Hash(user.getPassword(), byAccount.getCodeText(),1024);
String oldPassword = md5Hash.toHex();
if(!byAccount.getPassword().equals(oldPassword)){
throw new Exception("旧密码输入错误,请重新输入)");
}
//修改密码
Md5Hash md5Hash2 = new Md5Hash(user.getNewPassword(), byAccount.getCodeText(),1024);
userMapper.updatePasswordByAccount(user.getAccount(), md5Hash2.toHex());
return byAccount;
}
}
2.登录拦截器
public class JWTInterceptor implements HandlerInterceptor {
@Autowired
private UserService userService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 1获取客户端传递过来的token
String strToken = request.getHeader("token");
if (strToken == null || strToken.length() == 0) {
// 用户没有登录
setResponse(response, "用户未登录!!请登陆后再进行操作!!");
// 拦截
return false;
}
// 2解密Token,时间有没有过期
Token token = TokenUtil.parseToken(strToken);
if (token.getStatus() == 1) {
setResponse(response, "登录已过期!!请重新登陆!!");
return false;
}
// 3是不是一个有效的用户
// String account = token.getCode();
// User user = userService.findByAccount(account);
// if (user == null) {
// setResponse(response, "当前的用户不是一个有效的用户,请重新登陆!!");
// return false;
// }
// // 4禁用
// if (user.getStatus() == 1) {
// setResponse(response, "用户已被禁用,请联系管理员");
// return false;
// }
// 5刷新token 重置有效时间
strToken = TokenUtil.createToken(token.getCode());
response.setHeader("token", strToken);
return true;
}
/**
* 功能描述: 返回json数据
* @param: [response, msg]
* @return: void
* @auther: wanzg
* @date: 2022-2-15 9:26
*/
private void setResponse(HttpServletResponse response, String msg) throws IOException {
APIResult apiResult = APIResult.unauthorized(msg);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(apiResult);
response.setContentType("application/json; charset=utf-8");
response.getWriter().write(json);
}
}
3.基础的增删改查
<mapper namespace="com.wangzg.community.mapper.UserMapper">
<insert id="save" parameterType="com.wangzg.community.po.User" useGeneratedKeys="true" keyProperty="userId">
insert into tb_user (user_id,account,password,user_name,user_phone)
values (#{userId},#{account},#{password},#{userName},#{userPhone})
</insert>
<select id="findByAccount" parameterType="string" resultType="com.wangzg.community.po.User">
select tb_user.*,tb_code.code_text from tb_user,tb_code
where tb_code.user_id = tb_user.user_id
and tb_user.account = #{account}
</select>
<select id="findUserByAccount" resultMap="userMap">
select u.*,r.role_id,r.role_name
from tb_user u LEFT JOIN tb_user_role ur
on u.user_id = ur.user_id
LEFT JOIN tb_role r
on ur.role_id = r.role_id
WHERE u.account = #{account}
</select>
<resultMap id="userMap" type="com.wangzg.community.po.User">
<id column="user_id" property="userId"></id>
<result column="account" property="account"></result>
<result column="password" property="password"></result>
<result column="user_name" property="userName"></result>
<result column="user_phone" property="userPhone"></result>
<result column="user_email" property="userEmail"></result>
<result column="user_address" property="userAddress"></result>
<result column="status" property="status"></result>
<result column="code_text" property="codeText"></result>
<result column="head" property="head"></result>
<result column="role_id" property="roleId"></result>
<result column="role_name" property="roleName"></result>
</resultMap>
<select id="findRolesByAccount" parameterType="String" resultMap="userMap">
select u.user_id, u.account,r.role_id,r.role_name,u.head
from tb_user u LEFT JOIN tb_user_role ur
on u.user_id = ur.user_id
LEFT JOIN tb_role r
on ur.role_id = r.role_id
WHERE u.account = #{account}
</select>
<select id="findMenuByRoleId" resultType="com.wangzg.community.po.Menu">
SELECT tb_menu.*,tb_role.role_name from tb_menu
LEFT JOIN tb_role_menu
on tb_menu.menu_id = tb_role_menu.menu_id
LEFT JOIN tb_role
on tb_role_menu.role_id = tb_role.role_id
WHERE tb_role.role_id = #{roleId}
</select>
<select id="selectAll" resultMap="userMap">
select tb_user.*,tb_role.* from tb_user LEFT JOIN tb_user_role
on tb_user.user_id = tb_user_role.user_id
LEFT JOIN tb_role on
tb_role.role_id = tb_user_role.role_id
<where>
<if test="account != null and account != '' "> account = #{account}</if>
<if test="userName != null and userName != ''"> and user_name = #{userName}</if>
<if test="userPhone != null and userPhone != '' "> and user_phone = #{userPhone}</if>
</where>
</select>
<update id="deleteUpdate" >
UPDATE tb_user set `status` = #{status} where user_id = #{userId}
</update>
<select id="findByUserId" resultMap="userMap">
select * from tb_user WHERE user_id = #{userId}
</select>
<delete id="deleteById">
DELETE FROM tb_user where user_id = #{userId}
</delete>
<resultMap id="userMapMenu" type="com.wangzg.community.po.User">
<id column="user_id" property="userId"></id>
<result column="account" property="account"></result>
<result column="password" property="password"></result>
<result column="user_name" property="userName"></result>
<result column="user_phone" property="userPhone"></result>
<result column="user_email" property="userEmail"></result>
<result column="user_address" property="userAddress"></result>
<result column="status" property="status"></result>
<result column="code_text" property="codeText"></result>
<result column="head" property="head"></result>
<collection property="menus" javaType="list" ofType="com.wangzg.community.po.Menu">
<id column="menu_id" property="menuId"></id>
<result column="name" property="name"></result>
<result column="pid" property="pid"></result>
<result column="path" property="path"></result>
<result column="icon" property="icon"></result>
<result column="page_path" property="pagePath"></result>
<result column="state" property="state"></result>
</collection>
</resultMap>
<select id="findByAccountMenus" resultMap="userMapMenu">
SELECT *
from tb_menu
LEFT JOIN tb_role_menu
on tb_menu.menu_id = tb_role_menu.menu_id
LEFT JOIN tb_role
on tb_role_menu.role_id = tb_role.role_id
LEFT JOIN tb_user_role
on tb_user_role.role_id = tb_role_menu.role_id
LEFT JOIN tb_user
on tb_user.user_id = tb_user_role.user_id
where tb_user.account = #{account}
</select>
<update id="updatePasswordByAccount">
UPDATE tb_user
set `password` = #{password}
where account = #{account}
</update>
<update id="updateUser">
update tb_user
<set>
<if test="userName != null and userName != ''">
user_name = #{userName},
</if>
<if test="userPhone != null and userPhone != ''">
user_phone = #{userPhone},
</if>
<if test="head != null and head!= ''">
head = #{head},
</if>
<if test="userEmail != null and userEmail != ''">
user_email =#{userEmail},
</if>
<if test="userAddress != null and userAddress != ''">
user_address = #{userAddress}
</if>
</set>
where
account = #{account}
</update>
</mapper>
📝分享的所有Java项目源码均包含(前端+后台+数据库),可做毕业设计或课程设计,欢迎留言分享问题,交流经验
🍅更多优质项目👇🏻👇🏻可点击下方获取🍅文章底部或评论区获取🍅
Java项目精品实战案例《100套》
总结
📣 有源码 查看源码