1.java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
mysql-connector-java-5.1.37-bin.jar已导入,还出现这种情况……
原来是我把lib目录放到了web目录下 (错误)
web项目必须把lib目录放在web/WEB-INF目录下。(正确)
2.页面显示不出数据库的数据
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
然后愣是没取出数据。
经老师解答,原来是登录成功后,是跳转到服务器对应的路径,而不是直接跳转页面。跳转到服务器对应的路径后,服务器查询的结果再转发到页面。
然后就成功地显示数据了!
3.获取当前登录的用户名+积分累加
用户名和积分是怎么显示的呢?
然后怎么知道当前登录的用户名并给他积分充值呢?
遇到的问题及解决方法:
-
登录后显示的积分为0,和数据中的积分不一致
int oldPoint = userDao.findPoint(username).getPoint(); session.setAttribute("point",oldPoint);
-
数据库中更新不了积分,但是SQL语句没错,原来是我并没有获取当前用户的用户名
String username = (String) session.getAttribute("username");
-
给用户充值积分,数据库中的积分更新了,但是浏览器页面上的积分显示的是充值后的积分,并没有累加积分
//获取之前的积分 int oldPoint = userDao.findPoint(username).getPoint(); //充值后的积分 int allPoint = Integer.parseInt(point)+oldPoint; //向数据库中更新总积分 userDao.updatePoint(username,allPoint); //更新当前页面显示的积分 session.setAttribute("point",allPoint);
4.重定向时,request中的数据会丢失
虽然使用转发后,会有相应的提示。但是登陆成功跳转到首页,提示语为null;而且充值积分时,提示语为null。
这时就想到给登陆的Servlet和充值积分的Servlet,设置提示语为空,但是结果还是null。
然后又将request改为session,登陆成功和积分充值时,提示语就为空了。成功了!
效果图:
5.JavaWeb之删除
在列表的删除那里,发送一个"deleteStudent?sno=$ {stu.sno}“的请求,映射到DeleteStudentServlet类中,该类根据URL请求里面的参数sno获取到该学生的sno,通过studentService.deleteStudent(sno)删除数据库中的该学生的信息,最后重定向到"/gotostudentlist"请求中,通过该请求回到学生的列表页面。
6.JavaWeb之修改
在列表的修改那里,发送一个"findStudentBySno?sno=$ {stu.sno}“的请求,映射到FindStudentBySnoServlet类中,该类根据URL请求里面的参数sno获取到该学生的sno,然后根据sno查找到该学生的全部信息,再将查询到的数据设置到request中,进行页面的转发,让studentUpdate.jsp展示查到的数据。studentUpdate.jsp页面中是用EL表达式获取到request设置的值,比如获取学号${student.sno},这时输入框就能保留学生的信息。然后我们可以在原信息的基础上进行修改,修改完毕提交表单,请求的地址是"updateStudent”,映射到UpdateStudentServlet类,该类能获取修改后输入框的值,然后创建了student对象,通过studentService.updateStudent(student)修改数据库中的数据,最后重定向到"/gotostudentlist"请求中,通过该请求回到学生的列表页面。
7.JavaWeb项目引入jQuery无效,报404
原来是我把js包放到了web/WEB-INF目录下 (错误)
静态资源(css/js/img)应放到web目录下。(正确)
8.输入框为空时不能提交并给出提示&&msg文字不见了
msg里的文字显示不出是因为颜色问题,改一下颜色就行了。
9.关于提交时输入项判断
当电话和身份证都正确时,才能提交。
否则只要一个不对,就不能提交,还要给出相应的提示。
原始:
修改后:
但发现录入成功后竟然没有提示???
然后我把上面两张图截下来放到画图工具中,经过短暂分析,诶,有了。
然后就有了下面一张图片:
经过这次小小的功能完善,发现分析能力很重要,别盲目不思考地敲代码。
有时候做不出就停下来,重整旗鼓,认真分析。适当停下来是好的,但别像这次一样,做了好久做不出来就产生逃避心理,犯拖延,一直拖了2个星期,才回头做。
10.视图解析器配置jsp文件的路径前缀和后缀问题
11.在用Mybatis,新增数据为null
然后我把enctype="multipart/form-data"删掉后,就可以啦。
12.在用Mybatis,数据的增删改提交事务后,数据库的数据没有改变
如果把表的引擎改为MyISAM,就不用担心事务问题,增删改不提交事务同样可以修改数据库的数据。
factory.openSession(true);默认为false,我修改为true,竟然可以了诶。
发现虽然是成功了,但是日志里没有DEBUG [main] - Committing JDBC Connection。不清楚为什么没有。
13.关于静态资源访问问题
如果是*.do的话,就不用考虑静态资源访问的问题了,因为可以访问呀。
但是从*.do修改为/后,就不能访问静态资源了。
有两种方法可以解决:
方法一:
在springmvc.xml中添加:
方法二:
在springmvc.xml中添加:
location:表示静态资源所在目录
mapping:表示对该资源的请求
但是,在搭建SSM环境时,配置了各种xml文件,我的静态资源文件还是访问不了。
在不断试错中,终于找到了。
classpath和classpath*区别:
classpath:只会到你的class路径中查找找文件。
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
一开始,去掉*的时候,项目启动不了,然后我就关闭项目,双击clean:clean,然后再启动Tomcat,还是不行,然后点击Rebuild Project后再启动Tomcat就可以了。
14.自动生成的mapper没有selectByPrimaryKey
使用反向生成插件时,发现自动生成的mapper没有selectByPrimaryKey。
我一开始使用的是mysql-connector-java-8.0.12.jar,发现mapper没有selectByPrimaryKey方法。
然后我把数据库驱动换成mysql-connector-java-5.1.40.jar,竟然有selectByPrimaryKey方法诶。
15.从页面获取日期数据,避免NULL转换为Date类型出问题
如果实体类中的日期类型需要从页面获取数据,避免NULL转换为Date类型出问题。
有两种解决方法。
方法一:实体类的日期类型属性上添加注解@DateTimeFormat(pattern = “yyyy-MM-dd”)
方法二:在Controller里使用注解@InitBinder
16.反向生成的Example类的方法
17.日期格式化
该时间是从1970年1月1日到此时时间的毫秒值。
@JsonFormat(pattern = “yyyy-MM-dd”,timezone = “GMT+8”)
格式化时间,设置时区
@DateTimeFormat(pattern = “yyyy-MM-dd”)
将前端传来的值进行格式化
18.springboot—Tomcat端口号修改
Tomcat默认端口号为8080
由于我的8080端口号已被占用了,访问不了,不得不更改端口号。
server.port=8888
成功了!
顺便附上pom.xml文件和HelloController代码,springboot真的太方便了,不用配置那么多的xml文件与jar包依赖!
19.System.out::println
发现一个有意思的代码 System.out::println
三种方法输出结果一样。
20.动态查询
发现tk mybatis和mybatis plus不能实现动态查询,一些特定需求的查询需要编写映射文件。
UserDao.xml:
UserDao.java:
UserService.java:
UserController.java:
list.html:
可对姓名模糊查询、可对邮箱模糊查询、可对姓名和邮箱一块模糊查询、不输入时查询全部。
21.java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.()
22.使用postman测试增加数据时数据为null
但是时间问题不会解决,干脆不传值给它,所以上面的图片里时间是null。
23.springboot访问HTML
24.layui表格使用报错
由于我使用的框架是springboot,所以也用到了thymeleaf,注意静态资源的路径。
之后我把表头那里修改了下,诶可以了。
它提示说返回的数据不符合规范,正确的成功状态码应为:“code”:0
因为layui默认的数据格式是这样的:
然后我的数据是这样的:
就修改了下代码
然后浏览器上就可以看到数据了。
只不过点击页码没有反应,它的分页功能不生效。
25.layui分页功能
但是我的分页数据是这样的,
所以需要对页码和每页数据量的名称做更改,
搞定!
26.使用layui的select数据回显问题
看着一点问题都没有啊。
可是为什么没有回显到页面呢?然后点开下拉菜单,发现
然后增加了两段代码,
可能是使用了layui的问题吧。
如果不是使用layui,是不需要加那两段代码的。
或者直接加layui.form.render();这一段代码来重新渲染表单也可。
27.layui自带的表格 ajax异步 查询 展示数据
注意:上方的代码select那里还有一点瑕疵,就是如果查询项全部都为空的话,则查出无数据,因为它传的typeId = -1,而后台并没有匹配的typeId,所以这时只需要将代码改为<option value="">请选择类型</option>的话,就可以查出全部数据了。
28.导入镜像的网络配置问题
1.打开,选择镜像,然后输入账号密码
2.进入配置
cd /etc/sysconfig/network-scripts #进入网络配置
vi ifcfg-ens33 # 进入改配置
service network restart #重启网络
3.配置虚拟网络编辑器
然后这时就可以ping通本机了,ping www.baidu.com也可以了。
4.连接数据库
发现出现这样的错误
然后我进入数据库
首先这里的账号密码都是root
mysql> grant all privileges on *.* to root@'localhost' identified by '设好的密码';
mysql> flush privileges;
这里的密码随便可以设,但是用Navicat 连接数据库的时候,密码也得是这里设好的密码。
注意:密码就此更改了。
进入数据库:mysql -uroot -p123
点击编辑,密码重新修改为123,就连接成功了。
完毕!
29、springboot request.getServletContext().getRealPath 上传文件 获取到临时路径
仅在工程目录下,新建public文件夹,就可以了。
30、-bash: python: command not found
执行ln -s /usr/bin/python3.6 /usr/bin/python即可。
31、vue ui
解决:
C:\Users\Administrator路径下的.vuerc文件修改