Java SSM 毕设过程记录笔记
考勤信息展示-》注册功能-》添加课程-》完善其他功能即可!!!
mybatis连接mysql8.0
MySQL8.0数据库配置变更:
1,jdbc_driver=com.mysql.cj.jdbc.Driver,原先的com.mysql.cj.jdbc.Driver已不推荐使用;
2,jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
pom数据库驱动程序用最新的8.0.11:
mysql
mysql-connector-java
8.0.11
【Tomcat】Tomcat部署Web应用时出现异常
查如下的页面:
SSM框架使用过程中的中文乱码问题
在tomcat Server中设置 VM options , 值为 -Dfile.encoding=UTF-8
https://blog.csdn.net/win_best/article/details/79941840
https://www.cnblogs.com/xianyao/p/11006220.html
JSONObject的问题
原先用的是 org/json 库
,但是像下面这样写前端一直收不到后端穿过去的数据。
@Controller
public class FaceSignInController {
@RequestMapping("/FaceSignIn")
public void FaceSignIn(HttpServletResponse response) throws Exception {
System.out.println("旅法 v 开放");
JSONObject result = new JSONObject();
result.put("flag", true);
result.put("msg", "hello world !!! ");
System.out.println(result);
response.setContentType("text/json");
ResponseUtil.write(response, result);
}
}
后来改成了 com.alibaba.fastjson.JSONObject
后成功运行。
@RequestBody Map<String, String> map无法使用的问题
报错:HTTP 415 错误 – 不支持的媒体类型(Unsupported media type)
解决:pom.xml添加jackson包引用;
<!-- jackson 依赖 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
参考:https://blog.csdn.net/qq_27379721/article/details/86616603
https://blog.csdn.net/kingtracy8/article/details/78076024?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
shiro
AuthenticatingRealm-------->用于认证方法的Realm
AuthorizingRealm--------->用于授权和认证的realm一般使用这个
AuthorizingRealm继承于AuthenticatingRealm但是没有实现父类的doGetAuthenticationInfo方法
设计问题
1.shiro 的doGetAuthenticationInfo无法传入其他参数的问题
数据库设计如下时:
前端传入登录时用户选择的角色,直接在对应的表中进行查询即可。但是shirod的currentUser.login(token) 只传入username和password。无法传入其他参数。
如何解决:
Mybatis (ParameterType) 如何传递多个不同类型的参数
https://www.jianshu.com/p/d977eaadd1ed
如何将前端页面传过来的数据,对应到自己写的类中?
shiro 标签
https://www.cnblogs.com/roxy/p/7688092.html
(在我的实验课考勤管理系统中,一个用户不可能有两个角色!)
mysql 时间选择:https://www.cnblogs.com/Jie-Jack/p/3793304.html
WEB-INF下的jsp不能访问的问题
当浏览器访问Result.jsp时,无法正常显示,通过了解才得知,原来Tomcat WEB-INF目录下的文件,浏览器一般无法直接方法,只能通过重定向后才可以访问,如果需要直接访问,可以放在和WEB-INF同级目录下。
https://blog.csdn.net/w522301629/article/details/82687076
mybatis 如何自己构造表名进行查询?
mybatis传递参数有两种方式
#{param} 这种传递的是带双引号的变量
${param} 这种传滴的是字面量
https://blog.csdn.net/weixin_34184561/article/details/88001678
MYSQL选型记录
使用varbinary
还是varchar
???
MySql 字段类型对应 Java 格式化类型
https://www.cnblogs.com/loveer/p/11604423.html
尽量前后端分离。也就是说不使用前后缀,视图等等。
对于签到的信息而言,该系统不显示具体的签到时间。但是在签到端会有非常详细的提示。如:签到成功,但是迟到,已经超过签到时间等等。
前端无法进行前进与后退的功能没有实现。
多学期的功能
(半小时之前打卡为成功,之后十分钟打卡为迟到)
遗留问题: Java 读取mysql时间timestamp差8小时问题
https://blog.csdn.net/babybabyup/article/details/97802707
https://blog.csdn.net/as849167276/article/details/88198175
项目组织参考:阿里巴巴Java开发手册
如何实验参数校验:Hibernate-Validator
https://blog.csdn.net/fred_lzy/article/details/81099699
那个学生属于那个班级,那个专业是规定好了的!!!!
老师有可能跨专业吗?答案:是可能的!!!
删除一门课程就要删除上课的所有学生,以及其他信息
https://www.runoob.com/angularjs/angularjs-intro.html
我们建议把脚本放在 <body>
元素的底部。
这会提高网页加载速度,因为 HTML 加载不受制于脚本加载
先destory
,然后再绘制自己需要的table
大问题的解决:实现了页面的点击进入,然后重新加载页面的功能。耗时:几乎一周,解决方法:
load(url,data,function(response,status,xhr))
https://www.w3school.com.cn/jquery/ajax_load.asp
jquery.load()函数 在JSP中局部加载刷新页面时的参数传递及获取
现在是4月13号 半夜12:35 此问题终于解决。
// mybatis 总的异常处理
import org.apache.ibatis.exceptions.PersistenceException;
https://www.cnblogs.com/z-qinfeng/p/11489323.html
ajaxFileUpload 总是出现500(POST)的错误,参照网上很多方法都无法解决!
增加 handleError函数也无法解决。可能是因为太久了。转战FormData+ajax实现。
不过我一直忽略的一个问题就是:1、springmvc项目想要上传文件,需要使用multipart方
式,所以在spring-mvc.xml配置文件中需要增加multipart相关配置,代码如下
<!-- 配置 MultipartResolver -->
<!-- springmvc项目想要上传文件,需要使用multipart方式,所以在spring-mvc.xml配置文件中需要增加multipart相关配置-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="4095000"/>
</bean>
Mybatis foreach 如果有单个参数的话,需要构造Map去传参。
Mybatis如果数据库里面之前就有一些数据的话,插入会有问题。正常处理!!!?
https://my.oschina.net/zjllovecode/blog/1818716
BootstrapTable 分页属性(sidePagination)设置错误 导致数据无法渲染
https://blog.csdn.net/xueshr/article/details/89402393
如何选择哪一端分页的问题??
建议:数据量较小的情况可以选择客户端分页,数据量庞大的话建议还是选择服务端分页。
决定:统一采用客户端分页。
最后优化:参考阿里巴巴JAVA开发手册进行规范化
我应该看的是 JAVA SDK文档
JAVA枚举类型的使用
一个专业一个 group_id。更加利于检索人脸。!!
一直忘了性别这个元素!!待日后添加!!
处理 Excel 文件解析工具:https://github.com/alibaba/easyexcel
如何实现学号增加
FormData文件上传踩坑记录
上传一个test1文件可以,但是上传test2文件就不可以。检查MultipartResolver
的配置。
我遇到的是:<property name="maxUploadSize" value="10485760"/>
超出限制!!!
出现获取不到的情况!!!!先留下以后解决
彻底完善考勤端----
课程可能会有很多很多。但是自己上的课程总是有限的!!!所以
考勤端的要求是:简洁,能够实现迅速考勤打卡。尽量保证用户少输入信息。
目前就先只输入所需要考勤的课程即可。学生的其他信息通过人脸照片获得。如果真的要实施这个系统的话,应该是要有一个课程下发系统才行。只要输入网址,拍照签到即可。
实时监控input框,实现输入框与下拉框联动
生成的 id 有问题。真的是让我很奇怪的一点。
实验课也应该分是否是周末!!
前半小时,后十分钟
如何修改 String 的值。
String、StringBuffer和StringBuilder的区别
处理好异常以及500,404页面的处理!!!
拓展功能:请假功能!!!
要不要做自己更新自己人脸照片的功能???答案:不做。
需不需要做自己查看自己人脸照片的功能呐???答案:我也不确定!!!
选择考勤状态时,bootstrap-table不变化显示。解决:和字段不排序一样,取消服务端分页参数即可。
版本更新之后:侧边栏点击不展开了!!!!!解决:回退到原来的版本。。
如何实现请假功能呐:事先请假,老师批准,完成标志位设置
申诉,撤回申诉,老师批准
老师的考勤信息查看功能:一切实现站在老师的角度去看。
考勤统计应该以天为单位了!!!
考勤记录展示一周的即可。假如一个老师交两门课。交5个班,不会跨专业吧?
答案:是会的。
那么一天就是:52 条记录。一周就是:105= 50 条记录。
如何知道一个专业有那几个班级呐?
major_id ,class_id
1,1
1,2
1,3
1,4
1,5
这样就有5个班级的意思。
默认过去一周的数据,可选择过去一个月,所有的数据。
MyBatis 大于小于符号需要进行转义。
https://blog.csdn.net/w359677142/article/details/94554753
https://blog.csdn.net/qq_41570658/article/details/90713145
对于老师查看考勤的页面不提供查看全部考勤情况的数据,因为可能会太多。之后如果有需求的话,我再加上即可!!!
如何解决的这个问题:
会出现全是0的情况吗?答案:不会。因为一般该班级没有人就返回了空数据。不会显示出来!!!
添加一个学生进入一门课的逻辑:course_student ->sign_case 初始化。删除,导入也同理!!
有没有可能只有一个班的一个人上某门课程???
新增一名学生就会增加一条考勤记录(course_id,student_id,bitmap)。查看考勤的时候先会去根据major_id与class_id去查出这个班级所有的学生,然后就会得到他们的student_id。然后会去查考勤记录。那么如果发生一个班的一个人上某门课程的情况,其他人的 student_id 就是会查不到任何数据,这时候只需要不显示就行了!!!
新功能:(1)请假 (2)互相聊天功能(关于请假)
mybatis SQL语句返回值
详解mybatis的create,retrieve,delete,update返回值。
首先就不应该出现这种Course_student上有记录,而sign_case上没有记录的情况。
开发测试阶段的数据规模:
student: 30
teacher:
admin: 1
Bug1
明明焊接实验拥有很多专业的很多学生,但是确没有他们的考勤信息。
最应该做分页和添加多个选项的页面。
课时可能会提前确定,但是上课时间表可能不太会立马就确定好。 后期再提供修改即可。
Bootstrap中的datetimepicker用法总结
# Bootstrap中的datetimepicker用法总结
java中String转Date与Date转String
# java中String转Date与Date转String
Bootstrap表单验证插件bootstrapValidator使用方法整理
插件介绍
MyBatis insert实体返回主键
这里查找课程时间表的时候,让mysql自己去查前半个小时,后十分钟的话,会出现多个结果吗?
答案是:不会,除非课程安排间隔少于半个小时!!!
Mysql中将日期转化为毫秒
JAVA List如何去重?
https://blog.csdn.net/qq3434569/article/details/100520524
对于在@transactional注解起作用的前提下判断事务是否成功的解决方式
https://blog.csdn.net/wufeiha/article/details/80961965
日期格式统一采用 String 的方式去展示。如果需要进行转化即可。