【晚安独角兽】:hello你好我是独角兽,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!
博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!
吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…
技术选型
springboot、mybatis、vue.js、jsp、html、css、mysql、jdk1.8
数据库表结构
14张
开发工具
idea或者eclipse、navicat
⭐功能
【角色】管理员、用户、医生
【前台功能】
注册、登录、首页、医学知识、医生信息、医药信息、新闻资讯、留言反馈、我的、跳转到后台
【后台功能】
登录、个人中心、用户管理、医生管理、医学知识管理、科室信息管理、医生信息管理、预约挂号管理、医嘱信息管理、药品信息管理、订单信息管理、留言板管理、系统管理(新闻资讯、轮播图管理)
项目演示截图:
1、前台首页
2、前台医学知识
3、前台医生信息
4、前台医生详情信息
5、前台登录
6、前台注册用户
7、前台预约医生
8、前台药品信息
9、前台药品详情
10、前台新闻资讯
11、前台留言反馈
12、前台个人中心
13、后台登录
14、后台用户管理
15、后台医生管理
16、后台医学知识管理
17、后台科室信息管理
18、后台医生信息管理
19、后台预约挂号管理
20、后台医嘱信息管理
21、后台药品信息管理
22、后台订单信息管理
23、后台留言板管理
24、后台新闻资讯
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored="true" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
<link rel="stylesheet" href="../../layui/css/layui.css">
<link rel="stylesheet" href="../../xznstatic/css/login.style.css">
</head>
<body>
<div id="app">
<div class="main">
<h1 v-text="projectName"></h1>
<div class="login-form">
<h2>登 录</h2>
<div class="agileits-top">
<form class="layui-form">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left: 0;">
<input type="text" name="username" required lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input" lay-ignore>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left: 0;">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input" lay-ignore>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" style="text-align: left;margin-left: 0;">
<input v-if="item.tableName!='users'" v-for="(item,index) in menu" v-bind:key="index" type="radio" name="role" :value="item.tableName" :title="item.roleName">
</div>
</div>
<div class="layui-form-item" style="margin-bottom: 0;">
<div class="layui-input-block" style="margin-left: 0;">
<button class="layui-btn btn-submit layui-btn-fluid layui-btn-primary" lay-submit lay-filter="login">登录</button>
</div>
</div>
<div class="wthree-text" style="margin-top: 1em">
<ul>
<li><a style="margin-right: 10px;" v-if="item.tableName!='users'" v-for="(item,index) in menu" v-bind:key="index" :href="'javascript:registerClick(''+item.tableName+'')'">注册{{item.roleName.replace('注册','')}}</a></li>
</ul>
<div class="clear"></div>
</div>
</form>
</div>
</div>
</div>
</div>
<script src="../../layui/layui.js"></script>
<script src="../../js/vue.js"></script>
<!-- 组件配置信息 -->
<script src="../../js/config.js"></script>
<!-- 扩展插件配置信息 -->
<script src="../../modules/config.js"></script>
<!-- 工具方法 -->
<script src="../../js/utils.js"></script>
<script>
var vue = new Vue({
el: '#app',
data: {
projectName: projectName,
menu: menu
},
methods: {
jump(url) {
jump(url)
}
}
});
layui.use(['layer', 'element', 'carousel', 'form', 'http', 'jquery'], function() {
var layer = layui.layer;
var element = layui.element;
var carousel = layui.carousel;
var form = layui.form;
var http = layui.http;
var jquery = layui.jquery;
// 登录
form.on('submit(login)', function(data) {
data = data.field;
if (!data.role) {
layer.msg('请选择登录用户类型', {
time: 2000,
icon: 5
});
return false;
}
http.request(data.role + '/login', 'get', data, function(res) {
layer.msg('登录成功', {
time: 2000,
icon: 6
});
// 登录凭证
localStorage.setItem('Token', res.token);
localStorage.setItem('role', jquery('input[name="role"]:checked').attr('title'));
// 当前登录用户角色
localStorage.setItem('userTable', data.role);
localStorage.setItem('sessionTable', data.role);
// 用户名称
localStorage.setItem('adminName', data.username);
http.request(data.role + '/session', 'get', {}, function(res) {
// 用户id
localStorage.setItem('userid', res.data.id);
// 路径访问设置
window.location.href = '../../index.jsp';
})
});
return false
});
});
/**
* 跳转登录
* @param {Object} tablename
*/
function registerClick(tablename) {
window.location.href = '../' + tablename + '/register.jsp?tablename=' + tablename;
}
</script>
</body>
</html>
2、登录Controller
package com.controller;
/**
* 用户
* 后端接口
* @author 计算机编程-吉哥
* @email
* @date 2022-09-28 11:23:12
*/
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
@Autowired
private YonghuService yonghuService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
if(user!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 退出
*/
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
YonghuEntity user = yonghuService.selectById(id);
return R.ok().put("data", user);
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
if(user==null) {
return R.error("账号不存在");
}
user.setMima("123456");
yonghuService.updateById(user);
return R.ok("密码已重置为:123456");
}
}
3、登录Service
/**
* 用户
*
* @author 计算机编程-吉哥
* @email
* @date 2022-09-28 11:23:12
*/
public interface YonghuService extends IService<YonghuEntity> {
PageUtils queryPage(Map<String, Object> params);
List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper);
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper);
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<YonghuEntity> wrapper);
}
4、登录serviceImpl
/**
* @author 计算机编程-吉哥
**/
@Service("yonghuService")
public class YonghuServiceImpl extends ServiceImpl<YonghuDao, YonghuEntity> implements YonghuService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<YonghuEntity> page = this.selectPage(
new Query<YonghuEntity>(params).getPage(),
new EntityWrapper<YonghuEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<YonghuEntity> wrapper) {
Page<YonghuView> page =new Query<YonghuView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<YonghuVO> selectListVO(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public YonghuVO selectVO(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<YonghuView> selectListView(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public YonghuView selectView(Wrapper<YonghuEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
5、登录Dao
/**
* 用户
*
* @author 计算机编程-吉哥
* @email
* @date 2022-09-29 11:23:12
*/
public interface YonghuDao extends BaseMapper<YonghuEntity> {
List<YonghuVO> selectListVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
YonghuVO selectVO(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<YonghuView> selectListView(@Param("ew") Wrapper<YonghuEntity> wrapper);
List<YonghuView> selectListView(Pagination page,@Param("ew") Wrapper<YonghuEntity> wrapper);
YonghuView selectView(@Param("ew") Wrapper<YonghuEntity> wrapper);
}
6、登录Dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.YonghuDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.entity.YonghuEntity" id="yonghuMap">
<result property="yonghuming" column="yonghuming"/>
<result property="mima" column="mima"/>
<result property="yonghuxingming" column="yonghuxingming"/>
<result property="touxiang" column="touxiang"/>
<result property="xingbie" column="xingbie"/>
<result property="shoujihaoma" column="shoujihaoma"/>
</resultMap>
<select id="selectListVO"
resultType="com.entity.vo.YonghuVO" >
SELECT * FROM yonghu yonghu
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectVO"
resultType="com.entity.vo.YonghuVO" >
SELECT yonghu.* FROM yonghu yonghu
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectListView"
resultType="com.entity.view.YonghuView" >
SELECT yonghu.* FROM yonghu yonghu
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectView"
resultType="com.entity.view.YonghuView" >
SELECT * FROM yonghu yonghu <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper>
四、专栏介绍
☕️最近开设的专栏整理了很多优秀Java项目,详细的分享了设计思路,计算机毕业生可以参考学习数据库设计,论文写作,项目优化等,每一篇博文均整理了相关系统可以设计的具体模块,以及详细的业务讲解,祝大家学业进步!
五、项目优化升级
希望有基础的学生可以自己做出更优质的项目
开发建议: 尽量基于SpringBoot框架搭建项目,因为潮流,简单,方便,易用!
数据库设计: 参考已有的类似项目设计数据库,深入挖掘自己选题要解决什么问题,即设计什么数据表
项目升级: 前端的话有条件使用vue +element等潮流的前端框架,前后端分离开发; 后台引入中间件 如消息队列+缓存Redis , 微信支付(根据业务定),Jwt单点登录,爬虫,算法等!
希望我们未来更高处见……
相关知识
【2025】springboot宠物咖小程序(源码+文档+调试+答疑)
基于nodejs+vue宠物医院信息管理[程序+论文+开题]
jsp宠物医院信息管理系统17455(程序+源码+数据库+调试部署+开发环境)
【开题报告】基于Springboot+vue基于微信小程序的宠物医院宠物健康管理系统(程序+源码+论文) 计算机毕业设计
基于Node.js+vue基于SpringBoot的宠物门诊系统(开题+程序+论文) 计算机毕业设计
【计算机优质毕设项目】基于SpringBoot的学校运动会信息管理系统
基于Node.js+vue基于springboot的宠物医院管理(开题+程序+论文) 计算机毕业设计
【计算机专业毕设最新Java必过毕设选题2025】基于springboot的宠物医院预约管理系统(源码+万字LW)
基于javaweb+jsp的宠物领养信息管理系统(带报告文档)
基于SpringBoot开发的宠物医院预约管理系统
网址: 基于SpringBoot宠物医院信息管理系统【安装调试·代码讲解·文档报告】 https://m.mcbbbk.com/newsview420493.html
上一篇: java计算机毕业设计宠物猫管理 |
下一篇: 深圳市卡拉宠物医院管理有限公司 |